Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: With( With { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 14, column: 6, }, end: Position { line: 14, column: 9, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nodeCfg", span: Span { start: Position { line: 17, column: 3, }, end: Position { line: 17, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 17, column: 13, }, end: Position { line: 17, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 17, column: 20, }, end: Position { line: 17, column: 28, }, }, }, ), Raw( PartRaw { content: "munin-node", span: Span { start: Position { line: 17, column: 29, }, end: Position { line: 17, column: 39, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cronCfg", span: Span { start: Position { line: 18, column: 3, }, end: Position { line: 18, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 18, column: 13, }, end: Position { line: 18, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 18, column: 20, }, end: Position { line: 18, column: 28, }, }, }, ), Raw( PartRaw { content: "munin-cron", span: Span { start: Position { line: 18, column: 29, }, end: Position { line: 18, column: 39, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "muninConf", span: Span { start: Position { line: 20, column: 3, }, end: Position { line: 20, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 20, column: 15, }, end: Position { line: 20, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 20, column: 20, }, end: Position { line: 20, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin.conf", span: Span { start: Position { line: 20, column: 31, }, end: Position { line: 20, column: 41, }, }, }, ), ], span: Span { start: Position { line: 20, column: 30, }, end: Position { line: 20, column: 42, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "dbdir /var/lib/munin\nhtmldir /var/www/munin\nlogdir /var/log/munin\nrundir /run/munin\n\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 27, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 27, column: 9, }, end: Position { line: 27, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 27, column: 13, }, end: Position { line: 27, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 27, column: 29, }, end: Position { line: 27, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraCSS", span: Span { start: Position { line: 27, column: 37, }, end: Position { line: 27, column: 45, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 27, column: 49, }, end: Position { line: 27, column: 51, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "staticdir ", span: Span { start: Position { line: 27, column: 54, }, end: Position { line: 27, column: 82, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "customStaticDir", span: Span { start: Position { line: 27, column: 66, }, end: Position { line: 27, column: 81, }, }, }, ), }, ), ], span: Span { start: Position { line: 27, column: 53, }, end: Position { line: 27, column: 83, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 29, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 29, column: 9, }, end: Position { line: 29, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraGlobalConfig", span: Span { start: Position { line: 29, column: 17, }, end: Position { line: 29, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 31, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 31, column: 9, }, end: Position { line: 31, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "hosts", span: Span { start: Position { line: 31, column: 17, }, end: Position { line: 31, column: 22, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 22, column: 1, }, end: Position { line: 32, column: 5, }, }, }, ), ], span: Span { start: Position { line: 21, column: 5, }, end: Position { line: 32, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nodeConf", span: Span { start: Position { line: 34, column: 3, }, end: Position { line: 34, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 34, column: 14, }, end: Position { line: 34, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 34, column: 19, }, end: Position { line: 34, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin-node.conf", span: Span { start: Position { line: 34, column: 30, }, end: Position { line: 34, column: 45, }, }, }, ), ], span: Span { start: Position { line: 34, column: 29, }, end: Position { line: 34, column: 46, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "log_level 3\nlog_file Sys::Syslog\nport 4949\nhost *\nbackground 0\nuser root\ngroup root\nhost_name ", span: Span { start: Position { line: 36, column: 1, }, end: Position { line: 43, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 43, column: 19, }, end: Position { line: 43, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "networking", span: Span { start: Position { line: 43, column: 26, }, end: Position { line: 43, column: 36, }, }, }, ), Raw( PartRaw { content: "hostName", span: Span { start: Position { line: 43, column: 37, }, end: Position { line: 43, column: 45, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nsetsid 0\n\n# wrapped plugins by makeWrapper being with dots\nignore_file ^\\.\n\nallow ^::1$\nallow ^127\\.0\\.0\\.1$\n\n", span: Span { start: Position { line: 36, column: 1, }, end: Position { line: 52, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 52, column: 9, }, end: Position { line: 52, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 52, column: 17, }, end: Position { line: 52, column: 28, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 36, column: 1, }, end: Position { line: 53, column: 5, }, }, }, ), ], span: Span { start: Position { line: 35, column: 5, }, end: Position { line: 53, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pluginConf", span: Span { start: Position { line: 55, column: 3, }, end: Position { line: 55, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 55, column: 16, }, end: Position { line: 55, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 55, column: 21, }, end: Position { line: 55, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin-plugin-conf", span: Span { start: Position { line: 55, column: 32, }, end: Position { line: 55, column: 49, }, }, }, ), ], span: Span { start: Position { line: 55, column: 31, }, end: Position { line: 55, column: 50, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "[hddtemp_smartctl]\nuser root\ngroup root\n\n[meminfo]\nuser root\ngroup root\n\n[ipmi*]\nuser root\ngroup root\n\n[munin*]\nenv.UPDATE_STATSFILE /var/lib/munin/munin-update.stats\n\n", span: Span { start: Position { line: 57, column: 1, }, end: Position { line: 72, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 72, column: 9, }, end: Position { line: 72, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraPluginConfig", span: Span { start: Position { line: 72, column: 17, }, end: Position { line: 72, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 57, column: 1, }, end: Position { line: 73, column: 5, }, }, }, ), ], span: Span { start: Position { line: 56, column: 5, }, end: Position { line: 73, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "pluginConfDir", span: Span { start: Position { line: 75, column: 3, }, end: Position { line: 75, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 75, column: 19, }, end: Position { line: 75, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 75, column: 24, }, end: Position { line: 75, column: 30, }, }, }, ), Raw( PartRaw { content: "mkDerivation", span: Span { start: Position { line: 75, column: 31, }, end: Position { line: 75, column: 43, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 76, column: 5, }, end: Position { line: 76, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "munin-plugin-conf.d", span: Span { start: Position { line: 76, column: 13, }, end: Position { line: 76, column: 32, }, }, }, ), ], span: Span { start: Position { line: 76, column: 12, }, end: Position { line: 76, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "buildCommand", span: Span { start: Position { line: 77, column: 5, }, end: Position { line: 77, column: 17, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir $out\nln -s ", span: Span { start: Position { line: 78, column: 1, }, end: Position { line: 79, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "pluginConf", span: Span { start: Position { line: 79, column: 15, }, end: Position { line: 79, column: 25, }, }, }, ), }, ), Raw( PartRaw { content: " $out/nixos-config\n", span: Span { start: Position { line: 78, column: 1, }, end: Position { line: 80, column: 5, }, }, }, ), ], span: Span { start: Position { line: 77, column: 20, }, end: Position { line: 80, column: 7, }, }, }, ), }, ), ], span: Span { start: Position { line: 75, column: 44, }, end: Position { line: 81, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "internOnePlugin", span: Span { start: Position { line: 86, column: 3, }, end: Position { line: 86, column: 18, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "path", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "cp -a '", span: Span { start: Position { line: 87, column: 6, }, end: Position { line: 87, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "path", span: Span { start: Position { line: 87, column: 15, }, end: Position { line: 87, column: 19, }, }, }, ), }, ), Raw( PartRaw { content: "' '", span: Span { start: Position { line: 87, column: 6, }, end: Position { line: 87, column: 23, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "name", span: Span { start: Position { line: 87, column: 25, }, end: Position { line: 87, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 87, column: 6, }, end: Position { line: 87, column: 31, }, }, }, ), ], span: Span { start: Position { line: 87, column: 5, }, end: Position { line: 87, column: 32, }, }, }, ), span: Span { start: Position { line: 86, column: 27, }, end: Position { line: 87, column: 32, }, }, }, ), span: Span { start: Position { line: 86, column: 21, }, end: Position { line: 87, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "internManyPlugins", span: Span { start: Position { line: 93, column: 3, }, end: Position { line: 93, column: 20, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "path", }, ), body: String( String_ { parts: [ Raw( PartRaw { content: "find '", span: Span { start: Position { line: 94, column: 6, }, end: Position { line: 94, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "path", span: Span { start: Position { line: 94, column: 14, }, end: Position { line: 94, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: "' -type f -perm /a+x -exec cp -a -t . '{}' '+'", span: Span { start: Position { line: 94, column: 6, }, end: Position { line: 94, column: 65, }, }, }, ), ], span: Span { start: Position { line: 94, column: 5, }, end: Position { line: 94, column: 66, }, }, }, ), span: Span { start: Position { line: 93, column: 29, }, end: Position { line: 94, column: 66, }, }, }, ), span: Span { start: Position { line: 93, column: 23, }, end: Position { line: 94, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "internAndFixPlugins", span: Span { start: Position { line: 98, column: 3, }, end: Position { line: 98, column: 22, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "name", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "intern-fn", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "paths", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 99, column: 5, }, end: Position { line: 99, column: 9, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runCommand", span: Span { start: Position { line: 99, column: 10, }, end: Position { line: 99, column: 20, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "name", span: Span { start: Position { line: 99, column: 21, }, end: Position { line: 99, column: 25, }, }, }, ), Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 99, column: 26, }, end: Position { line: 99, column: 28, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p \"$out\"\ncd \"$out\"\n", span: Span { start: Position { line: 100, column: 1, }, end: Position { line: 102, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 102, column: 9, }, end: Position { line: 102, column: 12, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 102, column: 13, }, end: Position { line: 102, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 102, column: 31, }, end: Position { line: 102, column: 33, }, }, }, ), ], span: Span { start: Position { line: 102, column: 30, }, end: Position { line: 102, column: 34, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 103, column: 12, }, end: Position { line: 103, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrsets", span: Span { start: Position { line: 103, column: 16, }, end: Position { line: 103, column: 24, }, }, }, ), Raw( PartRaw { content: "mapAttrsToList", span: Span { start: Position { line: 103, column: 25, }, end: Position { line: 103, column: 39, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "intern-fn", span: Span { start: Position { line: 103, column: 40, }, end: Position { line: 103, column: 49, }, }, }, ), Identifier( Identifier { id: "paths", span: Span { start: Position { line: 103, column: 50, }, end: Position { line: 103, column: 55, }, }, }, ), ], }, ), ], }, ), }, ), Raw( PartRaw { content: "\nchmod -R u+w .\nfind . -type f -exec sed -E -i '\n s,(/usr)?/s?bin/,/run/current-system/sw/bin/,g\n' '{}' '+'\n", span: Span { start: Position { line: 100, column: 1, }, end: Position { line: 108, column: 5, }, }, }, ), ], span: Span { start: Position { line: 99, column: 29, }, end: Position { line: 108, column: 7, }, }, }, ), ], }, ), span: Span { start: Position { line: 98, column: 42, }, end: Position { line: 108, column: 7, }, }, }, ), span: Span { start: Position { line: 98, column: 31, }, end: Position { line: 108, column: 7, }, }, }, ), span: Span { start: Position { line: 98, column: 25, }, end: Position { line: 108, column: 7, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPluginDir", span: Span { start: Position { line: 113, column: 3, }, end: Position { line: 113, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "internAndFixPlugins", span: Span { start: Position { line: 113, column: 20, }, end: Position { line: 113, column: 39, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin-extra-plugins.d", span: Span { start: Position { line: 113, column: 41, }, end: Position { line: 113, column: 62, }, }, }, ), ], span: Span { start: Position { line: 113, column: 40, }, end: Position { line: 113, column: 63, }, }, }, ), Identifier( Identifier { id: "internOnePlugin", span: Span { start: Position { line: 114, column: 5, }, end: Position { line: 114, column: 20, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 114, column: 21, }, end: Position { line: 114, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraPlugins", span: Span { start: Position { line: 114, column: 29, }, end: Position { line: 114, column: 41, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraAutoPluginDir", span: Span { start: Position { line: 116, column: 3, }, end: Position { line: 116, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "internAndFixPlugins", span: Span { start: Position { line: 116, column: 24, }, end: Position { line: 116, column: 43, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin-extra-auto-plugins.d", span: Span { start: Position { line: 116, column: 45, }, end: Position { line: 116, column: 71, }, }, }, ), ], span: Span { start: Position { line: 116, column: 44, }, end: Position { line: 116, column: 72, }, }, }, ), Identifier( Identifier { id: "internManyPlugins", span: Span { start: Position { line: 117, column: 5, }, end: Position { line: 117, column: 22, }, }, }, ), FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 118, column: 6, }, end: Position { line: 118, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listToAttrs", span: Span { start: Position { line: 118, column: 15, }, end: Position { line: 118, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 119, column: 8, }, end: Position { line: 119, column: 11, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "path", }, ), body: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 120, column: 18, }, end: Position { line: 120, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "baseNameOf", span: Span { start: Position { line: 120, column: 25, }, end: Position { line: 120, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 120, column: 36, }, end: Position { line: 120, column: 40, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "value", span: Span { start: Position { line: 120, column: 42, }, end: Position { line: 120, column: 47, }, }, }, ), ], to: Identifier( Identifier { id: "path", span: Span { start: Position { line: 120, column: 50, }, end: Position { line: 120, column: 54, }, }, }, ), }, ), ], span: Span { start: Position { line: 120, column: 16, }, end: Position { line: 120, column: 57, }, }, }, ), span: Span { start: Position { line: 120, column: 10, }, end: Position { line: 120, column: 57, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 121, column: 9, }, end: Position { line: 121, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraAutoPlugins", span: Span { start: Position { line: 121, column: 17, }, end: Position { line: 121, column: 33, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "customStaticDir", span: Span { start: Position { line: 123, column: 3, }, end: Position { line: 123, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 123, column: 21, }, end: Position { line: 123, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runCommand", span: Span { start: Position { line: 123, column: 26, }, end: Position { line: 123, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "munin-custom-static-data", span: Span { start: Position { line: 123, column: 38, }, end: Position { line: 123, column: 62, }, }, }, ), ], span: Span { start: Position { line: 123, column: 37, }, end: Position { line: 123, column: 63, }, }, }, ), Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 123, column: 64, }, end: Position { line: 123, column: 66, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "cp -a \"", span: Span { start: Position { line: 124, column: 1, }, end: Position { line: 124, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 124, column: 14, }, end: Position { line: 124, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 124, column: 19, }, end: Position { line: 124, column: 24, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/etc/opt/munin/static\" \"$out\"\ncd \"$out\"\nchmod -R u+w .\necho \"", span: Span { start: Position { line: 124, column: 1, }, end: Position { line: 127, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 127, column: 13, }, end: Position { line: 127, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraCSS", span: Span { start: Position { line: 127, column: 21, }, end: Position { line: 127, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" >> style.css\necho \"", span: Span { start: Position { line: 124, column: 1, }, end: Position { line: 128, column: 11, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 128, column: 13, }, end: Position { line: 128, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraCSS", span: Span { start: Position { line: 128, column: 21, }, end: Position { line: 128, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\" >> style-new.css\n", span: Span { start: Position { line: 124, column: 1, }, end: Position { line: 129, column: 3, }, }, }, ), ], span: Span { start: Position { line: 123, column: 67, }, end: Position { line: 129, column: 5, }, }, }, ), ], }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 134, column: 3, }, end: Position { line: 134, column: 10, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 136, column: 5, }, end: Position { line: 136, column: 13, }, }, }, ), Raw( PartRaw { content: "munin-node", span: Span { start: Position { line: 136, column: 14, }, end: Position { line: 136, column: 24, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 138, column: 7, }, end: Position { line: 138, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 138, column: 16, }, end: Position { line: 138, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 139, column: 9, }, end: Position { line: 139, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 139, column: 19, }, end: Position { line: 139, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 140, column: 9, }, end: Position { line: 140, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 140, column: 16, }, end: Position { line: 140, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 140, column: 22, }, end: Position { line: 140, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 141, column: 9, }, end: Position { line: 141, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 141, column: 23, }, end: Position { line: 141, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 141, column: 27, }, end: Position { line: 141, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Enable Munin Node agent. Munin node listens on 0.0.0.0 and\nby default accepts connections only from 127.0.0.1 for security reasons.\n\nSee .\n", span: Span { start: Position { line: 142, column: 1, }, end: Position { line: 146, column: 9, }, }, }, ), ], span: Span { start: Position { line: 141, column: 33, }, end: Position { line: 146, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 138, column: 25, }, end: Position { line: 147, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 149, column: 7, }, end: Position { line: 149, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 149, column: 21, }, end: Position { line: 149, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 150, column: 9, }, end: Position { line: 150, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 150, column: 19, }, end: Position { line: 150, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 151, column: 9, }, end: Position { line: 151, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 151, column: 16, }, end: Position { line: 151, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 151, column: 22, }, end: Position { line: 151, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 152, column: 9, }, end: Position { line: 152, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 152, column: 23, }, end: Position { line: 152, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 152, column: 27, }, end: Position { line: 152, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{file}`munin-node.conf` extra configuration. See\n\n", span: Span { start: Position { line: 153, column: 1, }, end: Position { line: 155, column: 9, }, }, }, ), ], span: Span { start: Position { line: 152, column: 33, }, end: Position { line: 155, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 149, column: 30, }, end: Position { line: 156, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPluginConfig", span: Span { start: Position { line: 158, column: 7, }, end: Position { line: 158, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 158, column: 27, }, end: Position { line: 158, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 159, column: 9, }, end: Position { line: 159, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 159, column: 19, }, end: Position { line: 159, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 160, column: 9, }, end: Position { line: 160, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 160, column: 16, }, end: Position { line: 160, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 160, column: 22, }, end: Position { line: 160, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 161, column: 9, }, end: Position { line: 161, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 161, column: 23, }, end: Position { line: 161, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 161, column: 27, }, end: Position { line: 161, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{file}`plugin-conf.d` extra plugin configuration. See\n\n", span: Span { start: Position { line: 162, column: 1, }, end: Position { line: 164, column: 9, }, }, }, ), ], span: Span { start: Position { line: 161, column: 33, }, end: Position { line: 164, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 165, column: 9, }, end: Position { line: 165, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "[fail2ban_*]\nuser root\n", span: Span { start: Position { line: 166, column: 1, }, end: Position { line: 168, column: 9, }, }, }, ), ], span: Span { start: Position { line: 165, column: 19, }, end: Position { line: 168, column: 11, }, }, }, ), }, ), ], span: Span { start: Position { line: 158, column: 36, }, end: Position { line: 169, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraPlugins", span: Span { start: Position { line: 171, column: 7, }, end: Position { line: 171, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 171, column: 22, }, end: Position { line: 171, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 172, column: 9, }, end: Position { line: 172, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 172, column: 19, }, end: Position { line: 172, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 173, column: 9, }, end: Position { line: 173, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 173, column: 21, }, end: Position { line: 173, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "attrsOf", span: Span { start: Position { line: 173, column: 28, }, end: Position { line: 173, column: 35, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 173, column: 36, }, end: Position { line: 173, column: 40, }, }, }, ), ], }, ), span: Span { start: Position { line: 173, column: 16, }, end: Position { line: 173, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 174, column: 9, }, end: Position { line: 174, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 174, column: 23, }, end: Position { line: 174, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 174, column: 27, }, end: Position { line: 174, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional Munin plugins to activate. Keys are the name of the plugin\nsymlink, values are the path to the underlying plugin script. You\ncan use the same plugin script multiple times (e.g. for wildcard\nplugins).\n\nNote that these plugins do not participate in autoconfiguration. If\nyou want to autoconfigure additional plugins, use\n{option}`services.munin-node.extraAutoPlugins`.\n\nPlugins enabled in this manner take precedence over autoconfigured\nplugins.\n\nPlugins will be copied into the Nix store, and it will attempt to\nmodify them to run properly by fixing hardcoded references to\n`/bin`, `/usr/bin`,\n`/sbin`, and `/usr/sbin`.\n", span: Span { start: Position { line: 175, column: 1, }, end: Position { line: 191, column: 9, }, }, }, ), ], span: Span { start: Position { line: 174, column: 33, }, end: Position { line: 191, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 192, column: 9, }, end: Position { line: 192, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 192, column: 19, }, end: Position { line: 192, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{\n zfs_usage_bigpool = /src/munin-contrib/plugins/zfs/zfs_usage_;\n zfs_usage_smallpool = /src/munin-contrib/plugins/zfs/zfs_usage_;\n zfs_list = /src/munin-contrib/plugins/zfs/zfs_list;\n};\n", span: Span { start: Position { line: 193, column: 1, }, end: Position { line: 198, column: 9, }, }, }, ), ], span: Span { start: Position { line: 192, column: 37, }, end: Position { line: 198, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 171, column: 31, }, end: Position { line: 199, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraAutoPlugins", span: Span { start: Position { line: 201, column: 7, }, end: Position { line: 201, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 201, column: 26, }, end: Position { line: 201, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 202, column: 9, }, end: Position { line: 202, column: 16, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 202, column: 19, }, end: Position { line: 202, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 203, column: 9, }, end: Position { line: 203, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 203, column: 21, }, end: Position { line: 203, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 203, column: 28, }, end: Position { line: 203, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "path", span: Span { start: Position { line: 203, column: 35, }, end: Position { line: 203, column: 39, }, }, }, ), ], }, ), span: Span { start: Position { line: 203, column: 16, }, end: Position { line: 203, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 204, column: 9, }, end: Position { line: 204, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 204, column: 23, }, end: Position { line: 204, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 204, column: 27, }, end: Position { line: 204, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Additional Munin plugins to autoconfigure, using\n`munin-node-configure --suggest`. These should be\nthe actual paths to the plugin files (or directories containing them),\nnot just their names.\n\nIf you want to manually enable individual plugins instead, use\n{option}`services.munin-node.extraPlugins`.\n\nNote that only plugins that have the 'autoconfig' capability will do\nanything if listed here, since plugins that cannot autoconfigure\nwon't be automatically enabled by\n`munin-node-configure`.\n\nPlugins will be copied into the Nix store, and it will attempt to\nmodify them to run properly by fixing hardcoded references to\n`/bin`, `/usr/bin`,\n`/sbin`, and `/usr/sbin`.\n", span: Span { start: Position { line: 205, column: 1, }, end: Position { line: 222, column: 9, }, }, }, ), ], span: Span { start: Position { line: 204, column: 33, }, end: Position { line: 222, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 223, column: 9, }, end: Position { line: 223, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 223, column: 19, }, end: Position { line: 223, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "[\n /src/munin-contrib/plugins/zfs\n /src/munin-contrib/plugins/ssh\n];\n", span: Span { start: Position { line: 224, column: 1, }, end: Position { line: 228, column: 9, }, }, }, ), ], span: Span { start: Position { line: 223, column: 37, }, end: Position { line: 228, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 201, column: 35, }, end: Position { line: 229, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "disabledPlugins", span: Span { start: Position { line: 231, column: 7, }, end: Position { line: 231, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 231, column: 25, }, end: Position { line: 231, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 235, column: 9, }, end: Position { line: 235, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "munin_stats", span: Span { start: Position { line: 235, column: 22, }, end: Position { line: 235, column: 33, }, }, }, ), ], span: Span { start: Position { line: 235, column: 21, }, end: Position { line: 235, column: 34, }, }, }, ), ], span: Span { start: Position { line: 235, column: 19, }, end: Position { line: 235, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 236, column: 9, }, end: Position { line: 236, column: 13, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 236, column: 21, }, end: Position { line: 236, column: 26, }, }, }, ), target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "listOf", span: Span { start: Position { line: 236, column: 28, }, end: Position { line: 236, column: 34, }, }, }, ), arguments: [ Identifier( Identifier { id: "str", span: Span { start: Position { line: 236, column: 35, }, end: Position { line: 236, column: 38, }, }, }, ), ], }, ), span: Span { start: Position { line: 236, column: 16, }, end: Position { line: 236, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 237, column: 9, }, end: Position { line: 237, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 237, column: 23, }, end: Position { line: 237, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 237, column: 27, }, end: Position { line: 237, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Munin plugins to disable, even if\n`munin-node-configure --suggest` tries to enable\nthem. To disable a wildcard plugin, use an actual wildcard, as in\nthe example.\n\nmunin_stats is disabled by default as it tries to read\n`/var/log/munin/munin-update.log` for timing\ninformation, and the NixOS build of Munin does not write this file.\n", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 246, column: 9, }, }, }, ), ], span: Span { start: Position { line: 237, column: 33, }, end: Position { line: 246, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 247, column: 9, }, end: Position { line: 247, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "diskstats", span: Span { start: Position { line: 247, column: 22, }, end: Position { line: 247, column: 31, }, }, }, ), ], span: Span { start: Position { line: 247, column: 21, }, end: Position { line: 247, column: 32, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "zfs_usage_*", span: Span { start: Position { line: 247, column: 34, }, end: Position { line: 247, column: 45, }, }, }, ), ], span: Span { start: Position { line: 247, column: 33, }, end: Position { line: 247, column: 46, }, }, }, ), ], span: Span { start: Position { line: 247, column: 19, }, end: Position { line: 247, column: 48, }, }, }, ), }, ), ], span: Span { start: Position { line: 231, column: 34, }, end: Position { line: 248, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 136, column: 27, }, end: Position { line: 249, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 251, column: 5, }, end: Position { line: 251, column: 13, }, }, }, ), Raw( PartRaw { content: "munin-cron", span: Span { start: Position { line: 251, column: 14, }, end: Position { line: 251, column: 24, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 253, column: 7, }, end: Position { line: 253, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 253, column: 16, }, end: Position { line: 253, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 254, column: 9, }, end: Position { line: 254, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 254, column: 19, }, end: Position { line: 254, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 255, column: 9, }, end: Position { line: 255, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 255, column: 16, }, end: Position { line: 255, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 255, column: 22, }, end: Position { line: 255, column: 26, }, }, }, ), ], default: None, }, ), }, ), 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: "Enable munin-cron. Takes care of all heavy lifting to collect data from\nnodes and draws graphs to html. Runs munin-update, munin-limits,\nmunin-graphs and munin-html in that order.\n\nHTML output is in {file}`/var/www/munin/`, configure your\nfavourite webserver to serve static files.\n", span: Span { start: Position { line: 257, column: 1, }, end: Position { line: 263, column: 9, }, }, }, ), ], span: Span { start: Position { line: 256, column: 33, }, end: Position { line: 263, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 253, column: 25, }, end: Position { line: 264, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraGlobalConfig", span: Span { start: Position { line: 266, column: 7, }, end: Position { line: 266, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 266, column: 27, }, end: Position { line: 266, column: 35, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 267, column: 9, }, end: Position { line: 267, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 267, column: 19, }, end: Position { line: 267, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 268, column: 9, }, end: Position { line: 268, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 268, column: 16, }, end: Position { line: 268, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 268, column: 22, }, end: Position { line: 268, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 269, column: 9, }, end: Position { line: 269, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 269, column: 23, }, end: Position { line: 269, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 269, column: 27, }, end: Position { line: 269, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "{file}`munin.conf` extra global configuration.\nSee .\nUseful to setup notifications, see\n\n", span: Span { start: Position { line: 270, column: 1, }, end: Position { line: 274, column: 9, }, }, }, ), ], span: Span { start: Position { line: 269, column: 33, }, end: Position { line: 274, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 275, column: 9, }, end: Position { line: 275, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "contact.email.command mail -s \"Munin notification for ", span: Span { start: Position { line: 276, column: 1, }, end: Position { line: 276, column: 65, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 276, column: 1, }, end: Position { line: 276, column: 68, }, }, }, ), Raw( PartRaw { content: "{var:host}\" someone@example.com\n", span: Span { start: Position { line: 276, column: 1, }, end: Position { line: 277, column: 9, }, }, }, ), ], span: Span { start: Position { line: 275, column: 19, }, end: Position { line: 277, column: 11, }, }, }, ), }, ), ], span: Span { start: Position { line: 266, column: 36, }, end: Position { line: 278, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hosts", span: Span { start: Position { line: 280, column: 7, }, end: Position { line: 280, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 280, column: 15, }, end: Position { line: 280, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 281, column: 9, }, end: Position { line: 281, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 281, column: 19, }, end: Position { line: 281, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 282, column: 9, }, end: Position { line: 282, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 282, column: 16, }, end: Position { line: 282, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 282, column: 22, }, end: Position { line: 282, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 283, column: 9, }, end: Position { line: 283, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 283, column: 23, }, end: Position { line: 283, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 283, column: 27, }, end: Position { line: 283, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Definitions of hosts of nodes to collect data from. Needs at least one\nhost for cron to succeed. See\n\n", span: Span { start: Position { line: 284, column: 1, }, end: Position { line: 287, column: 9, }, }, }, ), ], span: Span { start: Position { line: 283, column: 33, }, end: Position { line: 287, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 288, column: 9, }, end: Position { line: 288, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 288, column: 19, }, end: Position { line: 288, column: 36, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 289, column: 11, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 289, column: 14, }, }, }, ), Raw( PartRaw { content: "\n [", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 290, column: 14, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 290, column: 17, }, }, }, ), Raw( PartRaw { content: "{config.networking.hostName}]\n address localhost\n", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 292, column: 11, }, }, }, ), Raw( PartRaw { content: "''", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 292, column: 14, }, }, }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 289, column: 1, }, end: Position { line: 293, column: 9, }, }, }, ), ], span: Span { start: Position { line: 288, column: 37, }, end: Position { line: 293, column: 11, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 280, column: 24, }, end: Position { line: 294, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraCSS", span: Span { start: Position { line: 296, column: 7, }, end: Position { line: 296, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 296, column: 18, }, end: Position { line: 296, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 297, column: 9, }, end: Position { line: 297, column: 16, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 297, column: 19, }, end: Position { line: 297, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 298, column: 9, }, end: Position { line: 298, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 298, column: 16, }, end: Position { line: 298, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 298, column: 22, }, end: Position { line: 298, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 299, column: 9, }, end: Position { line: 299, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 299, column: 23, }, end: Position { line: 299, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 299, column: 27, }, end: Position { line: 299, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Custom styling for the HTML that munin-cron generates. This will be\nappended to the CSS files used by munin-cron and will thus take\nprecedence over the builtin styles.\n", span: Span { start: Position { line: 300, column: 1, }, end: Position { line: 303, column: 9, }, }, }, ), ], span: Span { start: Position { line: 299, column: 33, }, end: Position { line: 303, column: 11, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 304, column: 9, }, end: Position { line: 304, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "/* A simple dark theme. */\nhtml, body { background: #222222; }\n#header, #footer { background: #333333; }\nimg.i, img.iwarn, img.icrit, img.iunkn {\n filter: invert(100%) hue-rotate(-30deg);\n}\n", span: Span { start: Position { line: 305, column: 1, }, end: Position { line: 311, column: 9, }, }, }, ), ], span: Span { start: Position { line: 304, column: 19, }, end: Position { line: 311, column: 11, }, }, }, ), }, ), ], span: Span { start: Position { line: 296, column: 27, }, end: Position { line: 312, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 251, column: 27, }, end: Position { line: 314, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 134, column: 13, }, end: Position { line: 316, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 318, column: 3, }, end: Position { line: 318, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkMerge", span: Span { start: Position { line: 318, column: 12, }, end: Position { line: 318, column: 19, }, }, }, ), arguments: [ List( List { elements: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 318, column: 23, }, end: Position { line: 318, column: 27, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 318, column: 29, }, end: Position { line: 318, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 318, column: 37, }, end: Position { line: 318, column: 43, }, }, }, ), ], default: None, }, ), operator: LogicalOr, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 318, column: 47, }, end: Position { line: 318, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 318, column: 55, }, end: Position { line: 318, column: 61, }, }, }, ), ], default: None, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 320, column: 5, }, end: Position { line: 320, column: 16, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 320, column: 17, }, end: Position { line: 320, column: 31, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 320, column: 36, }, end: Position { line: 320, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 320, column: 41, }, end: Position { line: 320, column: 46, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 320, column: 34, }, end: Position { line: 320, column: 48, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 322, column: 5, }, end: Position { line: 322, column: 10, }, }, }, ), Raw( PartRaw { content: "users", span: Span { start: Position { line: 322, column: 11, }, end: Position { line: 322, column: 16, }, }, }, ), Raw( PartRaw { content: "munin", span: Span { start: Position { line: 322, column: 17, }, end: Position { line: 322, column: 22, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 323, column: 7, }, end: Position { line: 323, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Munin monitoring user", span: Span { start: Position { line: 323, column: 22, }, end: Position { line: 323, column: 43, }, }, }, ), ], span: Span { start: Position { line: 323, column: 21, }, end: Position { line: 323, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 324, column: 7, }, end: Position { line: 324, column: 12, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 324, column: 16, }, end: Position { line: 324, column: 21, }, }, }, ), ], span: Span { start: Position { line: 324, column: 15, }, end: Position { line: 324, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uid", span: Span { start: Position { line: 325, column: 7, }, end: Position { line: 325, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 325, column: 13, }, end: Position { line: 325, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 325, column: 20, }, end: Position { line: 325, column: 23, }, }, }, ), Raw( PartRaw { content: "uids", span: Span { start: Position { line: 325, column: 24, }, end: Position { line: 325, column: 28, }, }, }, ), Raw( PartRaw { content: "munin", span: Span { start: Position { line: 325, column: 29, }, end: Position { line: 325, column: 34, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "home", span: Span { start: Position { line: 326, column: 7, }, end: Position { line: 326, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/munin", span: Span { start: Position { line: 326, column: 15, }, end: Position { line: 326, column: 29, }, }, }, ), ], span: Span { start: Position { line: 326, column: 14, }, end: Position { line: 326, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 322, column: 25, }, end: Position { line: 327, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 329, column: 5, }, end: Position { line: 329, column: 10, }, }, }, ), Raw( PartRaw { content: "groups", span: Span { start: Position { line: 329, column: 11, }, end: Position { line: 329, column: 17, }, }, }, ), Raw( PartRaw { content: "munin", span: Span { start: Position { line: 329, column: 18, }, end: Position { line: 329, column: 23, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "gid", span: Span { start: Position { line: 330, column: 7, }, end: Position { line: 330, column: 10, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 330, column: 13, }, end: Position { line: 330, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 330, column: 20, }, end: Position { line: 330, column: 23, }, }, }, ), Raw( PartRaw { content: "gids", span: Span { start: Position { line: 330, column: 24, }, end: Position { line: 330, column: 28, }, }, }, ), Raw( PartRaw { content: "munin", span: Span { start: Position { line: 330, column: 29, }, end: Position { line: 330, column: 34, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 329, column: 26, }, end: Position { line: 331, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 318, column: 64, }, end: Position { line: 333, column: 4, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 333, column: 7, }, end: Position { line: 333, column: 11, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 333, column: 12, }, end: Position { line: 333, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 333, column: 20, }, end: Position { line: 333, column: 26, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 335, column: 5, }, end: Position { line: 335, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 335, column: 13, }, end: Position { line: 335, column: 21, }, }, }, ), Raw( PartRaw { content: "munin-node", span: Span { start: Position { line: 335, column: 22, }, end: Position { line: 335, column: 32, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 336, column: 7, }, end: Position { line: 336, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Munin Node", span: Span { start: Position { line: 336, column: 22, }, end: Position { line: 336, column: 32, }, }, }, ), ], span: Span { start: Position { line: 336, column: 21, }, end: Position { line: 336, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 337, column: 7, }, end: Position { line: 337, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 337, column: 18, }, end: Position { line: 337, column: 32, }, }, }, ), ], span: Span { start: Position { line: 337, column: 17, }, end: Position { line: 337, column: 33, }, }, }, ), ], span: Span { start: Position { line: 337, column: 15, }, end: Position { line: 337, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 338, column: 7, }, end: Position { line: 338, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 338, column: 21, }, end: Position { line: 338, column: 38, }, }, }, ), ], span: Span { start: Position { line: 338, column: 20, }, end: Position { line: 338, column: 39, }, }, }, ), ], span: Span { start: Position { line: 338, column: 18, }, end: Position { line: 338, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 339, column: 7, }, end: Position { line: 339, column: 11, }, }, }, ), ], to: With( With { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 339, column: 19, }, end: Position { line: 339, column: 23, }, }, }, ), target: List( List { elements: [ Identifier( Identifier { id: "munin", span: Span { start: Position { line: 339, column: 27, }, end: Position { line: 339, column: 32, }, }, }, ), Identifier( Identifier { id: "smartmontools", span: Span { start: Position { line: 339, column: 33, }, end: Position { line: 339, column: 46, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "/run/current-system/sw", span: Span { start: Position { line: 339, column: 48, }, end: Position { line: 339, column: 70, }, }, }, ), ], span: Span { start: Position { line: 339, column: 47, }, end: Position { line: 339, column: 71, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "/run/wrappers", span: Span { start: Position { line: 339, column: 73, }, end: Position { line: 339, column: 86, }, }, }, ), ], span: Span { start: Position { line: 339, column: 72, }, end: Position { line: 339, column: 87, }, }, }, ), ], span: Span { start: Position { line: 339, column: 25, }, end: Position { line: 339, column: 89, }, }, }, ), span: Span { start: Position { line: 339, column: 14, }, end: Position { line: 339, column: 89, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 340, column: 7, }, end: Position { line: 340, column: 18, }, }, }, ), Raw( PartRaw { content: "MUNIN_LIBDIR", span: Span { start: Position { line: 340, column: 19, }, end: Position { line: 340, column: 31, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 340, column: 37, }, end: Position { line: 340, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 340, column: 42, }, end: Position { line: 340, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lib", span: Span { start: Position { line: 340, column: 35, }, end: Position { line: 340, column: 52, }, }, }, ), ], span: Span { start: Position { line: 340, column: 34, }, end: Position { line: 340, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 341, column: 7, }, end: Position { line: 341, column: 18, }, }, }, ), Raw( PartRaw { content: "MUNIN_PLUGSTATE", span: Span { start: Position { line: 341, column: 19, }, end: Position { line: 341, column: 34, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/run/munin", span: Span { start: Position { line: 341, column: 38, }, end: Position { line: 341, column: 48, }, }, }, ), ], span: Span { start: Position { line: 341, column: 37, }, end: Position { line: 341, column: 49, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 342, column: 7, }, end: Position { line: 342, column: 18, }, }, }, ), Raw( PartRaw { content: "MUNIN_LOGDIR", span: Span { start: Position { line: 342, column: 19, }, end: Position { line: 342, column: 31, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/log/munin", span: Span { start: Position { line: 342, column: 35, }, end: Position { line: 342, column: 49, }, }, }, ), ], span: Span { start: Position { line: 342, column: 34, }, end: Position { line: 342, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "preStart", span: Span { start: Position { line: 343, column: 7, }, end: Position { line: 343, column: 15, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "echo \"Updating munin plugins...\"\n\nmkdir -p /etc/munin/plugins\nrm -rf /etc/munin/plugins/*\n\n# Autoconfigure builtin plugins\n", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 350, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 350, column: 11, }, end: Position { line: 350, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 350, column: 16, }, end: Position { line: 350, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/munin-node-configure --suggest --shell --families contrib,auto,manual --config ", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 350, column: 106, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "nodeConf", span: Span { start: Position { line: 350, column: 108, }, end: Position { line: 350, column: 116, }, }, }, ), }, ), Raw( PartRaw { content: " --libdir=", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 350, column: 127, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 350, column: 129, }, end: Position { line: 350, column: 133, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 350, column: 134, }, end: Position { line: 350, column: 139, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lib/plugins --servicedir=/etc/munin/plugins --sconfdir=", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 350, column: 196, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "pluginConfDir", span: Span { start: Position { line: 350, column: 198, }, end: Position { line: 350, column: 211, }, }, }, ), }, ), Raw( PartRaw { content: " 2>/dev/null | ", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 350, column: 227, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 350, column: 229, }, end: Position { line: 350, column: 233, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bash", span: Span { start: Position { line: 350, column: 234, }, end: Position { line: 350, column: 238, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/bash\n\n# Autoconfigure extra plugins\n", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 353, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 353, column: 11, }, end: Position { line: 353, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 353, column: 16, }, end: Position { line: 353, column: 21, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/munin-node-configure --suggest --shell --families contrib,auto,manual --config ", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 353, column: 106, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "nodeConf", span: Span { start: Position { line: 353, column: 108, }, end: Position { line: 353, column: 116, }, }, }, ), }, ), Raw( PartRaw { content: " --libdir=", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 353, column: 127, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "extraAutoPluginDir", span: Span { start: Position { line: 353, column: 129, }, end: Position { line: 353, column: 147, }, }, }, ), }, ), Raw( PartRaw { content: " --servicedir=/etc/munin/plugins --sconfdir=", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 353, column: 192, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "pluginConfDir", span: Span { start: Position { line: 353, column: 194, }, end: Position { line: 353, column: 207, }, }, }, ), }, ), Raw( PartRaw { content: " 2>/dev/null | ", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 353, column: 223, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 353, column: 225, }, end: Position { line: 353, column: 229, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bash", span: Span { start: Position { line: 353, column: 230, }, end: Position { line: 353, column: 234, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/bash\n\n", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 355, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 355, column: 11, }, end: Position { line: 355, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 355, column: 15, }, end: Position { line: 355, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 355, column: 31, }, end: Position { line: 355, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraPlugins", span: Span { start: Position { line: 355, column: 39, }, end: Position { line: 355, column: 51, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 355, column: 55, }, end: Position { line: 355, column: 57, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Link in manually enabled plugins\nln -f -s -t /etc/munin/plugins ", span: Span { start: Position { line: 356, column: 1, }, end: Position { line: 357, column: 44, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "extraPluginDir", span: Span { start: Position { line: 357, column: 46, }, end: Position { line: 357, column: 60, }, }, }, ), }, ), Raw( PartRaw { content: "/*\n", span: Span { start: Position { line: 356, column: 1, }, end: Position { line: 358, column: 11, }, }, }, ), ], span: Span { start: Position { line: 355, column: 59, }, end: Position { line: 358, column: 13, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 360, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 360, column: 11, }, end: Position { line: 360, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 360, column: 15, }, end: Position { line: 360, column: 29, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 360, column: 31, }, end: Position { line: 360, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "disabledPlugins", span: Span { start: Position { line: 360, column: 39, }, end: Position { line: 360, column: 54, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 360, column: 58, }, end: Position { line: 360, column: 60, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Disable plugins\ncd /etc/munin/plugins\nrm -f ", span: Span { start: Position { line: 361, column: 1, }, end: Position { line: 363, column: 19, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 363, column: 21, }, end: Position { line: 363, column: 29, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "nodeCfg", span: Span { start: Position { line: 363, column: 30, }, end: Position { line: 363, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "disabledPlugins", span: Span { start: Position { line: 363, column: 38, }, end: Position { line: 363, column: 53, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 361, column: 1, }, end: Position { line: 364, column: 11, }, }, }, ), ], span: Span { start: Position { line: 360, column: 62, }, end: Position { line: 364, column: 13, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 344, column: 1, }, end: Position { line: 365, column: 7, }, }, }, ), ], span: Span { start: Position { line: 343, column: 18, }, end: Position { line: 365, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 366, column: 7, }, end: Position { line: 366, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 367, column: 9, }, end: Position { line: 367, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 367, column: 24, }, end: Position { line: 367, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 367, column: 29, }, end: Position { line: 367, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/sbin/munin-node --config ", span: Span { start: Position { line: 367, column: 22, }, end: Position { line: 367, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "nodeConf", span: Span { start: Position { line: 367, column: 63, }, end: Position { line: 367, column: 71, }, }, }, ), }, ), Raw( PartRaw { content: " --servicedir /etc/munin/plugins/ --sconfdir=", span: Span { start: Position { line: 367, column: 22, }, end: Position { line: 367, column: 117, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "pluginConfDir", span: Span { start: Position { line: 367, column: 119, }, end: Position { line: 367, column: 132, }, }, }, ), }, ), ], span: Span { start: Position { line: 367, column: 21, }, end: Position { line: 367, column: 134, }, }, }, ), }, ), ], span: Span { start: Position { line: 366, column: 23, }, end: Position { line: 368, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 335, column: 35, }, end: Position { line: 369, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 372, column: 5, }, end: Position { line: 372, column: 12, }, }, }, ), Raw( PartRaw { content: "tmpfiles", span: Span { start: Position { line: 372, column: 13, }, end: Position { line: 372, column: 21, }, }, }, ), Raw( PartRaw { content: "rules", span: Span { start: Position { line: 372, column: 22, }, end: Position { line: 372, column: 27, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "d /run/munin 0755 munin munin -", span: Span { start: Position { line: 372, column: 33, }, end: Position { line: 372, column: 64, }, }, }, ), ], span: Span { start: Position { line: 372, column: 32, }, end: Position { line: 372, column: 65, }, }, }, ), ], span: Span { start: Position { line: 372, column: 30, }, end: Position { line: 372, column: 67, }, }, }, ), }, ), ], span: Span { start: Position { line: 333, column: 27, }, end: Position { line: 374, column: 4, }, }, }, ), ], }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 374, column: 7, }, end: Position { line: 374, column: 11, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cronCfg", span: Span { start: Position { line: 374, column: 12, }, end: Position { line: 374, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 374, column: 20, }, end: Position { line: 374, column: 26, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fonts", span: Span { start: Position { line: 378, column: 5, }, end: Position { line: 378, column: 10, }, }, }, ), Raw( PartRaw { content: "fonts", span: Span { start: Position { line: 378, column: 11, }, end: Position { line: 378, column: 16, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 378, column: 21, }, end: Position { line: 378, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "dejavu_fonts", span: Span { start: Position { line: 378, column: 26, }, end: Position { line: 378, column: 38, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 378, column: 19, }, end: Position { line: 378, column: 40, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 380, column: 5, }, end: Position { line: 380, column: 12, }, }, }, ), Raw( PartRaw { content: "timers", span: Span { start: Position { line: 380, column: 13, }, end: Position { line: 380, column: 19, }, }, }, ), Raw( PartRaw { content: "munin-cron", span: Span { start: Position { line: 380, column: 20, }, end: Position { line: 380, column: 30, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 381, column: 7, }, end: Position { line: 381, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "batch Munin master programs", span: Span { start: Position { line: 381, column: 22, }, end: Position { line: 381, column: 49, }, }, }, ), ], span: Span { start: Position { line: 381, column: 21, }, end: Position { line: 381, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 382, column: 7, }, end: Position { line: 382, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "timers.target", span: Span { start: Position { line: 382, column: 21, }, end: Position { line: 382, column: 34, }, }, }, ), ], span: Span { start: Position { line: 382, column: 20, }, end: Position { line: 382, column: 35, }, }, }, ), ], span: Span { start: Position { line: 382, column: 18, }, end: Position { line: 382, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timerConfig", span: Span { start: Position { line: 383, column: 7, }, end: Position { line: 383, column: 18, }, }, }, ), Raw( PartRaw { content: "OnCalendar", span: Span { start: Position { line: 383, column: 19, }, end: Position { line: 383, column: 29, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "*:0/5", span: Span { start: Position { line: 383, column: 33, }, end: Position { line: 383, column: 38, }, }, }, ), ], span: Span { start: Position { line: 383, column: 32, }, end: Position { line: 383, column: 39, }, }, }, ), }, ), ], span: Span { start: Position { line: 380, column: 33, }, end: Position { line: 384, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 386, column: 5, }, end: Position { line: 386, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 386, column: 13, }, end: Position { line: 386, column: 21, }, }, }, ), Raw( PartRaw { content: "munin-cron", span: Span { start: Position { line: 386, column: 22, }, end: Position { line: 386, column: 32, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 387, column: 7, }, end: Position { line: 387, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "batch Munin master programs", span: Span { start: Position { line: 387, column: 22, }, end: Position { line: 387, column: 49, }, }, }, ), ], span: Span { start: Position { line: 387, column: 21, }, end: Position { line: 387, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "unitConfig", span: Span { start: Position { line: 388, column: 7, }, end: Position { line: 388, column: 17, }, }, }, ), Raw( PartRaw { content: "Documentation", span: Span { start: Position { line: 388, column: 18, }, end: Position { line: 388, column: 31, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "man:munin-cron(8)", span: Span { start: Position { line: 388, column: 35, }, end: Position { line: 388, column: 52, }, }, }, ), ], span: Span { start: Position { line: 388, column: 34, }, end: Position { line: 388, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 390, column: 7, }, end: Position { line: 390, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Type", span: Span { start: Position { line: 391, column: 9, }, end: Position { line: 391, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "oneshot", span: Span { start: Position { line: 391, column: 17, }, end: Position { line: 391, column: 24, }, }, }, ), ], span: Span { start: Position { line: 391, column: 16, }, end: Position { line: 391, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 392, column: 9, }, end: Position { line: 392, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 392, column: 17, }, end: Position { line: 392, column: 22, }, }, }, ), ], span: Span { start: Position { line: 392, column: 16, }, end: Position { line: 392, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 393, column: 9, }, end: Position { line: 393, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 393, column: 24, }, end: Position { line: 393, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "munin", span: Span { start: Position { line: 393, column: 29, }, end: Position { line: 393, column: 34, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/munin-cron --config ", span: Span { start: Position { line: 393, column: 22, }, end: Position { line: 393, column: 60, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "muninConf", span: Span { start: Position { line: 393, column: 62, }, end: Position { line: 393, column: 71, }, }, }, ), }, ), ], span: Span { start: Position { line: 393, column: 21, }, end: Position { line: 393, column: 73, }, }, }, ), }, ), ], span: Span { start: Position { line: 390, column: 23, }, end: Position { line: 394, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 386, column: 35, }, end: Position { line: 395, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 397, column: 5, }, end: Position { line: 397, column: 12, }, }, }, ), Raw( PartRaw { content: "tmpfiles", span: Span { start: Position { line: 397, column: 13, }, end: Position { line: 397, column: 21, }, }, }, ), Raw( PartRaw { content: "rules", span: Span { start: Position { line: 397, column: 22, }, end: Position { line: 397, column: 27, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "d /run/munin 0755 munin munin -", span: Span { start: Position { line: 398, column: 8, }, end: Position { line: 398, column: 39, }, }, }, ), ], span: Span { start: Position { line: 398, column: 7, }, end: Position { line: 398, column: 40, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d /var/log/munin 0755 munin munin -", span: Span { start: Position { line: 399, column: 8, }, end: Position { line: 399, column: 43, }, }, }, ), ], span: Span { start: Position { line: 399, column: 7, }, end: Position { line: 399, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d /var/www/munin 0755 munin munin -", span: Span { start: Position { line: 400, column: 8, }, end: Position { line: 400, column: 43, }, }, }, ), ], span: Span { start: Position { line: 400, column: 7, }, end: Position { line: 400, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "d /var/lib/munin 0755 munin munin -", span: Span { start: Position { line: 401, column: 8, }, end: Position { line: 401, column: 43, }, }, }, ), ], span: Span { start: Position { line: 401, column: 7, }, end: Position { line: 401, column: 44, }, }, }, ), ], span: Span { start: Position { line: 397, column: 30, }, end: Position { line: 402, column: 6, }, }, }, ), }, ), ], span: Span { start: Position { line: 374, column: 27, }, end: Position { line: 403, column: 4, }, }, }, ), ], }, ), ], span: Span { start: Position { line: 318, column: 20, }, end: Position { line: 403, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 132, column: 1, }, end: Position { line: 404, column: 2, }, }, }, ), span: Span { start: Position { line: 16, column: 1, }, end: Position { line: 404, column: 2, }, }, }, ), span: Span { start: Position { line: 14, column: 1, }, end: Position { line: 404, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 404, column: 2, }, }, }, )