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: 7, column: 6, }, end: Position { line: 7, column: 9, }, }, }, ), target: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "menuBuilderGrub2", span: Span { start: Position { line: 18, column: 3, }, end: Position { line: 18, column: 19, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "defaults", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "options", }, ), body: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 19, column: 22, }, end: Position { line: 19, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatStrings", span: Span { start: Position { line: 19, column: 26, }, end: Position { line: 19, column: 39, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 21, column: 7, }, end: Position { line: 21, column: 10, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "option", }, ), body: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "menuentry ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 23, column: 19, }, }, }, ), Raw( PartRaw { content: "'", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 23, column: 20, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "defaults", span: Span { start: Position { line: 23, column: 22, }, end: Position { line: 23, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 23, column: 31, }, end: Position { line: 23, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 23, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 25, column: 9, }, end: Position { line: 25, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 25, column: 16, }, end: Position { line: 25, column: 20, }, }, }, ), ], default: Some( IfThenElse( IfThenElse { predicate: HasAttribute( HasAttribute { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 25, column: 28, }, end: Position { line: 25, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 25, column: 37, }, end: Position { line: 25, column: 43, }, }, }, ), ], }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "(", span: Span { start: Position { line: 25, column: 50, }, end: Position { line: 25, column: 67, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 25, column: 53, }, end: Position { line: 25, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 25, column: 60, }, end: Position { line: 25, column: 66, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ")", span: Span { start: Position { line: 25, column: 50, }, end: Position { line: 25, column: 68, }, }, }, ), ], span: Span { start: Position { line: 25, column: 49, }, end: Position { line: 25, column: 69, }, }, }, ), else_: String( String_ { parts: [], span: Span { start: Position { line: 25, column: 75, }, end: Position { line: 25, column: 77, }, }, }, ), span: Span { start: Position { line: 25, column: 25, }, end: Position { line: 25, column: 77, }, }, }, ), ), }, ), }, ), Raw( PartRaw { content: "' ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 26, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: HasAttribute( HasAttribute { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 26, column: 17, }, end: Position { line: 26, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 26, column: 26, }, end: Position { line: 26, column: 31, }, }, }, ), ], }, ), then: String( String_ { parts: [ Raw( PartRaw { content: " --class ", span: Span { start: Position { line: 26, column: 38, }, end: Position { line: 26, column: 62, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 26, column: 49, }, end: Position { line: 26, column: 55, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 26, column: 56, }, end: Position { line: 26, column: 61, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 26, column: 37, }, end: Position { line: 26, column: 63, }, }, }, ), else_: String( String_ { parts: [], span: Span { start: Position { line: 26, column: 69, }, end: Position { line: 26, column: 71, }, }, }, ), span: Span { start: Position { line: 26, column: 14, }, end: Position { line: 26, column: 71, }, }, }, ), }, ), Raw( PartRaw { content: " {\n linux ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 27, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "defaults", span: Span { start: Position { line: 27, column: 19, }, end: Position { line: 27, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "image", span: Span { start: Position { line: 27, column: 28, }, end: Position { line: 27, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " \\", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 27, column: 36, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 27, column: 39, }, }, }, ), Raw( PartRaw { content: "{isoboot} ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 27, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "defaults", span: Span { start: Position { line: 27, column: 51, }, end: Position { line: 27, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 27, column: 60, }, end: Position { line: 27, column: 66, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 27, column: 68, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "option", span: Span { start: Position { line: 28, column: 13, }, end: Position { line: 28, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 28, column: 20, }, end: Position { line: 28, column: 26, }, }, }, ), ], default: Some( String( String_ { parts: [], span: Span { start: Position { line: 28, column: 30, }, end: Position { line: 28, column: 32, }, }, }, ), ), }, ), }, ), Raw( PartRaw { content: "\n initrd ", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 30, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "defaults", span: Span { start: Position { line: 30, column: 20, }, end: Position { line: 30, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "initrd", span: Span { start: Position { line: 30, column: 29, }, end: Position { line: 30, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n}\n", span: Span { start: Position { line: 23, column: 1, }, end: Position { line: 32, column: 7, }, }, }, ), ], span: Span { start: Position { line: 22, column: 16, }, end: Position { line: 32, column: 9, }, }, }, ), span: Span { start: Position { line: 22, column: 8, }, end: Position { line: 32, column: 9, }, }, }, ), Identifier( Identifier { id: "options", span: Span { start: Position { line: 33, column: 7, }, end: Position { line: 33, column: 14, }, }, }, ), ], }, ), ], }, ), span: Span { start: Position { line: 19, column: 13, }, end: Position { line: 34, column: 6, }, }, }, ), span: Span { start: Position { line: 19, column: 3, }, end: Position { line: 34, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "buildMenuGrub2", span: Span { start: Position { line: 40, column: 3, }, end: Position { line: 40, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 40, column: 20, }, end: Position { line: 40, column: 50, }, }, }, ), arguments: [ String( String_ { parts: [], span: Span { start: Position { line: 40, column: 51, }, end: Position { line: 40, column: 53, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "targetArch", span: Span { start: Position { line: 42, column: 3, }, end: Position { line: 42, column: 13, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 43, column: 8, }, end: Position { line: 43, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 43, column: 15, }, end: Position { line: 43, column: 19, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 43, column: 20, }, end: Position { line: 43, column: 26, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 43, column: 27, }, end: Position { line: 43, column: 31, }, }, }, ), Raw( PartRaw { content: "forcei686", span: Span { start: Position { line: 43, column: 32, }, end: Position { line: 43, column: 41, }, }, }, ), ], default: None, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "ia32", span: Span { start: Position { line: 44, column: 8, }, end: Position { line: 44, column: 12, }, }, }, ), ], span: Span { start: Position { line: 44, column: 7, }, end: Position { line: 44, column: 13, }, }, }, ), else_: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 46, column: 7, }, end: Position { line: 46, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 46, column: 12, }, end: Position { line: 46, column: 18, }, }, }, ), Raw( PartRaw { content: "hostPlatform", span: Span { start: Position { line: 46, column: 19, }, end: Position { line: 46, column: 31, }, }, }, ), Raw( PartRaw { content: "efiArch", span: Span { start: Position { line: 46, column: 32, }, end: Position { line: 46, column: 39, }, }, }, ), ], default: None, }, ), span: Span { start: Position { line: 43, column: 5, }, end: Position { line: 46, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 52, column: 3, }, end: Position { line: 52, column: 33, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "additional", }, ), body: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "finalCfg", span: Span { start: Position { line: 54, column: 5, }, end: Position { line: 54, column: 13, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 55, column: 7, }, end: Position { line: 55, column: 11, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "NixOS ", span: Span { start: Position { line: 55, column: 15, }, end: Position { line: 55, column: 49, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 55, column: 23, }, end: Position { line: 55, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 55, column: 30, }, end: Position { line: 55, column: 36, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 55, column: 37, }, end: Position { line: 55, column: 42, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 55, column: 43, }, end: Position { line: 55, column: 48, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 55, column: 51, }, end: Position { line: 55, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 55, column: 58, }, end: Position { line: 55, column: 66, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 55, column: 67, }, end: Position { line: 55, column: 84, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 55, column: 14, }, end: Position { line: 55, column: 86, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 56, column: 7, }, end: Position { line: 56, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "init=", span: Span { start: Position { line: 56, column: 17, }, end: Position { line: 56, column: 53, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 56, column: 24, }, end: Position { line: 56, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 56, column: 31, }, end: Position { line: 56, column: 37, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 56, column: 38, }, end: Position { line: 56, column: 43, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 56, column: 44, }, end: Position { line: 56, column: 52, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 56, column: 17, }, end: Position { line: 56, column: 59, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "additional", span: Span { start: Position { line: 56, column: 61, }, end: Position { line: 56, column: 71, }, }, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 56, column: 17, }, end: Position { line: 56, column: 73, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 56, column: 75, }, end: Position { line: 56, column: 83, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 56, column: 84, }, end: Position { line: 56, column: 90, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 56, column: 91, }, end: Position { line: 56, column: 95, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 56, column: 96, }, end: Position { line: 56, column: 108, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 56, column: 16, }, end: Position { line: 56, column: 110, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "image", span: Span { start: Position { line: 57, column: 7, }, end: Position { line: 57, column: 12, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot/", span: Span { start: Position { line: 57, column: 16, }, end: Position { line: 57, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 57, column: 24, }, end: Position { line: 57, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 57, column: 31, }, end: Position { line: 57, column: 37, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 57, column: 38, }, end: Position { line: 57, column: 42, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 57, column: 43, }, end: Position { line: 57, column: 49, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 57, column: 50, }, end: Position { line: 57, column: 60, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 57, column: 15, }, end: Position { line: 57, column: 62, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "initrd", span: Span { start: Position { line: 58, column: 7, }, end: Position { line: 58, column: 13, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot/initrd", span: Span { start: Position { line: 58, column: 17, }, end: Position { line: 58, column: 29, }, }, }, ), ], span: Span { start: Position { line: 58, column: 16, }, end: Position { line: 58, column: 30, }, }, }, ), }, ), ], span: Span { start: Position { line: 54, column: 16, }, end: Position { line: 59, column: 6, }, }, }, ), }, ), ], target: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "menuBuilderGrub2", span: Span { start: Position { line: 62, column: 5, }, end: Position { line: 62, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "finalCfg", span: Span { start: Position { line: 63, column: 5, }, end: Position { line: 63, column: 13, }, }, }, ), List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 65, column: 9, }, end: Position { line: 65, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "installer", span: Span { start: Position { line: 65, column: 18, }, end: Position { line: 65, column: 27, }, }, }, ), ], span: Span { start: Position { line: 65, column: 17, }, end: Position { line: 65, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 65, column: 7, }, end: Position { line: 65, column: 31, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 66, column: 9, }, end: Position { line: 66, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "nomodeset", span: Span { start: Position { line: 66, column: 18, }, end: Position { line: 66, column: 27, }, }, }, ), ], span: Span { start: Position { line: 66, column: 17, }, end: Position { line: 66, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 66, column: 30, }, end: Position { line: 66, column: 36, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "nomodeset", span: Span { start: Position { line: 66, column: 40, }, end: Position { line: 66, column: 49, }, }, }, ), ], span: Span { start: Position { line: 66, column: 39, }, end: Position { line: 66, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 66, column: 7, }, end: Position { line: 66, column: 53, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 67, column: 9, }, end: Position { line: 67, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "copytoram", span: Span { start: Position { line: 67, column: 18, }, end: Position { line: 67, column: 27, }, }, }, ), ], span: Span { start: Position { line: 67, column: 17, }, end: Position { line: 67, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 67, column: 30, }, end: Position { line: 67, column: 36, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "copytoram", span: Span { start: Position { line: 67, column: 40, }, end: Position { line: 67, column: 49, }, }, }, ), ], span: Span { start: Position { line: 67, column: 39, }, end: Position { line: 67, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 67, column: 7, }, end: Position { line: 67, column: 53, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "class", span: Span { start: Position { line: 68, column: 9, }, end: Position { line: 68, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "debug", span: Span { start: Position { line: 68, column: 18, }, end: Position { line: 68, column: 23, }, }, }, ), ], span: Span { start: Position { line: 68, column: 17, }, end: Position { line: 68, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "params", span: Span { start: Position { line: 68, column: 30, }, end: Position { line: 68, column: 36, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "debug", span: Span { start: Position { line: 68, column: 40, }, end: Position { line: 68, column: 45, }, }, }, ), ], span: Span { start: Position { line: 68, column: 39, }, end: Position { line: 68, column: 46, }, }, }, ), }, ), ], span: Span { start: Position { line: 68, column: 7, }, end: Position { line: 68, column: 49, }, }, }, ), ], span: Span { start: Position { line: 64, column: 5, }, end: Position { line: 69, column: 6, }, }, }, ), ], }, ), span: Span { start: Position { line: 53, column: 3, }, end: Position { line: 69, column: 6, }, }, }, ), span: Span { start: Position { line: 52, column: 36, }, end: Position { line: 69, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "syslinuxTimeout", span: Span { start: Position { line: 74, column: 3, }, end: Position { line: 74, column: 18, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 74, column: 24, }, end: Position { line: 74, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 74, column: 31, }, end: Position { line: 74, column: 35, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 74, column: 36, }, end: Position { line: 74, column: 42, }, }, }, ), Raw( PartRaw { content: "timeout", span: Span { start: Position { line: 74, column: 43, }, end: Position { line: 74, column: 50, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 74, column: 54, }, end: Position { line: 74, column: 58, }, }, }, ), }, ), then: Integer( Integer { value: "0", span: Span { start: Position { line: 75, column: 7, }, end: Position { line: 75, column: 8, }, }, }, ), else_: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "max", span: Span { start: Position { line: 77, column: 7, }, end: Position { line: 77, column: 10, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 77, column: 12, }, end: Position { line: 77, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 77, column: 19, }, end: Position { line: 77, column: 23, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 77, column: 24, }, end: Position { line: 77, column: 30, }, }, }, ), Raw( PartRaw { content: "timeout", span: Span { start: Position { line: 77, column: 31, }, end: Position { line: 77, column: 38, }, }, }, ), ], default: None, }, ), operator: Multiplication, right: Integer( Integer { value: "10", span: Span { start: Position { line: 77, column: 41, }, end: Position { line: 77, column: 43, }, }, }, ), }, ), Integer( Integer { value: "1", span: Span { start: Position { line: 77, column: 45, }, end: Position { line: 77, column: 46, }, }, }, ), ], }, ), span: Span { start: Position { line: 74, column: 21, }, end: Position { line: 77, column: 46, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "max", span: Span { start: Position { line: 80, column: 3, }, end: Position { line: 80, column: 6, }, }, }, ), ], to: Function( Function { head: Simple( FunctionHeadSimple { identifier: "x", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "y", }, ), body: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "x", span: Span { start: Position { line: 80, column: 18, }, end: Position { line: 80, column: 19, }, }, }, ), operator: GreaterThan, right: Identifier( Identifier { id: "y", span: Span { start: Position { line: 80, column: 22, }, end: Position { line: 80, column: 23, }, }, }, ), }, ), then: Identifier( Identifier { id: "x", span: Span { start: Position { line: 80, column: 29, }, end: Position { line: 80, column: 30, }, }, }, ), else_: Identifier( Identifier { id: "y", span: Span { start: Position { line: 80, column: 36, }, end: Position { line: 80, column: 37, }, }, }, ), span: Span { start: Position { line: 80, column: 15, }, end: Position { line: 80, column: 37, }, }, }, ), span: Span { start: Position { line: 80, column: 12, }, end: Position { line: 80, column: 37, }, }, }, ), span: Span { start: Position { line: 80, column: 9, }, end: Position { line: 80, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "baseIsolinuxCfg", span: Span { start: Position { line: 95, column: 3, }, end: Position { line: 95, column: 18, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "SERIAL 0 115200\nTIMEOUT ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 97, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 97, column: 15, }, end: Position { line: 97, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toString", span: Span { start: Position { line: 97, column: 24, }, end: Position { line: 97, column: 32, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "syslinuxTimeout", span: Span { start: Position { line: 97, column: 33, }, end: Position { line: 97, column: 48, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nUI vesamenu.c32\nMENU BACKGROUND /isolinux/background.png\n\n", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 101, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 101, column: 7, }, end: Position { line: 101, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 101, column: 14, }, end: Position { line: 101, column: 22, }, }, }, ), Raw( PartRaw { content: "syslinuxTheme", span: Span { start: Position { line: 101, column: 23, }, end: Position { line: 101, column: 36, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\nDEFAULT boot\n\nLABEL boot\nMENU LABEL NixOS ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 106, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 106, column: 24, }, end: Position { line: 106, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 106, column: 31, }, end: Position { line: 106, column: 37, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 106, column: 38, }, end: Position { line: 106, column: 43, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 106, column: 44, }, end: Position { line: 106, column: 49, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 106, column: 52, }, end: Position { line: 106, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 106, column: 59, }, end: Position { line: 106, column: 67, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 106, column: 68, }, end: Position { line: 106, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nLINUX /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 107, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 107, column: 19, }, end: Position { line: 107, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 107, column: 26, }, end: Position { line: 107, column: 32, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 107, column: 33, }, end: Position { line: 107, column: 37, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 107, column: 38, }, end: Position { line: 107, column: 44, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 107, column: 45, }, end: Position { line: 107, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nAPPEND init=", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 108, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 108, column: 19, }, end: Position { line: 108, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 108, column: 26, }, end: Position { line: 108, column: 32, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 108, column: 33, }, end: Position { line: 108, column: 38, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 108, column: 39, }, end: Position { line: 108, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 108, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 108, column: 56, }, end: Position { line: 108, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 108, column: 65, }, end: Position { line: 108, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 108, column: 72, }, end: Position { line: 108, column: 76, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 108, column: 77, }, end: Position { line: 108, column: 89, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nINITRD /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 109, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 109, column: 20, }, end: Position { line: 109, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 109, column: 27, }, end: Position { line: 109, column: 33, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 109, column: 34, }, end: Position { line: 109, column: 38, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 109, column: 39, }, end: Position { line: 109, column: 45, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 109, column: 46, }, end: Position { line: 109, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\n# A variant to boot with 'nomodeset'\nLABEL boot-nomodeset\nMENU LABEL NixOS ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 113, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 113, column: 24, }, end: Position { line: 113, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 113, column: 31, }, end: Position { line: 113, column: 37, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 113, column: 38, }, end: Position { line: 113, column: 43, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 113, column: 44, }, end: Position { line: 113, column: 49, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 113, column: 52, }, end: Position { line: 113, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 113, column: 59, }, end: Position { line: 113, column: 67, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 113, column: 68, }, end: Position { line: 113, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " (nomodeset)\nLINUX /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 114, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 114, column: 19, }, end: Position { line: 114, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 114, column: 26, }, end: Position { line: 114, column: 32, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 114, column: 33, }, end: Position { line: 114, column: 37, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 114, column: 38, }, end: Position { line: 114, column: 44, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 114, column: 45, }, end: Position { line: 114, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nAPPEND init=", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 115, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 115, column: 19, }, end: Position { line: 115, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 115, column: 26, }, end: Position { line: 115, column: 32, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 115, column: 33, }, end: Position { line: 115, column: 38, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 115, column: 39, }, end: Position { line: 115, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 115, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 115, column: 56, }, end: Position { line: 115, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 115, column: 65, }, end: Position { line: 115, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 115, column: 72, }, end: Position { line: 115, column: 76, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 115, column: 77, }, end: Position { line: 115, column: 89, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " nomodeset\nINITRD /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 116, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 116, column: 20, }, end: Position { line: 116, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 116, column: 27, }, end: Position { line: 116, column: 33, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 116, column: 34, }, end: Position { line: 116, column: 38, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 116, column: 39, }, end: Position { line: 116, column: 45, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 116, column: 46, }, end: Position { line: 116, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\n# A variant to boot with 'copytoram'\nLABEL boot-copytoram\nMENU LABEL NixOS ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 120, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 120, column: 24, }, end: Position { line: 120, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 120, column: 31, }, end: Position { line: 120, column: 37, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 120, column: 38, }, end: Position { line: 120, column: 43, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 120, column: 44, }, end: Position { line: 120, column: 49, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 120, column: 52, }, end: Position { line: 120, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 120, column: 59, }, end: Position { line: 120, column: 67, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 120, column: 68, }, end: Position { line: 120, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " (copytoram)\nLINUX /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 121, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 121, column: 19, }, end: Position { line: 121, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 121, column: 26, }, end: Position { line: 121, column: 32, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 121, column: 33, }, end: Position { line: 121, column: 37, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 121, column: 38, }, end: Position { line: 121, column: 44, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 121, column: 45, }, end: Position { line: 121, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nAPPEND init=", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 122, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 122, column: 19, }, end: Position { line: 122, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 122, column: 26, }, end: Position { line: 122, column: 32, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 122, column: 33, }, end: Position { line: 122, column: 38, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 122, column: 39, }, end: Position { line: 122, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 122, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 122, column: 56, }, end: Position { line: 122, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 122, column: 65, }, end: Position { line: 122, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 122, column: 72, }, end: Position { line: 122, column: 76, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 122, column: 77, }, end: Position { line: 122, column: 89, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " copytoram\nINITRD /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 123, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 123, column: 20, }, end: Position { line: 123, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 123, column: 27, }, end: Position { line: 123, column: 33, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 123, column: 34, }, end: Position { line: 123, column: 38, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 123, column: 39, }, end: Position { line: 123, column: 45, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 123, column: 46, }, end: Position { line: 123, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\n# A variant to boot with verbose logging to the console\nLABEL boot-debug\nMENU LABEL NixOS ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 127, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 127, column: 24, }, end: Position { line: 127, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 127, column: 31, }, end: Position { line: 127, column: 37, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 127, column: 38, }, end: Position { line: 127, column: 43, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 127, column: 44, }, end: Position { line: 127, column: 49, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 127, column: 52, }, end: Position { line: 127, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 127, column: 59, }, end: Position { line: 127, column: 67, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 127, column: 68, }, end: Position { line: 127, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " (debug)\nLINUX /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 128, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 128, column: 19, }, end: Position { line: 128, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 128, column: 26, }, end: Position { line: 128, column: 32, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 128, column: 33, }, end: Position { line: 128, column: 37, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 128, column: 38, }, end: Position { line: 128, column: 44, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 128, column: 45, }, end: Position { line: 128, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nAPPEND init=", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 129, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 129, column: 19, }, end: Position { line: 129, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 129, column: 26, }, end: Position { line: 129, column: 32, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 129, column: 33, }, end: Position { line: 129, column: 38, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 129, column: 39, }, end: Position { line: 129, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 129, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 129, column: 56, }, end: Position { line: 129, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 129, column: 65, }, end: Position { line: 129, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 129, column: 72, }, end: Position { line: 129, column: 76, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 129, column: 77, }, end: Position { line: 129, column: 89, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " loglevel=7\nINITRD /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 130, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 130, column: 20, }, end: Position { line: 130, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 130, column: 27, }, end: Position { line: 130, column: 33, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 130, column: 34, }, end: Position { line: 130, column: 38, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 130, column: 39, }, end: Position { line: 130, column: 45, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 130, column: 46, }, end: Position { line: 130, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n\n# A variant to boot with a serial console enabled\nLABEL boot-serial\nMENU LABEL NixOS ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 134, column: 22, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 134, column: 24, }, end: Position { line: 134, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 134, column: 31, }, end: Position { line: 134, column: 37, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 134, column: 38, }, end: Position { line: 134, column: 43, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 134, column: 44, }, end: Position { line: 134, column: 49, }, }, }, ), ], default: None, }, ), }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 134, column: 52, }, end: Position { line: 134, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 134, column: 59, }, end: Position { line: 134, column: 67, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 134, column: 68, }, end: Position { line: 134, column: 85, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " (serial console=ttyS0,115200n8)\nLINUX /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 135, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 135, column: 19, }, end: Position { line: 135, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 135, column: 26, }, end: Position { line: 135, column: 32, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 135, column: 33, }, end: Position { line: 135, column: 37, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 135, column: 38, }, end: Position { line: 135, column: 44, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 135, column: 45, }, end: Position { line: 135, column: 55, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\nAPPEND init=", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 136, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 136, column: 19, }, end: Position { line: 136, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 136, column: 26, }, end: Position { line: 136, column: 32, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 136, column: 33, }, end: Position { line: 136, column: 38, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 136, column: 39, }, end: Position { line: 136, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/init ", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 136, column: 54, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 136, column: 56, }, end: Position { line: 136, column: 64, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 136, column: 65, }, end: Position { line: 136, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 136, column: 72, }, end: Position { line: 136, column: 76, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 136, column: 77, }, end: Position { line: 136, column: 89, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: " console=ttyS0,115200n8\nINITRD /boot/", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 137, column: 18, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 137, column: 20, }, end: Position { line: 137, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 137, column: 27, }, end: Position { line: 137, column: 33, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 137, column: 34, }, end: Position { line: 137, column: 38, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 137, column: 39, }, end: Position { line: 137, column: 45, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 137, column: 46, }, end: Position { line: 137, column: 56, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 96, column: 1, }, end: Position { line: 138, column: 3, }, }, }, ), ], span: Span { start: Position { line: 95, column: 21, }, end: Position { line: 138, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isolinuxMemtest86Entry", span: Span { start: Position { line: 140, column: 3, }, end: Position { line: 140, column: 25, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "LABEL memtest\nMENU LABEL Memtest86+\nLINUX /boot/memtest.bin\nAPPEND ", span: Span { start: Position { line: 141, column: 1, }, end: Position { line: 144, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 144, column: 14, }, end: Position { line: 144, column: 22, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 144, column: 23, }, end: Position { line: 144, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 144, column: 30, }, end: Position { line: 144, column: 34, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 144, column: 35, }, end: Position { line: 144, column: 41, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 144, column: 42, }, end: Position { line: 144, column: 46, }, }, }, ), Raw( PartRaw { content: "memtest86", span: Span { start: Position { line: 144, column: 47, }, end: Position { line: 144, column: 56, }, }, }, ), Raw( PartRaw { content: "params", span: Span { start: Position { line: 144, column: 57, }, end: Position { line: 144, column: 63, }, }, }, ), ], default: None, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 141, column: 1, }, end: Position { line: 145, column: 3, }, }, }, ), ], span: Span { start: Position { line: 140, column: 28, }, end: Position { line: 145, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isolinuxCfg", span: Span { start: Position { line: 147, column: 3, }, end: Position { line: 147, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 147, column: 17, }, end: Position { line: 147, column: 33, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "\n", span: Span { start: Position { line: 147, column: 35, }, end: Position { line: 147, column: 37, }, }, }, ), ], span: Span { start: Position { line: 147, column: 34, }, end: Position { line: 147, column: 38, }, }, }, ), BinaryOperation( BinaryOperation { left: List( List { elements: [ Identifier( Identifier { id: "baseIsolinuxCfg", span: Span { start: Position { line: 148, column: 8, }, end: Position { line: 148, column: 23, }, }, }, ), ], span: Span { start: Position { line: 148, column: 6, }, end: Position { line: 148, column: 25, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 148, column: 29, }, end: Position { line: 148, column: 37, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 148, column: 38, }, end: Position { line: 148, column: 44, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 148, column: 45, }, end: Position { line: 148, column: 49, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 148, column: 50, }, end: Position { line: 148, column: 56, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 148, column: 57, }, end: Position { line: 148, column: 61, }, }, }, ), Raw( PartRaw { content: "memtest86", span: Span { start: Position { line: 148, column: 62, }, end: Position { line: 148, column: 71, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 148, column: 72, }, end: Position { line: 148, column: 78, }, }, }, ), ], default: None, }, ), Identifier( Identifier { id: "isolinuxMemtest86Entry", span: Span { start: Position { line: 148, column: 79, }, end: Position { line: 148, column: 101, }, }, }, ), ], }, ), }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "refindBinary", span: Span { start: Position { line: 150, column: 3, }, end: Position { line: 150, column: 15, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "targetArch", span: Span { start: Position { line: 150, column: 21, }, end: Position { line: 150, column: 31, }, }, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "x64", span: Span { start: Position { line: 150, column: 36, }, end: Position { line: 150, column: 39, }, }, }, ), ], span: Span { start: Position { line: 150, column: 35, }, end: Position { line: 150, column: 40, }, }, }, ), }, ), operator: LogicalOr, right: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "targetArch", span: Span { start: Position { line: 150, column: 44, }, end: Position { line: 150, column: 54, }, }, }, ), operator: EqualTo, right: String( String_ { parts: [ Raw( PartRaw { content: "aa64", span: Span { start: Position { line: 150, column: 59, }, end: Position { line: 150, column: 63, }, }, }, ), ], span: Span { start: Position { line: 150, column: 58, }, end: Position { line: 150, column: 64, }, }, }, ), }, ), }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "refind_", span: Span { start: Position { line: 150, column: 71, }, end: Position { line: 150, column: 91, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "targetArch", span: Span { start: Position { line: 150, column: 80, }, end: Position { line: 150, column: 90, }, }, }, ), }, ), Raw( PartRaw { content: ".efi", span: Span { start: Position { line: 150, column: 71, }, end: Position { line: 150, column: 95, }, }, }, ), ], span: Span { start: Position { line: 150, column: 70, }, end: Position { line: 150, column: 96, }, }, }, ), else_: Identifier( Identifier { id: "null", span: Span { start: Position { line: 150, column: 102, }, end: Position { line: 150, column: 106, }, }, }, ), span: Span { start: Position { line: 150, column: 18, }, end: Position { line: 150, column: 106, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "refind", span: Span { start: Position { line: 153, column: 3, }, end: Position { line: 153, column: 9, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "refindBinary", span: Span { start: Position { line: 154, column: 8, }, end: Position { line: 154, column: 20, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 154, column: 24, }, end: Position { line: 154, column: 28, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Adds rEFInd to the ISO.\ncp -v ", span: Span { start: Position { line: 156, column: 1, }, end: Position { line: 157, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 157, column: 15, }, end: Position { line: 157, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "refind", span: Span { start: Position { line: 157, column: 20, }, end: Position { line: 157, column: 26, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/refind/", span: Span { start: Position { line: 156, column: 1, }, end: Position { line: 157, column: 41, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "refindBinary", span: Span { start: Position { line: 157, column: 43, }, end: Position { line: 157, column: 55, }, }, }, ), }, ), Raw( PartRaw { content: " $out/EFI/boot/\n", span: Span { start: Position { line: 156, column: 1, }, end: Position { line: 158, column: 7, }, }, }, ), ], span: Span { start: Position { line: 155, column: 7, }, end: Position { line: 158, column: 9, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "# No refind for ", span: Span { start: Position { line: 160, column: 8, }, end: Position { line: 160, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "targetArch", span: Span { start: Position { line: 160, column: 26, }, end: Position { line: 160, column: 36, }, }, }, ), }, ), ], span: Span { start: Position { line: 160, column: 7, }, end: Position { line: 160, column: 38, }, }, }, ), span: Span { start: Position { line: 154, column: 5, }, end: Position { line: 160, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "grubPkgs", span: Span { start: Position { line: 163, column: 3, }, end: Position { line: 163, column: 11, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 163, column: 17, }, end: Position { line: 163, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 163, column: 24, }, end: Position { line: 163, column: 28, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 163, column: 29, }, end: Position { line: 163, column: 35, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 163, column: 36, }, end: Position { line: 163, column: 40, }, }, }, ), Raw( PartRaw { content: "forcei686", span: Span { start: Position { line: 163, column: 41, }, end: Position { line: 163, column: 50, }, }, }, ), ], default: None, }, ), then: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 163, column: 56, }, end: Position { line: 163, column: 60, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "pkgsi686Linux", span: Span { start: Position { line: 163, column: 61, }, end: Position { line: 163, column: 74, }, }, }, ), ], default: None, }, ), else_: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 163, column: 80, }, end: Position { line: 163, column: 84, }, }, }, ), span: Span { start: Position { line: 163, column: 14, }, end: Position { line: 163, column: 84, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "grubMenuCfg", span: Span { start: Position { line: 165, column: 3, }, end: Position { line: 165, column: 14, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "#\n# Menu configuration\n#\n\n# Search using a \"marker file\"\nsearch --set=root --file /EFI/nixos-installer-image\n\ninsmod gfxterm\ninsmod png\nset gfxpayload=keep\nset gfxmode=", span: Span { start: Position { line: 166, column: 1, }, end: Position { line: 176, column: 17, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 176, column: 19, }, end: Position { line: 176, column: 35, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 176, column: 37, }, end: Position { line: 176, column: 38, }, }, }, ), ], span: Span { start: Position { line: 176, column: 36, }, end: Position { line: 176, column: 39, }, }, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "1920x1080", span: Span { start: Position { line: 182, column: 8, }, end: Position { line: 182, column: 17, }, }, }, ), ], span: Span { start: Position { line: 182, column: 7, }, end: Position { line: 182, column: 18, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "1366x768", span: Span { start: Position { line: 183, column: 8, }, end: Position { line: 183, column: 16, }, }, }, ), ], span: Span { start: Position { line: 183, column: 7, }, end: Position { line: 183, column: 17, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "1280x720", span: Span { start: Position { line: 184, column: 8, }, end: Position { line: 184, column: 16, }, }, }, ), ], span: Span { start: Position { line: 184, column: 7, }, end: Position { line: 184, column: 17, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "1024x768", span: Span { start: Position { line: 185, column: 8, }, end: Position { line: 185, column: 16, }, }, }, ), ], span: Span { start: Position { line: 185, column: 7, }, end: Position { line: 185, column: 17, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "800x600", span: Span { start: Position { line: 186, column: 8, }, end: Position { line: 186, column: 15, }, }, }, ), ], span: Span { start: Position { line: 186, column: 7, }, end: Position { line: 186, column: 16, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "auto", span: Span { start: Position { line: 187, column: 8, }, end: Position { line: 187, column: 12, }, }, }, ), ], span: Span { start: Position { line: 187, column: 7, }, end: Position { line: 187, column: 13, }, }, }, ), ], span: Span { start: Position { line: 176, column: 40, }, end: Position { line: 188, column: 6, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n\n# Fonts can be loaded?\n# (This font is assumed to always be provided as a fallback by NixOS)\nif loadfont (\\$root)/EFI/boot/unicode.pf2; then\n set with_fonts=true\nfi\nif [ \"\\$textmode\" != \"true\" -a \"\\$with_fonts\" == \"true\" ]; then\n # Use graphical term, it can be either with background image or a theme.\n # input is \"console\", while output is \"gfxterm\".\n # This enables \"serial\" input and output only when possible.\n # Otherwise the failure mode is to not even enable gfxterm.\n if test \"\\$with_serial\" == \"yes\"; then\n terminal_output gfxterm serial\n terminal_input console serial\n else\n terminal_output gfxterm\n terminal_input console\n fi\nelse\n # Sets colors for the non-graphical term.\n set menu_color_normal=cyan/blue\n set menu_color_highlight=white/blue\nfi\n\n", span: Span { start: Position { line: 166, column: 1, }, end: Position { line: 213, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 214, column: 8, }, end: Position { line: 214, column: 14, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 214, column: 15, }, end: Position { line: 214, column: 23, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 214, column: 24, }, end: Position { line: 214, column: 33, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 214, column: 37, }, end: Position { line: 214, column: 41, }, }, }, ), }, ), then: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# Sets theme.\nset theme=(\\$root)/EFI/boot/grub-theme/theme.txt\n# Load theme fonts\n$(find ", span: Span { start: Position { line: 215, column: 1, }, end: Position { line: 218, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 218, column: 16, }, end: Position { line: 218, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 218, column: 23, }, end: Position { line: 218, column: 31, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 218, column: 32, }, end: Position { line: 218, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -iname '*.pf2' -printf \"loadfont (\\$root)/EFI/boot/grub-theme/%P\\n\")\n", span: Span { start: Position { line: 215, column: 1, }, end: Position { line: 219, column: 5, }, }, }, ), ], span: Span { start: Position { line: 214, column: 47, }, end: Position { line: 219, column: 7, }, }, }, ), else_: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "if background_image (\\$root)/EFI/boot/efi-background.png; then\n # Black background means transparent background when there\n # is a background image set... This seems undocumented :(\n set color_normal=black/black\n set color_highlight=white/blue\nelse\n # Falls back again to proper colors.\n set menu_color_normal=cyan/blue\n set menu_color_highlight=white/blue\nfi\n", span: Span { start: Position { line: 220, column: 1, }, end: Position { line: 230, column: 5, }, }, }, ), ], span: Span { start: Position { line: 219, column: 13, }, end: Position { line: 230, column: 7, }, }, }, ), span: Span { start: Position { line: 214, column: 5, }, end: Position { line: 230, column: 7, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 166, column: 1, }, end: Position { line: 231, column: 3, }, }, }, ), ], span: Span { start: Position { line: 165, column: 17, }, end: Position { line: 231, column: 5, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "efiDir", span: Span { start: Position { line: 237, column: 3, }, end: Position { line: 237, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 237, column: 12, }, end: Position { line: 237, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runCommand", span: Span { start: Position { line: 237, column: 17, }, end: Position { line: 237, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "efi-directory", span: Span { start: Position { line: 237, column: 29, }, end: Position { line: 237, column: 42, }, }, }, ), ], span: Span { start: Position { line: 237, column: 28, }, end: Position { line: 237, column: 43, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nativeBuildInputs", span: Span { start: Position { line: 238, column: 5, }, end: Position { line: 238, column: 22, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 238, column: 27, }, end: Position { line: 238, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildPackages", span: Span { start: Position { line: 238, column: 32, }, end: Position { line: 238, column: 45, }, }, }, ), Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 238, column: 46, }, end: Position { line: 238, column: 55, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 238, column: 25, }, end: Position { line: 238, column: 57, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "strictDeps", span: Span { start: Position { line: 239, column: 5, }, end: Position { line: 239, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 239, column: 18, }, end: Position { line: 239, column: 22, }, }, }, ), }, ), ], span: Span { start: Position { line: 237, column: 44, }, end: Position { line: 240, column: 4, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p $out/EFI/boot/\n\n# Add a marker so GRUB can find the filesystem.\ntouch $out/EFI/nixos-installer-image\n\n# ALWAYS required modules.\nMODULES=\"fat iso9660 part_gpt part_msdos \\\n normal boot linux configfile loopback chain halt \\\n efifwsetup efi_gop \\\n ls search search_label search_fs_uuid search_fs_file \\\n gfxmenu gfxterm gfxterm_background gfxterm_menu test all_video loadenv \\\n exfat ext2 ntfs btrfs hfsplus udf \\\n videoinfo png \\\n echo serial \\\n \"\n\necho \"Building GRUB with modules:\"\nfor mod in $MODULES; do\n echo \" - $mod\"\ndone\n\n# Modules that may or may not be available per-platform.\necho \"Adding additional modules:\"\nfor mod in efi_uga; do\n if [ -f ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 265, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 265, column: 17, }, end: Position { line: 265, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 265, column: 26, }, end: Position { line: 265, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lib/grub/", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 265, column: 46, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 265, column: 48, }, end: Position { line: 265, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 265, column: 57, }, end: Position { line: 265, column: 66, }, }, }, ), Raw( PartRaw { content: "grubTarget", span: Span { start: Position { line: 265, column: 67, }, end: Position { line: 265, column: 77, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/$mod.mod ]; then\n echo \" - $mod\"\n MODULES+=\" $mod\"\n fi\ndone\n\n# Make our own efi program, we can't rely on \"grub-install\" since it seems to\n# probe for devices, even with --skip-fs-probe.\ngrub-mkimage --directory=", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 273, column: 30, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 273, column: 32, }, end: Position { line: 273, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 273, column: 41, }, end: Position { line: 273, column: 50, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/lib/grub/", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 273, column: 61, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 273, column: 63, }, end: Position { line: 273, column: 71, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 273, column: 72, }, end: Position { line: 273, column: 81, }, }, }, ), Raw( PartRaw { content: "grubTarget", span: Span { start: Position { line: 273, column: 82, }, end: Position { line: 273, column: 92, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -o $out/EFI/boot/boot", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 273, column: 115, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "targetArch", span: Span { start: Position { line: 273, column: 117, }, end: Position { line: 273, column: 127, }, }, }, ), }, ), Raw( PartRaw { content: ".efi -p /EFI/boot -O ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 273, column: 149, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 273, column: 151, }, end: Position { line: 273, column: 159, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 273, column: 160, }, end: Position { line: 273, column: 169, }, }, }, ), Raw( PartRaw { content: "grubTarget", span: Span { start: Position { line: 273, column: 170, }, end: Position { line: 273, column: 180, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " \\\n $MODULES\ncp ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 275, column: 8, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 275, column: 10, }, end: Position { line: 275, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 275, column: 19, }, end: Position { line: 275, column: 28, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/grub/unicode.pf2 $out/EFI/boot/\n\ncat < $out/EFI/boot/grub.cfg\n\nset with_fonts=false\nset textmode=false\n# If you want to use serial for \"terminal_*\" commands, you need to set one up:\n# Example manual configuration:\n# → serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n# This uses the defaults, and makes the serial terminal available.\nset with_serial=no\nif serial; then set with_serial=yes ;fi\nexport with_serial\nclear\nset timeout=10\n\n# This message will only be viewable when \"gfxterm\" is not used.\necho \"\"\necho \"Loading graphical boot menu...\"\necho \"\"\necho \"Press 't' to use the text boot menu on this console...\"\necho \"\"\n\n", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 298, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 298, column: 7, }, end: Position { line: 298, column: 18, }, }, }, ), }, ), Raw( PartRaw { content: "\n\nhiddenentry 'Text mode' --hotkey 't' {\n loadfont (\\$root)/EFI/boot/unicode.pf2\n set textmode=true\n terminal_output gfxterm console\n}\nhiddenentry 'GUI mode' --hotkey 'g' {\n $(find ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 306, column: 14, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 306, column: 16, }, end: Position { line: 306, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 306, column: 23, }, end: Position { line: 306, column: 31, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 306, column: 32, }, end: Position { line: 306, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " -iname '*.pf2' -printf \"loadfont (\\$root)/EFI/boot/grub-theme/%P\\n\")\n set textmode=false\n terminal_output gfxterm\n}\n\n\n# If the parameter iso_path is set, append the findiso parameter to the kernel\n# line. We need this to allow the nixos iso to be booted from grub directly.\nif [ \\", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 314, column: 11, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 314, column: 14, }, }, }, ), Raw( PartRaw { content: "{iso_path} ] ; then\n set isoboot=\"findiso=\\", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 315, column: 29, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 315, column: 32, }, }, }, ), Raw( PartRaw { content: "{iso_path}\"\nfi\n\n#\n# Menu entries\n#\n\n", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 322, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "buildMenuGrub2", span: Span { start: Position { line: 322, column: 7, }, end: Position { line: 322, column: 21, }, }, }, ), }, ), Raw( PartRaw { content: "\nsubmenu \"HiDPI, Quirks and Accessibility\" --class hidpi --class submenu {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 324, column: 7, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 324, column: 9, }, end: Position { line: 324, column: 20, }, }, }, ), }, ), Raw( PartRaw { content: "\n submenu \"Suggests resolution @720p\" --class hidpi-720p {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 326, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 326, column: 11, }, end: Position { line: 326, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 327, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 327, column: 11, }, end: Position { line: 327, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "video=1280x720@60", span: Span { start: Position { line: 327, column: 43, }, end: Position { line: 327, column: 60, }, }, }, ), ], span: Span { start: Position { line: 327, column: 42, }, end: Position { line: 327, column: 61, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n submenu \"Suggests resolution @1080p\" --class hidpi-1080p {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 330, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 330, column: 11, }, end: Position { line: 330, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 331, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 331, column: 11, }, end: Position { line: 331, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "video=1920x1080@60", span: Span { start: Position { line: 331, column: 43, }, end: Position { line: 331, column: 61, }, }, }, ), ], span: Span { start: Position { line: 331, column: 42, }, end: Position { line: 331, column: 62, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n\n # If we boot into a graphical environment where X is autoran\n # and always crashes, it makes the media unusable. Allow the user\n # to disable this.\n submenu \"Disable display-manager\" --class quirk-disable-displaymanager {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 338, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 338, column: 11, }, end: Position { line: 338, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 339, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 339, column: 11, }, end: Position { line: 339, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "systemd.mask=display-manager.service", span: Span { start: Position { line: 339, column: 43, }, end: Position { line: 339, column: 79, }, }, }, ), ], span: Span { start: Position { line: 339, column: 42, }, end: Position { line: 339, column: 80, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n\n # Some laptop and convertibles have the panel installed in an\n # inconvenient way, rotated away from the keyboard.\n # Those entries makes it easier to use the installer.\n submenu \"\" {return}\n submenu \"Rotate framebuffer Clockwise\" --class rotate-90cw {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 347, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 347, column: 11, }, end: Position { line: 347, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 348, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 348, column: 11, }, end: Position { line: 348, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "fbcon=rotate:1", span: Span { start: Position { line: 348, column: 43, }, end: Position { line: 348, column: 57, }, }, }, ), ], span: Span { start: Position { line: 348, column: 42, }, end: Position { line: 348, column: 58, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n submenu \"Rotate framebuffer Upside-Down\" --class rotate-180 {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 351, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 351, column: 11, }, end: Position { line: 351, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 352, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 352, column: 11, }, end: Position { line: 352, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "fbcon=rotate:2", span: Span { start: Position { line: 352, column: 43, }, end: Position { line: 352, column: 57, }, }, }, ), ], span: Span { start: Position { line: 352, column: 42, }, end: Position { line: 352, column: 58, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n submenu \"Rotate framebuffer Counter-Clockwise\" --class rotate-90ccw {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 355, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 355, column: 11, }, end: Position { line: 355, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 356, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 356, column: 11, }, end: Position { line: 356, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "fbcon=rotate:3", span: Span { start: Position { line: 356, column: 43, }, end: Position { line: 356, column: 57, }, }, }, ), ], span: Span { start: Position { line: 356, column: 42, }, end: Position { line: 356, column: 58, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n\n # As a proof of concept, mainly. (Not sure it has accessibility merits.)\n submenu \"\" {return}\n submenu \"Use black on white\" --class accessibility-blakconwhite {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 362, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 362, column: 11, }, end: Position { line: 362, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 363, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 363, column: 11, }, end: Position { line: 363, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "vt.default_red=0xFF,0xBC,0x4F,0xB4,0x56,0xBC,0x4F,0x00,0xA1,0xCF,0x84,0xCA,0x8D,0xB4,0x84,0x68 vt.default_grn=0xFF,0x55,0xBA,0xBA,0x4D,0x4D,0xB3,0x00,0xA0,0x8F,0xB3,0xCA,0x88,0x93,0xA4,0x68 vt.default_blu=0xFF,0x58,0x5F,0x58,0xC5,0xBD,0xC5,0x00,0xA8,0xBB,0xAB,0x97,0xBD,0xC7,0xC5,0x68", span: Span { start: Position { line: 363, column: 43, }, end: Position { line: 363, column: 327, }, }, }, ), ], span: Span { start: Position { line: 363, column: 42, }, end: Position { line: 363, column: 328, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n\n # Serial access is a must!\n submenu \"\" {return}\n submenu \"Serial console=ttyS0,115200n8\" --class serial {\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 369, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "grubMenuCfg", span: Span { start: Position { line: 369, column: 11, }, end: Position { line: 369, column: 22, }, }, }, ), }, ), Raw( PartRaw { content: "\n ", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 370, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "buildMenuAdditionalParamsGrub2", span: Span { start: Position { line: 370, column: 11, }, end: Position { line: 370, column: 41, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "console=ttyS0,115200n8", span: Span { start: Position { line: 370, column: 43, }, end: Position { line: 370, column: 65, }, }, }, ), ], span: Span { start: Position { line: 370, column: 42, }, end: Position { line: 370, column: 66, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\n }\n}\n\n", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 374, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 374, column: 7, }, end: Position { line: 374, column: 10, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 374, column: 11, }, end: Position { line: 374, column: 25, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "refindBinary", span: Span { start: Position { line: 374, column: 27, }, end: Position { line: 374, column: 39, }, }, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 374, column: 43, }, end: Position { line: 374, column: 47, }, }, }, ), }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# GRUB apparently cannot do \"chainloader\" operations on \"CD\".\nif [ \"\\$root\" != \"cd0\" ]; then\n menuentry 'rEFInd' --class refind {\n # Force root to be the FAT partition\n # Otherwise it breaks rEFInd's boot\n search --set=root --no-floppy --fs-uuid 1234-5678\n chainloader (\\$root)/EFI/boot/", span: Span { start: Position { line: 375, column: 1, }, end: Position { line: 381, column: 39, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "refindBinary", span: Span { start: Position { line: 381, column: 41, }, end: Position { line: 381, column: 53, }, }, }, ), }, ), Raw( PartRaw { content: "\n }\nfi\n", span: Span { start: Position { line: 375, column: 1, }, end: Position { line: 384, column: 5, }, }, }, ), ], span: Span { start: Position { line: 374, column: 49, }, end: Position { line: 384, column: 7, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "\nmenuentry 'Firmware Setup' --class settings {\n fwsetup\n clear\n echo \"\"\n echo \"If you see this message, your EFI system doesn't support this feature.\"\n echo \"\"\n}\nmenuentry 'Shutdown' --class shutdown {\n halt\n}\nEOF\n\n", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 397, column: 5, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "refind", span: Span { start: Position { line: 397, column: 7, }, end: Position { line: 397, column: 13, }, }, }, ), }, ), Raw( PartRaw { content: "\n", span: Span { start: Position { line: 241, column: 1, }, end: Position { line: 398, column: 3, }, }, }, ), ], span: Span { start: Position { line: 240, column: 5, }, end: Position { line: 398, column: 5, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "efiImg", span: Span { start: Position { line: 400, column: 3, }, end: Position { line: 400, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 400, column: 12, }, end: Position { line: 400, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "runCommand", span: Span { start: Position { line: 400, column: 17, }, end: Position { line: 400, column: 27, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "efi-image_eltorito", span: Span { start: Position { line: 400, column: 29, }, end: Position { line: 400, column: 47, }, }, }, ), ], span: Span { start: Position { line: 400, column: 28, }, end: Position { line: 400, column: 48, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "nativeBuildInputs", span: Span { start: Position { line: 401, column: 5, }, end: Position { line: 401, column: 22, }, }, }, ), ], to: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 401, column: 27, }, end: Position { line: 401, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildPackages", span: Span { start: Position { line: 401, column: 32, }, end: Position { line: 401, column: 45, }, }, }, ), Raw( PartRaw { content: "mtools", span: Span { start: Position { line: 401, column: 46, }, end: Position { line: 401, column: 52, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 401, column: 53, }, end: Position { line: 401, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildPackages", span: Span { start: Position { line: 401, column: 58, }, end: Position { line: 401, column: 71, }, }, }, ), Raw( PartRaw { content: "libfaketime", span: Span { start: Position { line: 401, column: 72, }, end: Position { line: 401, column: 83, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 401, column: 84, }, end: Position { line: 401, column: 88, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "buildPackages", span: Span { start: Position { line: 401, column: 89, }, end: Position { line: 401, column: 102, }, }, }, ), Raw( PartRaw { content: "dosfstools", span: Span { start: Position { line: 401, column: 103, }, end: Position { line: 401, column: 113, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 401, column: 25, }, end: Position { line: 401, column: 115, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "strictDeps", span: Span { start: Position { line: 402, column: 5, }, end: Position { line: 402, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 402, column: 18, }, end: Position { line: 402, column: 22, }, }, }, ), }, ), ], span: Span { start: Position { line: 400, column: 49, }, end: Position { line: 403, column: 4, }, }, }, ), IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir ./contents && cd ./contents\nmkdir -p ./EFI/boot\ncp -rp \"", span: Span { start: Position { line: 407, column: 1, }, end: Position { line: 409, column: 15, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "efiDir", span: Span { start: Position { line: 409, column: 17, }, end: Position { line: 409, column: 23, }, }, }, ), }, ), Raw( PartRaw { content: "\"/EFI/boot/{grub.cfg,*.efi} ./EFI/boot\n\n# Rewrite dates for everything in the FS\nfind . -exec touch --date=2000-01-01 {} +\n\n# Round up to the nearest multiple of 1MB, for more deterministic du output\nusage_size=$(( $(du -s --block-size=1M --apparent-size . | tr -cd '[:digit:]') * 1024 * 1024 ))\n# Make the image 110% as big as the files need to make up for FAT overhead\nimage_size=$(( ($usage_size * 110) / 100 ))\n# Make the image fit blocks of 1M\nblock_size=$((1024*1024))\nimage_size=$(( ($image_size / $block_size + 1) * $block_size ))\necho \"Usage size: $usage_size\"\necho \"Image size: $image_size\"\ntruncate --size=$image_size \"$out\"\nmkfs.vfat --invariant -i 12345678 -n EFIBOOT \"$out\"\n\n# Force a fixed order in mcopy for better determinism, and avoid file globbing\nfor d in $(find EFI -type d | sort); do\n faketime \"2000-01-01 00:00:00\" mmd -i \"$out\" \"::/$d\"\ndone\n\nfor f in $(find EFI -type f | sort); do\n mcopy -pvm -i \"$out\" \"$f\" \"::/$f\"\ndone\n\n# Verify the FAT partition.\nfsck.vfat -vn \"$out\"\n", span: Span { start: Position { line: 407, column: 1, }, end: Position { line: 437, column: 5, }, }, }, ), ], span: Span { start: Position { line: 406, column: 5, }, end: Position { line: 437, column: 7, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "canx86BiosBoot", span: Span { start: Position { line: 440, column: 3, }, end: Position { line: 440, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 440, column: 20, }, end: Position { line: 440, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 440, column: 25, }, end: Position { line: 440, column: 31, }, }, }, ), Raw( PartRaw { content: "hostPlatform", span: Span { start: Position { line: 440, column: 32, }, end: Position { line: 440, column: 44, }, }, }, ), Raw( PartRaw { content: "isx86", span: Span { start: Position { line: 440, column: 45, }, end: Position { line: 440, column: 50, }, }, }, ), ], default: None, }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 445, column: 3, }, end: Position { line: 445, column: 10, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 447, column: 5, }, end: Position { line: 447, column: 13, }, }, }, ), Raw( PartRaw { content: "isoName", span: Span { start: Position { line: 447, column: 14, }, end: Position { line: 447, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 447, column: 24, }, end: Position { line: 447, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 448, column: 7, }, end: Position { line: 448, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 448, column: 20, }, end: Position { line: 448, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 448, column: 27, }, end: Position { line: 448, column: 35, }, }, }, ), Raw( PartRaw { content: "isoBaseName", span: Span { start: Position { line: 448, column: 36, }, end: Position { line: 448, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: ".iso", span: Span { start: Position { line: 448, column: 18, }, end: Position { line: 448, column: 52, }, }, }, ), ], span: Span { start: Position { line: 448, column: 17, }, end: Position { line: 448, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 449, column: 7, }, end: Position { line: 449, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 449, column: 21, }, end: Position { line: 449, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 449, column: 25, }, end: Position { line: 449, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Name of the generated ISO image file.\n", span: Span { start: Position { line: 450, column: 1, }, end: Position { line: 451, column: 7, }, }, }, ), ], span: Span { start: Position { line: 449, column: 31, }, end: Position { line: 451, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 447, column: 33, }, end: Position { line: 452, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 454, column: 5, }, end: Position { line: 454, column: 13, }, }, }, ), Raw( PartRaw { content: "isoBaseName", span: Span { start: Position { line: 454, column: 14, }, end: Position { line: 454, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 454, column: 28, }, end: Position { line: 454, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 455, column: 7, }, end: Position { line: 455, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 455, column: 18, }, end: Position { line: 455, column: 23, }, }, }, ), ], span: Span { start: Position { line: 455, column: 17, }, end: Position { line: 455, column: 24, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 456, column: 7, }, end: Position { line: 456, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 456, column: 21, }, end: Position { line: 456, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 456, column: 25, }, end: Position { line: 456, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Prefix of the name of the generated ISO image file.\n", span: Span { start: Position { line: 457, column: 1, }, end: Position { line: 458, column: 7, }, }, }, ), ], span: Span { start: Position { line: 456, column: 31, }, end: Position { line: 458, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 454, column: 37, }, end: Position { line: 459, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 461, column: 5, }, end: Position { line: 461, column: 13, }, }, }, ), Raw( PartRaw { content: "compressImage", span: Span { start: Position { line: 461, column: 14, }, end: Position { line: 461, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 461, column: 30, }, end: Position { line: 461, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 462, column: 7, }, end: Position { line: 462, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 462, column: 17, }, end: Position { line: 462, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 463, column: 7, }, end: Position { line: 463, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 463, column: 21, }, end: Position { line: 463, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 463, column: 25, }, end: Position { line: 463, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether the ISO image should be compressed using\n{command}`zstd`.\n", span: Span { start: Position { line: 464, column: 1, }, end: Position { line: 466, column: 7, }, }, }, ), ], span: Span { start: Position { line: 463, column: 31, }, end: Position { line: 466, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 461, column: 39, }, end: Position { line: 467, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 469, column: 5, }, end: Position { line: 469, column: 13, }, }, }, ), Raw( PartRaw { content: "squashfsCompression", span: Span { start: Position { line: 469, column: 14, }, end: Position { line: 469, column: 33, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 469, column: 36, }, end: Position { line: 469, column: 44, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 470, column: 7, }, end: Position { line: 470, column: 14, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 470, column: 22, }, end: Position { line: 470, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 470, column: 27, }, end: Position { line: 470, column: 33, }, }, }, ), Raw( PartRaw { content: "targetPlatform", span: Span { start: Position { line: 470, column: 34, }, end: Position { line: 470, column: 48, }, }, }, ), ], default: None, }, ), target: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "xz -Xdict-size 100% ", span: Span { start: Position { line: 470, column: 51, }, end: Position { line: 470, column: 71, }, }, }, ), ], span: Span { start: Position { line: 470, column: 50, }, end: Position { line: 470, column: 72, }, }, }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 471, column: 19, }, end: Position { line: 471, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 471, column: 23, }, end: Position { line: 471, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "isx86", span: Span { start: Position { line: 471, column: 38, }, end: Position { line: 471, column: 43, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-Xbcj x86", span: Span { start: Position { line: 471, column: 45, }, end: Position { line: 471, column: 54, }, }, }, ), ], span: Span { start: Position { line: 471, column: 44, }, end: Position { line: 471, column: 55, }, }, }, ), ], }, ), }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 473, column: 19, }, end: Position { line: 473, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 473, column: 23, }, end: Position { line: 473, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "isAarch", span: Span { start: Position { line: 473, column: 38, }, end: Position { line: 473, column: 45, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-Xbcj arm", span: Span { start: Position { line: 473, column: 47, }, end: Position { line: 473, column: 56, }, }, }, ), ], span: Span { start: Position { line: 473, column: 46, }, end: Position { line: 473, column: 57, }, }, }, ), ], }, ), }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 474, column: 19, }, end: Position { line: 474, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 474, column: 23, }, end: Position { line: 474, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "isPower", span: Span { start: Position { line: 474, column: 39, }, end: Position { line: 474, column: 46, }, }, }, ), operator: LogicalAnd, right: Identifier( Identifier { id: "is32bit", span: Span { start: Position { line: 474, column: 50, }, end: Position { line: 474, column: 57, }, }, }, ), }, ), operator: LogicalAnd, right: Identifier( Identifier { id: "isBigEndian", span: Span { start: Position { line: 474, column: 61, }, end: Position { line: 474, column: 72, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "-Xbcj powerpc", span: Span { start: Position { line: 474, column: 75, }, end: Position { line: 474, column: 88, }, }, }, ), ], span: Span { start: Position { line: 474, column: 74, }, end: Position { line: 474, column: 89, }, }, }, ), ], }, ), }, ), operator: Addition, right: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 475, column: 19, }, end: Position { line: 475, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "optionalString", span: Span { start: Position { line: 475, column: 23, }, end: Position { line: 475, column: 37, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "isSparc", span: Span { start: Position { line: 475, column: 39, }, end: Position { line: 475, column: 46, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-Xbcj sparc", span: Span { start: Position { line: 475, column: 49, }, end: Position { line: 475, column: 60, }, }, }, ), ], span: Span { start: Position { line: 475, column: 48, }, end: Position { line: 475, column: 61, }, }, }, ), ], }, ), }, ), span: Span { start: Position { line: 470, column: 17, }, end: Position { line: 475, column: 61, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 476, column: 7, }, end: Position { line: 476, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 476, column: 21, }, end: Position { line: 476, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 476, column: 25, }, end: Position { line: 476, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Compression settings to use for the squashfs nix store.\n", span: Span { start: Position { line: 477, column: 1, }, end: Position { line: 478, column: 7, }, }, }, ), ], span: Span { start: Position { line: 476, column: 31, }, end: Position { line: 478, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 479, column: 7, }, end: Position { line: 479, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "zstd -Xcompression-level 6", span: Span { start: Position { line: 479, column: 18, }, end: Position { line: 479, column: 44, }, }, }, ), ], span: Span { start: Position { line: 479, column: 17, }, end: Position { line: 479, column: 45, }, }, }, ), }, ), ], span: Span { start: Position { line: 469, column: 45, }, end: Position { line: 480, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 482, column: 5, }, end: Position { line: 482, column: 13, }, }, }, ), Raw( PartRaw { content: "edition", span: Span { start: Position { line: 482, column: 14, }, end: Position { line: 482, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 482, column: 24, }, end: Position { line: 482, column: 32, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 483, column: 7, }, end: Position { line: 483, column: 14, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 483, column: 17, }, end: Position { line: 483, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 484, column: 7, }, end: Position { line: 484, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 484, column: 21, }, end: Position { line: 484, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 484, column: 25, }, end: Position { line: 484, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies which edition string to use in the volume ID of the generated\nISO image.\n", span: Span { start: Position { line: 485, column: 1, }, end: Position { line: 487, column: 7, }, }, }, ), ], span: Span { start: Position { line: 484, column: 31, }, end: Position { line: 487, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 482, column: 33, }, end: Position { line: 488, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 490, column: 5, }, end: Position { line: 490, column: 13, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 490, column: 14, }, end: Position { line: 490, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 490, column: 25, }, end: Position { line: 490, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 492, column: 7, }, end: Position { line: 492, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 492, column: 18, }, end: Position { line: 492, column: 102, }, }, }, ), Interpolation( PartInterpolation { expression: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalString", span: Span { start: Position { line: 492, column: 25, }, end: Position { line: 492, column: 39, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 492, column: 41, }, end: Position { line: 492, column: 47, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 492, column: 48, }, end: Position { line: 492, column: 56, }, }, }, ), Raw( PartRaw { content: "edition", span: Span { start: Position { line: 492, column: 57, }, end: Position { line: 492, column: 64, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: String( String_ { parts: [], span: Span { start: Position { line: 492, column: 68, }, end: Position { line: 492, column: 70, }, }, }, ), }, ), String( String_ { parts: [ Raw( PartRaw { content: "-", span: Span { start: Position { line: 492, column: 73, }, end: Position { line: 492, column: 100, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 492, column: 76, }, end: Position { line: 492, column: 82, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 492, column: 83, }, end: Position { line: 492, column: 91, }, }, }, ), Raw( PartRaw { content: "edition", span: Span { start: Position { line: 492, column: 92, }, end: Position { line: 492, column: 99, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 492, column: 72, }, end: Position { line: 492, column: 101, }, }, }, ), ], }, ), }, ), Raw( PartRaw { content: "-", span: Span { start: Position { line: 492, column: 18, }, end: Position { line: 492, column: 103, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 492, column: 105, }, end: Position { line: 492, column: 111, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 492, column: 112, }, end: Position { line: 492, column: 118, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 492, column: 119, }, end: Position { line: 492, column: 124, }, }, }, ), Raw( PartRaw { content: "release", span: Span { start: Position { line: 492, column: 125, }, end: Position { line: 492, column: 132, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "-", span: Span { start: Position { line: 492, column: 18, }, end: Position { line: 492, column: 134, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 492, column: 136, }, end: Position { line: 492, column: 140, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 492, column: 141, }, end: Position { line: 492, column: 147, }, }, }, ), Raw( PartRaw { content: "hostPlatform", span: Span { start: Position { line: 492, column: 148, }, end: Position { line: 492, column: 160, }, }, }, ), Raw( PartRaw { content: "uname", span: Span { start: Position { line: 492, column: 161, }, end: Position { line: 492, column: 166, }, }, }, ), Raw( PartRaw { content: "processor", span: Span { start: Position { line: 492, column: 167, }, end: Position { line: 492, column: 176, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 492, column: 17, }, end: Position { line: 492, column: 178, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 493, column: 7, }, end: Position { line: 493, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 493, column: 21, }, end: Position { line: 493, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 493, column: 25, }, end: Position { line: 493, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the label or volume ID of the generated ISO image.\nNote that the label is used by stage 1 of the boot process to\nmount the CD, so it should be reasonably distinctive.\n", span: Span { start: Position { line: 494, column: 1, }, end: Position { line: 497, column: 7, }, }, }, ), ], span: Span { start: Position { line: 493, column: 31, }, end: Position { line: 497, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 490, column: 34, }, end: Position { line: 498, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 500, column: 5, }, end: Position { line: 500, column: 13, }, }, }, ), Raw( PartRaw { content: "contents", span: Span { start: Position { line: 500, column: 14, }, end: Position { line: 500, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 500, column: 25, }, end: Position { line: 500, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 501, column: 7, }, end: Position { line: 501, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 501, column: 17, }, end: Position { line: 501, column: 34, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "[ { source = pkgs.memtest86 + \"/memtest.bin\";\n target = \"boot/memtest.bin\";\n }\n]\n", span: Span { start: Position { line: 502, column: 1, }, end: Position { line: 506, column: 7, }, }, }, ), ], span: Span { start: Position { line: 501, column: 35, }, end: Position { line: 506, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 507, column: 7, }, end: Position { line: 507, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 507, column: 21, }, end: Position { line: 507, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 507, column: 25, }, end: Position { line: 507, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "This option lists files to be copied to fixed locations in the\ngenerated ISO image.\n", span: Span { start: Position { line: 508, column: 1, }, end: Position { line: 510, column: 7, }, }, }, ), ], span: Span { start: Position { line: 507, column: 31, }, end: Position { line: 510, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 500, column: 34, }, end: Position { line: 511, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 513, column: 5, }, end: Position { line: 513, column: 13, }, }, }, ), Raw( PartRaw { content: "storeContents", span: Span { start: Position { line: 513, column: 14, }, end: Position { line: 513, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 513, column: 30, }, end: Position { line: 513, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 514, column: 7, }, end: Position { line: 514, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 514, column: 17, }, end: Position { line: 514, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "[ pkgs.stdenv ]", span: Span { start: Position { line: 514, column: 36, }, end: Position { line: 514, column: 51, }, }, }, ), ], span: Span { start: Position { line: 514, column: 35, }, end: Position { line: 514, column: 52, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 515, column: 7, }, end: Position { line: 515, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 515, column: 21, }, end: Position { line: 515, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 515, column: 25, }, end: Position { line: 515, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "This option lists additional derivations to be included in the\nNix store in the generated ISO image.\n", span: Span { start: Position { line: 516, column: 1, }, end: Position { line: 518, column: 7, }, }, }, ), ], span: Span { start: Position { line: 515, column: 31, }, end: Position { line: 518, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 513, column: 39, }, end: Position { line: 519, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 521, column: 5, }, end: Position { line: 521, column: 13, }, }, }, ), Raw( PartRaw { content: "includeSystemBuildDependencies", span: Span { start: Position { line: 521, column: 14, }, end: Position { line: 521, column: 44, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 521, column: 47, }, end: Position { line: 521, column: 55, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 522, column: 7, }, end: Position { line: 522, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 522, column: 17, }, end: Position { line: 522, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 523, column: 7, }, end: Position { line: 523, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 523, column: 21, }, end: Position { line: 523, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 523, column: 25, }, end: Position { line: 523, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set this option to include all the needed sources etc in the\nimage. It significantly increases image size. Use that when\nyou want to be able to keep all the sources needed to build your\nsystem or when you are going to install the system on a computer\nwith slow or non-existent network connection.\n", span: Span { start: Position { line: 524, column: 1, }, end: Position { line: 529, column: 7, }, }, }, ), ], span: Span { start: Position { line: 523, column: 31, }, end: Position { line: 529, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 521, column: 56, }, end: Position { line: 530, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 532, column: 5, }, end: Position { line: 532, column: 13, }, }, }, ), Raw( PartRaw { content: "makeEfiBootable", span: Span { start: Position { line: 532, column: 14, }, end: Position { line: 532, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 532, column: 32, }, end: Position { line: 532, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 533, column: 7, }, end: Position { line: 533, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 533, column: 17, }, end: Position { line: 533, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 534, column: 7, }, end: Position { line: 534, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 534, column: 21, }, end: Position { line: 534, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 534, column: 25, }, end: Position { line: 534, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether the ISO image should be an efi-bootable volume.\n", span: Span { start: Position { line: 535, column: 1, }, end: Position { line: 536, column: 7, }, }, }, ), ], span: Span { start: Position { line: 534, column: 31, }, end: Position { line: 536, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 532, column: 41, }, end: Position { line: 537, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 539, column: 5, }, end: Position { line: 539, column: 13, }, }, }, ), Raw( PartRaw { content: "makeUsbBootable", span: Span { start: Position { line: 539, column: 14, }, end: Position { line: 539, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 539, column: 32, }, end: Position { line: 539, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 540, column: 7, }, end: Position { line: 540, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 540, column: 17, }, end: Position { line: 540, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 541, column: 7, }, end: Position { line: 541, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 541, column: 21, }, end: Position { line: 541, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 541, column: 25, }, end: Position { line: 541, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Whether the ISO image should be bootable from CD as well as USB.\n", span: Span { start: Position { line: 542, column: 1, }, end: Position { line: 543, column: 7, }, }, }, ), ], span: Span { start: Position { line: 541, column: 31, }, end: Position { line: 543, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 539, column: 41, }, end: Position { line: 544, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 546, column: 5, }, end: Position { line: 546, column: 13, }, }, }, ), Raw( PartRaw { content: "efiSplashImage", span: Span { start: Position { line: 546, column: 14, }, end: Position { line: 546, column: 28, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 546, column: 31, }, end: Position { line: 546, column: 39, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 547, column: 7, }, end: Position { line: 547, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 547, column: 17, }, end: Position { line: 547, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fetchurl", span: Span { start: Position { line: 547, column: 22, }, end: Position { line: 547, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "url", span: Span { start: Position { line: 548, column: 11, }, end: Position { line: 548, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/efi-background.png", span: Span { start: Position { line: 548, column: 18, }, end: Position { line: 548, column: 142, }, }, }, ), ], span: Span { start: Position { line: 548, column: 17, }, end: Position { line: 548, column: 143, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sha256", span: Span { start: Position { line: 549, column: 11, }, end: Position { line: 549, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "18lfwmp8yq923322nlb9gxrh5qikj1wsk6g5qvdh31c4h5b1538x", span: Span { start: Position { line: 549, column: 21, }, end: Position { line: 549, column: 73, }, }, }, ), ], span: Span { start: Position { line: 549, column: 20, }, end: Position { line: 549, column: 74, }, }, }, ), }, ), ], span: Span { start: Position { line: 547, column: 31, }, end: Position { line: 550, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 551, column: 7, }, end: Position { line: 551, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 551, column: 21, }, end: Position { line: 551, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 551, column: 25, }, end: Position { line: 551, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The splash image to use in the EFI bootloader.\n", span: Span { start: Position { line: 552, column: 1, }, end: Position { line: 553, column: 7, }, }, }, ), ], span: Span { start: Position { line: 551, column: 31, }, end: Position { line: 553, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 546, column: 40, }, end: Position { line: 554, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 556, column: 5, }, end: Position { line: 556, column: 13, }, }, }, ), Raw( PartRaw { content: "splashImage", span: Span { start: Position { line: 556, column: 14, }, end: Position { line: 556, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 556, column: 28, }, end: Position { line: 556, column: 36, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 557, column: 7, }, end: Position { line: 557, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 557, column: 17, }, end: Position { line: 557, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fetchurl", span: Span { start: Position { line: 557, column: 22, }, end: Position { line: 557, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "url", span: Span { start: Position { line: 558, column: 11, }, end: Position { line: 558, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/isolinux/bios-boot.png", span: Span { start: Position { line: 558, column: 18, }, end: Position { line: 558, column: 146, }, }, }, ), ], span: Span { start: Position { line: 558, column: 17, }, end: Position { line: 558, column: 147, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "sha256", span: Span { start: Position { line: 559, column: 11, }, end: Position { line: 559, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "1wp822zrhbg4fgfbwkr7cbkr4labx477209agzc0hr6k62fr6rxd", span: Span { start: Position { line: 559, column: 21, }, end: Position { line: 559, column: 73, }, }, }, ), ], span: Span { start: Position { line: 559, column: 20, }, end: Position { line: 559, column: 74, }, }, }, ), }, ), ], span: Span { start: Position { line: 557, column: 31, }, end: Position { line: 560, column: 10, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 561, column: 7, }, end: Position { line: 561, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 561, column: 21, }, end: Position { line: 561, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 561, column: 25, }, end: Position { line: 561, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The splash image to use in the legacy-boot bootloader.\n", span: Span { start: Position { line: 562, column: 1, }, end: Position { line: 563, column: 7, }, }, }, ), ], span: Span { start: Position { line: 561, column: 31, }, end: Position { line: 563, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 556, column: 37, }, end: Position { line: 564, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 566, column: 5, }, end: Position { line: 566, column: 13, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 566, column: 14, }, end: Position { line: 566, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 566, column: 26, }, end: Position { line: 566, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 567, column: 7, }, end: Position { line: 567, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 567, column: 17, }, end: Position { line: 567, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nixos-grub2-theme", span: Span { start: Position { line: 567, column: 22, }, end: Position { line: 567, column: 39, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 568, column: 7, }, end: Position { line: 568, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 568, column: 14, }, end: Position { line: 568, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 568, column: 20, }, end: Position { line: 568, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 568, column: 28, }, end: Position { line: 568, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "either", span: Span { start: Position { line: 568, column: 34, }, end: Position { line: 568, column: 40, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 568, column: 41, }, end: Position { line: 568, column: 46, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 568, column: 47, }, end: Position { line: 568, column: 51, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 568, column: 52, }, end: Position { line: 568, column: 57, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 568, column: 58, }, end: Position { line: 568, column: 65, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 569, column: 7, }, end: Position { line: 569, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 569, column: 21, }, end: Position { line: 569, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 569, column: 25, }, end: Position { line: 569, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The grub2 theme used for UEFI boot.\n", span: Span { start: Position { line: 570, column: 1, }, end: Position { line: 571, column: 7, }, }, }, ), ], span: Span { start: Position { line: 569, column: 31, }, end: Position { line: 571, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 566, column: 35, }, end: Position { line: 572, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 574, column: 5, }, end: Position { line: 574, column: 13, }, }, }, ), Raw( PartRaw { content: "syslinuxTheme", span: Span { start: Position { line: 574, column: 14, }, end: Position { line: 574, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 574, column: 30, }, end: Position { line: 574, column: 38, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 575, column: 7, }, end: Position { line: 575, column: 14, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "MENU TITLE NixOS\nMENU RESOLUTION 800 600\nMENU CLEAR\nMENU ROWS 6\nMENU CMDLINEROW -4\nMENU TIMEOUTROW -3\nMENU TABMSGROW -2\nMENU HELPMSGROW -1\nMENU HELPMSGENDROW -1\nMENU MARGIN 0\n\n# FG:AARRGGBB BG:AARRGGBB shadow\nMENU COLOR BORDER 30;44 #00000000 #00000000 none\nMENU COLOR SCREEN 37;40 #FF000000 #00E2E8FF none\nMENU COLOR TABMSG 31;40 #80000000 #00000000 none\nMENU COLOR TIMEOUT 1;37;40 #FF000000 #00000000 none\nMENU COLOR TIMEOUT_MSG 37;40 #FF000000 #00000000 none\nMENU COLOR CMDMARK 1;36;40 #FF000000 #00000000 none\nMENU COLOR CMDLINE 37;40 #FF000000 #00000000 none\nMENU COLOR TITLE 1;36;44 #00000000 #00000000 none\nMENU COLOR UNSEL 37;44 #FF000000 #00000000 none\nMENU COLOR SEL 7;37;40 #FFFFFFFF #FF5277C3 std\n", span: Span { start: Position { line: 576, column: 1, }, end: Position { line: 598, column: 7, }, }, }, ), ], span: Span { start: Position { line: 575, column: 17, }, end: Position { line: 598, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 599, column: 7, }, end: Position { line: 599, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 599, column: 14, }, end: Position { line: 599, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 599, column: 20, }, end: Position { line: 599, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 600, column: 7, }, end: Position { line: 600, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 600, column: 21, }, end: Position { line: 600, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 600, column: 25, }, end: Position { line: 600, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The syslinux theme used for BIOS boot.\n", span: Span { start: Position { line: 601, column: 1, }, end: Position { line: 602, column: 7, }, }, }, ), ], span: Span { start: Position { line: 600, column: 31, }, end: Position { line: 602, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 574, column: 39, }, end: Position { line: 603, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 605, column: 5, }, end: Position { line: 605, column: 13, }, }, }, ), Raw( PartRaw { content: "appendToMenuLabel", span: Span { start: Position { line: 605, column: 14, }, end: Position { line: 605, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 605, column: 34, }, end: Position { line: 605, column: 42, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 606, column: 7, }, end: Position { line: 606, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: " Installer", span: Span { start: Position { line: 606, column: 18, }, end: Position { line: 606, column: 28, }, }, }, ), ], span: Span { start: Position { line: 606, column: 17, }, end: Position { line: 606, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 607, column: 7, }, end: Position { line: 607, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: " Live System", span: Span { start: Position { line: 607, column: 18, }, end: Position { line: 607, column: 30, }, }, }, ), ], span: Span { start: Position { line: 607, column: 17, }, end: Position { line: 607, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 608, column: 7, }, end: Position { line: 608, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 608, column: 21, }, end: Position { line: 608, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 608, column: 25, }, end: Position { line: 608, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The string to append after the menu label for the NixOS system.\nThis will be directly appended (without whitespace) to the NixOS version\nstring, like for example if it is set to `XXX`:\n\n`NixOS 99.99-pre666XXX`\n", span: Span { start: Position { line: 609, column: 1, }, end: Position { line: 614, column: 7, }, }, }, ), ], span: Span { start: Position { line: 608, column: 31, }, end: Position { line: 614, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 605, column: 43, }, end: Position { line: 615, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 445, column: 13, }, end: Position { line: 617, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 621, column: 3, }, end: Position { line: 621, column: 9, }, }, }, ), Raw( PartRaw { content: "lib", span: Span { start: Position { line: 621, column: 10, }, end: Position { line: 621, column: 13, }, }, }, ), Raw( PartRaw { content: "isoFileSystems", span: Span { start: Position { line: 621, column: 14, }, end: Position { line: 621, column: 28, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 622, column: 6, }, end: Position { line: 622, column: 7, }, }, }, ), ], span: Span { start: Position { line: 622, column: 5, }, end: Position { line: 622, column: 8, }, }, }, ), }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkImageMediaOverride", span: Span { start: Position { line: 622, column: 11, }, end: Position { line: 622, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fsType", span: Span { start: Position { line: 624, column: 9, }, end: Position { line: 624, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "tmpfs", span: Span { start: Position { line: 624, column: 19, }, end: Position { line: 624, column: 24, }, }, }, ), ], span: Span { start: Position { line: 624, column: 18, }, end: Position { line: 624, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 625, column: 9, }, end: Position { line: 625, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "mode=0755", span: Span { start: Position { line: 625, column: 22, }, end: Position { line: 625, column: 31, }, }, }, ), ], span: Span { start: Position { line: 625, column: 21, }, end: Position { line: 625, column: 32, }, }, }, ), ], span: Span { start: Position { line: 625, column: 19, }, end: Position { line: 625, column: 34, }, }, }, ), }, ), ], span: Span { start: Position { line: 623, column: 7, }, end: Position { line: 626, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [ Raw( PartRaw { content: "/iso", span: Span { start: Position { line: 631, column: 6, }, end: Position { line: 631, column: 10, }, }, }, ), ], span: Span { start: Position { line: 631, column: 5, }, end: Position { line: 631, column: 11, }, }, }, ), }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkImageMediaOverride", span: Span { start: Position { line: 631, column: 14, }, end: Position { line: 631, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "device", span: Span { start: Position { line: 632, column: 9, }, end: Position { line: 632, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/dev/root", span: Span { start: Position { line: 632, column: 19, }, end: Position { line: 632, column: 28, }, }, }, ), ], span: Span { start: Position { line: 632, column: 18, }, end: Position { line: 632, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "neededForBoot", span: Span { start: Position { line: 633, column: 9, }, end: Position { line: 633, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 633, column: 25, }, end: Position { line: 633, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "noCheck", span: Span { start: Position { line: 634, column: 9, }, end: Position { line: 634, column: 16, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 634, column: 19, }, end: Position { line: 634, column: 23, }, }, }, ), }, ), ], span: Span { start: Position { line: 632, column: 7, }, end: Position { line: 635, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [ Raw( PartRaw { content: "/nix/.ro-store", span: Span { start: Position { line: 639, column: 6, }, end: Position { line: 639, column: 20, }, }, }, ), ], span: Span { start: Position { line: 639, column: 5, }, end: Position { line: 639, column: 21, }, }, }, ), }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkImageMediaOverride", span: Span { start: Position { line: 639, column: 24, }, end: Position { line: 639, column: 44, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fsType", span: Span { start: Position { line: 640, column: 9, }, end: Position { line: 640, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "squashfs", span: Span { start: Position { line: 640, column: 19, }, end: Position { line: 640, column: 27, }, }, }, ), ], span: Span { start: Position { line: 640, column: 18, }, end: Position { line: 640, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "device", span: Span { start: Position { line: 641, column: 9, }, end: Position { line: 641, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/iso/nix-store.squashfs", span: Span { start: Position { line: 641, column: 19, }, end: Position { line: 641, column: 42, }, }, }, ), ], span: Span { start: Position { line: 641, column: 18, }, end: Position { line: 641, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 642, column: 9, }, end: Position { line: 642, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "loop", span: Span { start: Position { line: 642, column: 22, }, end: Position { line: 642, column: 26, }, }, }, ), ], span: Span { start: Position { line: 642, column: 21, }, end: Position { line: 642, column: 27, }, }, }, ), ], span: Span { start: Position { line: 642, column: 19, }, end: Position { line: 642, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "neededForBoot", span: Span { start: Position { line: 643, column: 9, }, end: Position { line: 643, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 643, column: 25, }, end: Position { line: 643, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 640, column: 7, }, end: Position { line: 644, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [ Raw( PartRaw { content: "/nix/.rw-store", span: Span { start: Position { line: 646, column: 6, }, end: Position { line: 646, column: 20, }, }, }, ), ], span: Span { start: Position { line: 646, column: 5, }, end: Position { line: 646, column: 21, }, }, }, ), }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkImageMediaOverride", span: Span { start: Position { line: 646, column: 24, }, end: Position { line: 646, column: 44, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fsType", span: Span { start: Position { line: 647, column: 9, }, end: Position { line: 647, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "tmpfs", span: Span { start: Position { line: 647, column: 19, }, end: Position { line: 647, column: 24, }, }, }, ), ], span: Span { start: Position { line: 647, column: 18, }, end: Position { line: 647, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 648, column: 9, }, end: Position { line: 648, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "mode=0755", span: Span { start: Position { line: 648, column: 22, }, end: Position { line: 648, column: 31, }, }, }, ), ], span: Span { start: Position { line: 648, column: 21, }, end: Position { line: 648, column: 32, }, }, }, ), ], span: Span { start: Position { line: 648, column: 19, }, end: Position { line: 648, column: 34, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "neededForBoot", span: Span { start: Position { line: 649, column: 9, }, end: Position { line: 649, column: 22, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 649, column: 25, }, end: Position { line: 649, column: 29, }, }, }, ), }, ), ], span: Span { start: Position { line: 647, column: 7, }, end: Position { line: 650, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Expression( PartExpression { expression: String( String_ { parts: [ Raw( PartRaw { content: "/nix/store", span: Span { start: Position { line: 652, column: 6, }, end: Position { line: 652, column: 16, }, }, }, ), ], span: Span { start: Position { line: 652, column: 5, }, end: Position { line: 652, column: 17, }, }, }, ), }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkImageMediaOverride", span: Span { start: Position { line: 652, column: 20, }, end: Position { line: 652, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fsType", span: Span { start: Position { line: 653, column: 9, }, end: Position { line: 653, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "overlay", span: Span { start: Position { line: 653, column: 19, }, end: Position { line: 653, column: 26, }, }, }, ), ], span: Span { start: Position { line: 653, column: 18, }, end: Position { line: 653, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "device", span: Span { start: Position { line: 654, column: 9, }, end: Position { line: 654, column: 15, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "overlay", span: Span { start: Position { line: 654, column: 19, }, end: Position { line: 654, column: 26, }, }, }, ), ], span: Span { start: Position { line: 654, column: 18, }, end: Position { line: 654, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 655, column: 9, }, end: Position { line: 655, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "lowerdir=/nix/.ro-store", span: Span { start: Position { line: 656, column: 12, }, end: Position { line: 656, column: 35, }, }, }, ), ], span: Span { start: Position { line: 656, column: 11, }, end: Position { line: 656, column: 36, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "upperdir=/nix/.rw-store/store", span: Span { start: Position { line: 657, column: 12, }, end: Position { line: 657, column: 41, }, }, }, ), ], span: Span { start: Position { line: 657, column: 11, }, end: Position { line: 657, column: 42, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "workdir=/nix/.rw-store/work", span: Span { start: Position { line: 658, column: 12, }, end: Position { line: 658, column: 39, }, }, }, ), ], span: Span { start: Position { line: 658, column: 11, }, end: Position { line: 658, column: 40, }, }, }, ), ], span: Span { start: Position { line: 655, column: 19, }, end: Position { line: 659, column: 10, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "depends", span: Span { start: Position { line: 660, column: 9, }, end: Position { line: 660, column: 16, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "/nix/.ro-store", span: Span { start: Position { line: 661, column: 12, }, end: Position { line: 661, column: 26, }, }, }, ), ], span: Span { start: Position { line: 661, column: 11, }, end: Position { line: 661, column: 27, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "/nix/.rw-store/store", span: Span { start: Position { line: 662, column: 12, }, end: Position { line: 662, column: 32, }, }, }, ), ], span: Span { start: Position { line: 662, column: 11, }, end: Position { line: 662, column: 33, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "/nix/.rw-store/work", span: Span { start: Position { line: 663, column: 12, }, end: Position { line: 663, column: 31, }, }, }, ), ], span: Span { start: Position { line: 663, column: 11, }, end: Position { line: 663, column: 32, }, }, }, ), ], span: Span { start: Position { line: 660, column: 19, }, end: Position { line: 664, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 653, column: 7, }, end: Position { line: 665, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 621, column: 31, }, end: Position { line: 666, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 668, column: 3, }, end: Position { line: 668, column: 9, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertions", span: Span { start: Position { line: 669, column: 5, }, end: Position { line: 669, column: 15, }, }, }, ), ], to: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 671, column: 9, }, end: Position { line: 671, column: 18, }, }, }, ), ], to: UnaryOperation( UnaryOperation { operator: Not, operand: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 671, column: 23, }, end: Position { line: 671, column: 35, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 671, column: 36, }, end: Position { line: 671, column: 42, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 671, column: 43, }, end: Position { line: 671, column: 51, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 671, column: 52, }, end: Position { line: 671, column: 60, }, }, }, ), ], default: None, }, ), ], }, ), operator: GreaterThan, right: Integer( Integer { value: "32", span: Span { start: Position { line: 671, column: 63, }, end: Position { line: 671, column: 65, }, }, }, ), }, ), span: Span { start: Position { line: 671, column: 21, }, end: Position { line: 671, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 674, column: 9, }, end: Position { line: 674, column: 16, }, }, }, ), ], to: LetIn( LetIn { bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "length", span: Span { start: Position { line: 675, column: 11, }, end: Position { line: 675, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "stringLength", span: Span { start: Position { line: 675, column: 20, }, end: Position { line: 675, column: 32, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 675, column: 33, }, end: Position { line: 675, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 675, column: 40, }, end: Position { line: 675, column: 48, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 675, column: 49, }, end: Position { line: 675, column: 57, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "howmany", span: Span { start: Position { line: 676, column: 11, }, end: Position { line: 676, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 676, column: 21, }, end: Position { line: 676, column: 29, }, }, }, ), arguments: [ Identifier( Identifier { id: "length", span: Span { start: Position { line: 676, column: 30, }, end: Position { line: 676, column: 36, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "toomany", span: Span { start: Position { line: 677, column: 11, }, end: Position { line: 677, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 677, column: 21, }, end: Position { line: 677, column: 29, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "length", span: Span { start: Position { line: 677, column: 31, }, end: Position { line: 677, column: 37, }, }, }, ), operator: Subtraction, right: Integer( Integer { value: "32", span: Span { start: Position { line: 677, column: 40, }, end: Position { line: 677, column: 42, }, }, }, ), }, ), ], }, ), }, ), ], target: String( String_ { parts: [ Raw( PartRaw { content: "isoImage.volumeID ", span: Span { start: Position { line: 679, column: 10, }, end: Position { line: 679, column: 55, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 679, column: 30, }, end: Position { line: 679, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 679, column: 37, }, end: Position { line: 679, column: 45, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 679, column: 46, }, end: Position { line: 679, column: 54, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " is ", span: Span { start: Position { line: 679, column: 10, }, end: Position { line: 679, column: 59, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "howmany", span: Span { start: Position { line: 679, column: 61, }, end: Position { line: 679, column: 68, }, }, }, ), }, ), Raw( PartRaw { content: " characters. That is ", span: Span { start: Position { line: 679, column: 10, }, end: Position { line: 679, column: 90, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "toomany", span: Span { start: Position { line: 679, column: 92, }, end: Position { line: 679, column: 99, }, }, }, ), }, ), Raw( PartRaw { content: " characters longer than the limit of 32.", span: Span { start: Position { line: 679, column: 10, }, end: Position { line: 679, column: 140, }, }, }, ), ], span: Span { start: Position { line: 679, column: 9, }, end: Position { line: 679, column: 141, }, }, }, ), span: Span { start: Position { line: 674, column: 19, }, end: Position { line: 679, column: 141, }, }, }, ), }, ), ], span: Span { start: Position { line: 670, column: 7, }, end: Position { line: 680, column: 8, }, }, }, ), ], span: Span { start: Position { line: 669, column: 18, }, end: Position { line: 681, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 683, column: 5, }, end: Position { line: 683, column: 9, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 683, column: 10, }, end: Position { line: 683, column: 16, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 683, column: 17, }, end: Position { line: 683, column: 21, }, }, }, ), Raw( PartRaw { content: "version", span: Span { start: Position { line: 683, column: 22, }, end: Position { line: 683, column: 29, }, }, }, ), ], to: Integer( Integer { value: "2", span: Span { start: Position { line: 683, column: 32, }, end: Position { line: 683, column: 33, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 687, column: 5, }, end: Position { line: 687, column: 9, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 687, column: 10, }, end: Position { line: 687, column: 16, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 687, column: 17, }, end: Position { line: 687, column: 21, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 687, column: 22, }, end: Position { line: 687, column: 28, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 687, column: 31, }, end: Position { line: 687, column: 36, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 689, column: 5, }, end: Position { line: 689, column: 16, }, }, }, ), Raw( PartRaw { content: "systemPackages", span: Span { start: Position { line: 689, column: 17, }, end: Position { line: 689, column: 31, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 689, column: 37, }, end: Position { line: 689, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2", span: Span { start: Position { line: 689, column: 46, }, end: Position { line: 689, column: 51, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "grubPkgs", span: Span { start: Position { line: 689, column: 52, }, end: Position { line: 689, column: 60, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "grub2_efi", span: Span { start: Position { line: 689, column: 61, }, end: Position { line: 689, column: 70, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 689, column: 35, }, end: Position { line: 689, column: 72, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 690, column: 10, }, end: Position { line: 690, column: 18, }, }, }, ), arguments: [ Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 690, column: 19, }, end: Position { line: 690, column: 33, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 690, column: 34, }, end: Position { line: 690, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "syslinux", span: Span { start: Position { line: 690, column: 39, }, end: Position { line: 690, column: 47, }, }, }, ), ], default: None, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 701, column: 5, }, end: Position { line: 701, column: 9, }, }, }, ), Raw( PartRaw { content: "kernelParams", span: Span { start: Position { line: 701, column: 10, }, end: Position { line: 701, column: 22, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "root=LABEL=", span: Span { start: Position { line: 702, column: 10, }, end: Position { line: 702, column: 48, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 702, column: 23, }, end: Position { line: 702, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 702, column: 30, }, end: Position { line: 702, column: 38, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 702, column: 39, }, end: Position { line: 702, column: 47, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 702, column: 9, }, end: Position { line: 702, column: 49, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "boot.shell_on_fail", span: Span { start: Position { line: 703, column: 10, }, end: Position { line: 703, column: 28, }, }, }, ), ], span: Span { start: Position { line: 703, column: 9, }, end: Position { line: 703, column: 29, }, }, }, ), ], span: Span { start: Position { line: 702, column: 7, }, end: Position { line: 704, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fileSystems", span: Span { start: Position { line: 706, column: 5, }, end: Position { line: 706, column: 16, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 706, column: 19, }, end: Position { line: 706, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lib", span: Span { start: Position { line: 706, column: 26, }, end: Position { line: 706, column: 29, }, }, }, ), Raw( PartRaw { content: "isoFileSystems", span: Span { start: Position { line: 706, column: 30, }, end: Position { line: 706, column: 44, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 708, column: 5, }, end: Position { line: 708, column: 9, }, }, }, ), Raw( PartRaw { content: "initrd", span: Span { start: Position { line: 708, column: 10, }, end: Position { line: 708, column: 16, }, }, }, ), Raw( PartRaw { content: "availableKernelModules", span: Span { start: Position { line: 708, column: 17, }, end: Position { line: 708, column: 39, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "squashfs", span: Span { start: Position { line: 708, column: 45, }, end: Position { line: 708, column: 53, }, }, }, ), ], span: Span { start: Position { line: 708, column: 44, }, end: Position { line: 708, column: 54, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "iso9660", span: Span { start: Position { line: 708, column: 56, }, end: Position { line: 708, column: 63, }, }, }, ), ], span: Span { start: Position { line: 708, column: 55, }, end: Position { line: 708, column: 64, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "uas", span: Span { start: Position { line: 708, column: 66, }, end: Position { line: 708, column: 69, }, }, }, ), ], span: Span { start: Position { line: 708, column: 65, }, end: Position { line: 708, column: 70, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "overlay", span: Span { start: Position { line: 708, column: 72, }, end: Position { line: 708, column: 79, }, }, }, ), ], span: Span { start: Position { line: 708, column: 71, }, end: Position { line: 708, column: 80, }, }, }, ), ], span: Span { start: Position { line: 708, column: 42, }, end: Position { line: 708, column: 82, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 710, column: 5, }, end: Position { line: 710, column: 9, }, }, }, ), Raw( PartRaw { content: "initrd", span: Span { start: Position { line: 710, column: 10, }, end: Position { line: 710, column: 16, }, }, }, ), Raw( PartRaw { content: "kernelModules", span: Span { start: Position { line: 710, column: 17, }, end: Position { line: 710, column: 30, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "loop", span: Span { start: Position { line: 710, column: 36, }, end: Position { line: 710, column: 40, }, }, }, ), ], span: Span { start: Position { line: 710, column: 35, }, end: Position { line: 710, column: 41, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "overlay", span: Span { start: Position { line: 710, column: 43, }, end: Position { line: 710, column: 50, }, }, }, ), ], span: Span { start: Position { line: 710, column: 42, }, end: Position { line: 710, column: 51, }, }, }, ), ], span: Span { start: Position { line: 710, column: 33, }, end: Position { line: 710, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 714, column: 5, }, end: Position { line: 714, column: 13, }, }, }, ), Raw( PartRaw { content: "storeContents", span: Span { start: Position { line: 714, column: 14, }, end: Position { line: 714, column: 27, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 715, column: 9, }, end: Position { line: 715, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 715, column: 16, }, end: Position { line: 715, column: 22, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 715, column: 23, }, end: Position { line: 715, column: 28, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 715, column: 29, }, end: Position { line: 715, column: 37, }, }, }, ), ], default: None, }, ), ], span: Span { start: Position { line: 715, column: 7, }, end: Position { line: 715, column: 39, }, }, }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optional", span: Span { start: Position { line: 716, column: 7, }, end: Position { line: 716, column: 15, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 716, column: 16, }, end: Position { line: 716, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 716, column: 23, }, end: Position { line: 716, column: 31, }, }, }, ), Raw( PartRaw { content: "includeSystemBuildDependencies", span: Span { start: Position { line: 716, column: 32, }, end: Position { line: 716, column: 62, }, }, }, ), ], default: None, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 717, column: 9, }, end: Position { line: 717, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 717, column: 16, }, end: Position { line: 717, column: 22, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 717, column: 23, }, end: Position { line: 717, column: 28, }, }, }, ), Raw( PartRaw { content: "toplevel", span: Span { start: Position { line: 717, column: 29, }, end: Position { line: 717, column: 37, }, }, }, ), Raw( PartRaw { content: "drvPath", span: Span { start: Position { line: 717, column: 38, }, end: Position { line: 717, column: 45, }, }, }, ), ], default: None, }, ), ], }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 720, column: 5, }, end: Position { line: 720, column: 11, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 720, column: 12, }, end: Position { line: 720, column: 17, }, }, }, ), Raw( PartRaw { content: "squashfsStore", span: Span { start: Position { line: 720, column: 18, }, end: Position { line: 720, column: 31, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 720, column: 34, }, end: Position { line: 720, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "callPackage", span: Span { start: Position { line: 720, column: 39, }, end: Position { line: 720, column: 50, }, }, }, ), ], default: None, }, ), arguments: [ Path( Path { parts: [ Raw( PartRaw { content: "../../../lib/make-squashfs.nix", span: Span { start: Position { line: 720, column: 51, }, end: Position { line: 720, column: 81, }, }, }, ), ], span: Span { start: Position { line: 720, column: 51, }, end: Position { line: 720, column: 81, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "storeContents", span: Span { start: Position { line: 721, column: 7, }, end: Position { line: 721, column: 20, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 721, column: 23, }, end: Position { line: 721, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 721, column: 30, }, end: Position { line: 721, column: 38, }, }, }, ), Raw( PartRaw { content: "storeContents", span: Span { start: Position { line: 721, column: 39, }, end: Position { line: 721, column: 52, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "comp", span: Span { start: Position { line: 722, column: 7, }, end: Position { line: 722, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 722, column: 14, }, end: Position { line: 722, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 722, column: 21, }, end: Position { line: 722, column: 29, }, }, }, ), Raw( PartRaw { content: "squashfsCompression", span: Span { start: Position { line: 722, column: 30, }, end: Position { line: 722, column: 49, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 720, column: 82, }, end: Position { line: 723, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 727, column: 5, }, end: Position { line: 727, column: 13, }, }, }, ), Raw( PartRaw { content: "contents", span: Span { start: Position { line: 727, column: 14, }, end: Position { line: 727, column: 22, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 729, column: 11, }, end: Position { line: 729, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 729, column: 20, }, end: Position { line: 729, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 729, column: 27, }, end: Position { line: 729, column: 31, }, }, }, ), Raw( PartRaw { content: "kernelPackages", span: Span { start: Position { line: 729, column: 32, }, end: Position { line: 729, column: 46, }, }, }, ), Raw( PartRaw { content: "kernel", span: Span { start: Position { line: 729, column: 47, }, end: Position { line: 729, column: 53, }, }, }, ), ], default: None, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 729, column: 57, }, end: Position { line: 729, column: 58, }, }, }, ), ], span: Span { start: Position { line: 729, column: 56, }, end: Position { line: 729, column: 59, }, }, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 729, column: 62, }, end: Position { line: 729, column: 68, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 729, column: 69, }, end: Position { line: 729, column: 75, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 729, column: 76, }, end: Position { line: 729, column: 80, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 729, column: 81, }, end: Position { line: 729, column: 87, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 729, column: 88, }, end: Position { line: 729, column: 98, }, }, }, ), ], default: None, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 730, column: 11, }, end: Position { line: 730, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "/boot/", span: Span { start: Position { line: 730, column: 21, }, end: Position { line: 730, column: 27, }, }, }, ), ], span: Span { start: Position { line: 730, column: 20, }, end: Position { line: 730, column: 28, }, }, }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 730, column: 31, }, end: Position { line: 730, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 730, column: 38, }, end: Position { line: 730, column: 44, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 730, column: 45, }, end: Position { line: 730, column: 49, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 730, column: 50, }, end: Position { line: 730, column: 56, }, }, }, ), Raw( PartRaw { content: "kernelFile", span: Span { start: Position { line: 730, column: 57, }, end: Position { line: 730, column: 67, }, }, }, ), ], default: None, }, ), }, ), }, ), ], span: Span { start: Position { line: 729, column: 9, }, end: Position { line: 731, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 732, column: 11, }, end: Position { line: 732, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 732, column: 20, }, end: Position { line: 732, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 732, column: 27, }, end: Position { line: 732, column: 33, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 732, column: 34, }, end: Position { line: 732, column: 39, }, }, }, ), Raw( PartRaw { content: "initialRamdisk", span: Span { start: Position { line: 732, column: 40, }, end: Position { line: 732, column: 54, }, }, }, ), ], default: None, }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/", span: Span { start: Position { line: 732, column: 58, }, end: Position { line: 732, column: 59, }, }, }, ), ], span: Span { start: Position { line: 732, column: 57, }, end: Position { line: 732, column: 60, }, }, }, ), }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 732, column: 63, }, end: Position { line: 732, column: 69, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 732, column: 70, }, end: Position { line: 732, column: 76, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 732, column: 77, }, end: Position { line: 732, column: 81, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 732, column: 82, }, end: Position { line: 732, column: 88, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 732, column: 89, }, end: Position { line: 732, column: 99, }, }, }, ), ], default: None, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 733, column: 11, }, end: Position { line: 733, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: String( String_ { parts: [ Raw( PartRaw { content: "/boot/", span: Span { start: Position { line: 733, column: 21, }, end: Position { line: 733, column: 27, }, }, }, ), ], span: Span { start: Position { line: 733, column: 20, }, end: Position { line: 733, column: 28, }, }, }, ), operator: Addition, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 733, column: 31, }, end: Position { line: 733, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 733, column: 38, }, end: Position { line: 733, column: 44, }, }, }, ), Raw( PartRaw { content: "boot", span: Span { start: Position { line: 733, column: 45, }, end: Position { line: 733, column: 49, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 733, column: 50, }, end: Position { line: 733, column: 56, }, }, }, ), Raw( PartRaw { content: "initrdFile", span: Span { start: Position { line: 733, column: 57, }, end: Position { line: 733, column: 67, }, }, }, ), ], default: None, }, ), }, ), }, ), ], span: Span { start: Position { line: 732, column: 9, }, end: Position { line: 734, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 735, column: 11, }, end: Position { line: 735, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 735, column: 20, }, end: Position { line: 735, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 735, column: 27, }, end: Position { line: 735, column: 33, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 735, column: 34, }, end: Position { line: 735, column: 39, }, }, }, ), Raw( PartRaw { content: "squashfsStore", span: Span { start: Position { line: 735, column: 40, }, end: Position { line: 735, column: 53, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 736, column: 11, }, end: Position { line: 736, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/nix-store.squashfs", span: Span { start: Position { line: 736, column: 21, }, end: Position { line: 736, column: 40, }, }, }, ), ], span: Span { start: Position { line: 736, column: 20, }, end: Position { line: 736, column: 41, }, }, }, ), }, ), ], span: Span { start: Position { line: 735, column: 9, }, end: Position { line: 737, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 738, column: 11, }, end: Position { line: 738, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 738, column: 20, }, end: Position { line: 738, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 738, column: 25, }, end: Position { line: 738, column: 34, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "version", span: Span { start: Position { line: 738, column: 36, }, end: Position { line: 738, column: 43, }, }, }, ), ], span: Span { start: Position { line: 738, column: 35, }, end: Position { line: 738, column: 44, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 738, column: 45, }, end: Position { line: 738, column: 51, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 738, column: 52, }, end: Position { line: 738, column: 58, }, }, }, ), Raw( PartRaw { content: "nixos", span: Span { start: Position { line: 738, column: 59, }, end: Position { line: 738, column: 64, }, }, }, ), Raw( PartRaw { content: "label", span: Span { start: Position { line: 738, column: 65, }, end: Position { line: 738, column: 70, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 739, column: 11, }, end: Position { line: 739, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/version.txt", span: Span { start: Position { line: 739, column: 21, }, end: Position { line: 739, column: 33, }, }, }, ), ], span: Span { start: Position { line: 739, column: 20, }, end: Position { line: 739, column: 34, }, }, }, ), }, ), ], span: Span { start: Position { line: 738, column: 9, }, end: Position { line: 740, column: 10, }, }, }, ), ], span: Span { start: Position { line: 728, column: 7, }, end: Position { line: 741, column: 8, }, }, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 741, column: 12, }, end: Position { line: 741, column: 21, }, }, }, ), arguments: [ Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 741, column: 22, }, end: Position { line: 741, column: 36, }, }, }, ), List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 742, column: 11, }, end: Position { line: 742, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 742, column: 20, }, end: Position { line: 742, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 742, column: 27, }, end: Position { line: 742, column: 35, }, }, }, ), Raw( PartRaw { content: "splashImage", span: Span { start: Position { line: 742, column: 36, }, end: Position { line: 742, column: 47, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 743, column: 11, }, end: Position { line: 743, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/isolinux/background.png", span: Span { start: Position { line: 743, column: 21, }, end: Position { line: 743, column: 45, }, }, }, ), ], span: Span { start: Position { line: 743, column: 20, }, end: Position { line: 743, column: 46, }, }, }, ), }, ), ], span: Span { start: Position { line: 742, column: 9, }, end: Position { line: 744, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 745, column: 11, }, end: Position { line: 745, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 745, column: 20, }, end: Position { line: 745, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "substituteAll", span: Span { start: Position { line: 745, column: 25, }, end: Position { line: 745, column: 38, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 746, column: 13, }, end: Position { line: 746, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "isolinux.cfg", span: Span { start: Position { line: 746, column: 21, }, end: Position { line: 746, column: 33, }, }, }, ), ], span: Span { start: Position { line: 746, column: 20, }, end: Position { line: 746, column: 34, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "src", span: Span { start: Position { line: 747, column: 13, }, end: Position { line: 747, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 747, column: 19, }, end: Position { line: 747, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 747, column: 24, }, end: Position { line: 747, column: 33, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "isolinux.cfg-in", span: Span { start: Position { line: 747, column: 35, }, end: Position { line: 747, column: 50, }, }, }, ), ], span: Span { start: Position { line: 747, column: 34, }, end: Position { line: 747, column: 51, }, }, }, ), Identifier( Identifier { id: "isolinuxCfg", span: Span { start: Position { line: 747, column: 52, }, end: Position { line: 747, column: 63, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bootRoot", span: Span { start: Position { line: 748, column: 13, }, end: Position { line: 748, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot", span: Span { start: Position { line: 748, column: 25, }, end: Position { line: 748, column: 30, }, }, }, ), ], span: Span { start: Position { line: 748, column: 24, }, end: Position { line: 748, column: 31, }, }, }, ), }, ), ], span: Span { start: Position { line: 745, column: 40, }, end: Position { line: 749, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 750, column: 11, }, end: Position { line: 750, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/isolinux/isolinux.cfg", span: Span { start: Position { line: 750, column: 21, }, end: Position { line: 750, column: 43, }, }, }, ), ], span: Span { start: Position { line: 750, column: 20, }, end: Position { line: 750, column: 44, }, }, }, ), }, ), ], span: Span { start: Position { line: 745, column: 9, }, end: Position { line: 751, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 752, column: 11, }, end: Position { line: 752, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 752, column: 23, }, end: Position { line: 752, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "syslinux", span: Span { start: Position { line: 752, column: 28, }, end: Position { line: 752, column: 36, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/syslinux", span: Span { start: Position { line: 752, column: 21, }, end: Position { line: 752, column: 52, }, }, }, ), ], span: Span { start: Position { line: 752, column: 20, }, end: Position { line: 752, column: 53, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 753, column: 11, }, end: Position { line: 753, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/isolinux", span: Span { start: Position { line: 753, column: 21, }, end: Position { line: 753, column: 30, }, }, }, ), ], span: Span { start: Position { line: 753, column: 20, }, end: Position { line: 753, column: 31, }, }, }, ), }, ), ], span: Span { start: Position { line: 752, column: 9, }, end: Position { line: 754, column: 10, }, }, }, ), ], span: Span { start: Position { line: 741, column: 37, }, end: Position { line: 755, column: 8, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 755, column: 12, }, end: Position { line: 755, column: 21, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 755, column: 22, }, end: Position { line: 755, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 755, column: 29, }, end: Position { line: 755, column: 37, }, }, }, ), Raw( PartRaw { content: "makeEfiBootable", span: Span { start: Position { line: 755, column: 38, }, end: Position { line: 755, column: 53, }, }, }, ), ], default: None, }, ), List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 756, column: 11, }, end: Position { line: 756, column: 17, }, }, }, ), ], to: Identifier( Identifier { id: "efiImg", span: Span { start: Position { line: 756, column: 20, }, end: Position { line: 756, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 757, column: 11, }, end: Position { line: 757, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot/efi.img", span: Span { start: Position { line: 757, column: 21, }, end: Position { line: 757, column: 34, }, }, }, ), ], span: Span { start: Position { line: 757, column: 20, }, end: Position { line: 757, column: 35, }, }, }, ), }, ), ], span: Span { start: Position { line: 756, column: 9, }, end: Position { line: 758, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 759, column: 11, }, end: Position { line: 759, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "efiDir", span: Span { start: Position { line: 759, column: 23, }, end: Position { line: 759, column: 29, }, }, }, ), }, ), Raw( PartRaw { content: "/EFI", span: Span { start: Position { line: 759, column: 21, }, end: Position { line: 759, column: 34, }, }, }, ), ], span: Span { start: Position { line: 759, column: 20, }, end: Position { line: 759, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 760, column: 11, }, end: Position { line: 760, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/EFI", span: Span { start: Position { line: 760, column: 21, }, end: Position { line: 760, column: 25, }, }, }, ), ], span: Span { start: Position { line: 760, column: 20, }, end: Position { line: 760, column: 26, }, }, }, ), }, ), ], span: Span { start: Position { line: 759, column: 9, }, end: Position { line: 761, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 762, column: 11, }, end: Position { line: 762, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 762, column: 21, }, end: Position { line: 762, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeTextDir", span: Span { start: Position { line: 762, column: 26, }, end: Position { line: 762, column: 38, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "grub/loopback.cfg", span: Span { start: Position { line: 762, column: 40, }, end: Position { line: 762, column: 57, }, }, }, ), ], span: Span { start: Position { line: 762, column: 39, }, end: Position { line: 762, column: 58, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "source /EFI/boot/grub.cfg", span: Span { start: Position { line: 762, column: 60, }, end: Position { line: 762, column: 85, }, }, }, ), ], span: Span { start: Position { line: 762, column: 59, }, end: Position { line: 762, column: 86, }, }, }, ), ], }, ), operator: Addition, right: String( String_ { parts: [ Raw( PartRaw { content: "/grub", span: Span { start: Position { line: 762, column: 91, }, end: Position { line: 762, column: 96, }, }, }, ), ], span: Span { start: Position { line: 762, column: 90, }, end: Position { line: 762, column: 97, }, }, }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 763, column: 11, }, end: Position { line: 763, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot/grub", span: Span { start: Position { line: 763, column: 21, }, end: Position { line: 763, column: 31, }, }, }, ), ], span: Span { start: Position { line: 763, column: 20, }, end: Position { line: 763, column: 32, }, }, }, ), }, ), ], span: Span { start: Position { line: 762, column: 9, }, end: Position { line: 764, column: 10, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 765, column: 11, }, end: Position { line: 765, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 765, column: 20, }, end: Position { line: 765, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 765, column: 27, }, end: Position { line: 765, column: 35, }, }, }, ), Raw( PartRaw { content: "efiSplashImage", span: Span { start: Position { line: 765, column: 36, }, end: Position { line: 765, column: 50, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 766, column: 11, }, end: Position { line: 766, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/EFI/boot/efi-background.png", span: Span { start: Position { line: 766, column: 21, }, end: Position { line: 766, column: 49, }, }, }, ), ], span: Span { start: Position { line: 766, column: 20, }, end: Position { line: 766, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 765, column: 9, }, end: Position { line: 767, column: 10, }, }, }, ), ], span: Span { start: Position { line: 755, column: 54, }, end: Position { line: 768, column: 8, }, }, }, ), ], }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 768, column: 12, }, end: Position { line: 768, column: 21, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 768, column: 23, }, end: Position { line: 768, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 768, column: 30, }, end: Position { line: 768, column: 34, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 768, column: 35, }, end: Position { line: 768, column: 41, }, }, }, ), Raw( PartRaw { content: "grub", span: Span { start: Position { line: 768, column: 42, }, end: Position { line: 768, column: 46, }, }, }, ), Raw( PartRaw { content: "memtest86", span: Span { start: Position { line: 768, column: 47, }, end: Position { line: 768, column: 56, }, }, }, ), Raw( PartRaw { content: "enable", span: Span { start: Position { line: 768, column: 57, }, end: Position { line: 768, column: 63, }, }, }, ), ], default: None, }, ), operator: LogicalAnd, right: Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 768, column: 67, }, end: Position { line: 768, column: 81, }, }, }, ), }, ), List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 769, column: 11, }, end: Position { line: 769, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 769, column: 23, }, end: Position { line: 769, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "memtest86plus", span: Span { start: Position { line: 769, column: 28, }, end: Position { line: 769, column: 41, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/memtest.bin", span: Span { start: Position { line: 769, column: 21, }, end: Position { line: 769, column: 54, }, }, }, ), ], span: Span { start: Position { line: 769, column: 20, }, end: Position { line: 769, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 770, column: 11, }, end: Position { line: 770, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/boot/memtest.bin", span: Span { start: Position { line: 770, column: 21, }, end: Position { line: 770, column: 38, }, }, }, ), ], span: Span { start: Position { line: 770, column: 20, }, end: Position { line: 770, column: 39, }, }, }, ), }, ), ], span: Span { start: Position { line: 769, column: 9, }, end: Position { line: 771, column: 10, }, }, }, ), ], span: Span { start: Position { line: 768, column: 83, }, end: Position { line: 772, column: 8, }, }, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 772, column: 12, }, end: Position { line: 772, column: 21, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 772, column: 23, }, end: Position { line: 772, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 772, column: 30, }, end: Position { line: 772, column: 38, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 772, column: 39, }, end: Position { line: 772, column: 48, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 772, column: 52, }, end: Position { line: 772, column: 56, }, }, }, ), }, ), List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "source", span: Span { start: Position { line: 773, column: 11, }, end: Position { line: 773, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 773, column: 20, }, end: Position { line: 773, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 773, column: 27, }, end: Position { line: 773, column: 35, }, }, }, ), Raw( PartRaw { content: "grubTheme", span: Span { start: Position { line: 773, column: 36, }, end: Position { line: 773, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "target", span: Span { start: Position { line: 774, column: 11, }, end: Position { line: 774, column: 17, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/EFI/boot/grub-theme", span: Span { start: Position { line: 774, column: 21, }, end: Position { line: 774, column: 41, }, }, }, ), ], span: Span { start: Position { line: 774, column: 20, }, end: Position { line: 774, column: 42, }, }, }, ), }, ), ], span: Span { start: Position { line: 773, column: 9, }, end: Position { line: 775, column: 10, }, }, }, ), ], span: Span { start: Position { line: 772, column: 58, }, end: Position { line: 776, column: 8, }, }, }, ), ], }, ), }, ), }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 778, column: 5, }, end: Position { line: 778, column: 9, }, }, }, ), Raw( PartRaw { content: "loader", span: Span { start: Position { line: 778, column: 10, }, end: Position { line: 778, column: 16, }, }, }, ), Raw( PartRaw { content: "timeout", span: Span { start: Position { line: 778, column: 17, }, end: Position { line: 778, column: 24, }, }, }, ), ], to: Integer( Integer { value: "10", span: Span { start: Position { line: 778, column: 27, }, end: Position { line: 778, column: 29, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "system", span: Span { start: Position { line: 781, column: 5, }, end: Position { line: 781, column: 11, }, }, }, ), Raw( PartRaw { content: "build", span: Span { start: Position { line: 781, column: 12, }, end: Position { line: 781, column: 17, }, }, }, ), Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 781, column: 18, }, end: Position { line: 781, column: 26, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 781, column: 29, }, end: Position { line: 781, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "callPackage", span: Span { start: Position { line: 781, column: 34, }, end: Position { line: 781, column: 45, }, }, }, ), ], default: None, }, ), arguments: [ Path( Path { parts: [ Raw( PartRaw { content: "../../../lib/make-iso9660-image.nix", span: Span { start: Position { line: 781, column: 46, }, end: Position { line: 781, column: 81, }, }, }, ), ], span: Span { start: Position { line: 781, column: 46, }, end: Position { line: 781, column: 81, }, }, }, ), BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ Inherit( BindingInherit { from: Some( PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 782, column: 16, }, end: Position { line: 782, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 782, column: 23, }, end: Position { line: 782, column: 31, }, }, }, ), ], default: None, }, ), ), attributes: [ Raw( PartRaw { content: "isoName", span: Span { start: Position { line: 782, column: 33, }, end: Position { line: 782, column: 40, }, }, }, ), Raw( PartRaw { content: "compressImage", span: Span { start: Position { line: 782, column: 41, }, end: Position { line: 782, column: 54, }, }, }, ), Raw( PartRaw { content: "volumeID", span: Span { start: Position { line: 782, column: 55, }, end: Position { line: 782, column: 63, }, }, }, ), Raw( PartRaw { content: "contents", span: Span { start: Position { line: 782, column: 64, }, end: Position { line: 782, column: 72, }, }, }, ), ], span: Span { start: Position { line: 781, column: 84, }, end: Position { line: 782, column: 73, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bootable", span: Span { start: Position { line: 783, column: 7, }, end: Position { line: 783, column: 15, }, }, }, ), ], to: Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 783, column: 18, }, end: Position { line: 783, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "bootImage", span: Span { start: Position { line: 784, column: 7, }, end: Position { line: 784, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/isolinux/isolinux.bin", span: Span { start: Position { line: 784, column: 20, }, end: Position { line: 784, column: 42, }, }, }, ), ], span: Span { start: Position { line: 784, column: 19, }, end: Position { line: 784, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "syslinux", span: Span { start: Position { line: 785, column: 7, }, end: Position { line: 785, column: 15, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 785, column: 21, }, end: Position { line: 785, column: 35, }, }, }, ), then: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 785, column: 41, }, end: Position { line: 785, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "syslinux", span: Span { start: Position { line: 785, column: 46, }, end: Position { line: 785, column: 54, }, }, }, ), ], default: None, }, ), else_: Identifier( Identifier { id: "null", span: Span { start: Position { line: 785, column: 60, }, end: Position { line: 785, column: 64, }, }, }, ), span: Span { start: Position { line: 785, column: 18, }, end: Position { line: 785, column: 64, }, }, }, ), }, ), ], span: Span { start: Position { line: 781, column: 83, }, end: Position { line: 786, column: 6, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 786, column: 10, }, end: Position { line: 786, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 786, column: 25, }, end: Position { line: 786, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 786, column: 32, }, end: Position { line: 786, column: 40, }, }, }, ), Raw( PartRaw { content: "makeUsbBootable", span: Span { start: Position { line: 786, column: 41, }, end: Position { line: 786, column: 56, }, }, }, ), ], default: None, }, ), operator: LogicalAnd, right: Identifier( Identifier { id: "canx86BiosBoot", span: Span { start: Position { line: 786, column: 60, }, end: Position { line: 786, column: 74, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "usbBootable", span: Span { start: Position { line: 787, column: 7, }, end: Position { line: 787, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 787, column: 21, }, end: Position { line: 787, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "isohybridMbrImage", span: Span { start: Position { line: 788, column: 7, }, end: Position { line: 788, column: 24, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 788, column: 30, }, end: Position { line: 788, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "syslinux", span: Span { start: Position { line: 788, column: 35, }, end: Position { line: 788, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/share/syslinux/isohdpfx.bin", span: Span { start: Position { line: 788, column: 28, }, end: Position { line: 788, column: 72, }, }, }, ), ], span: Span { start: Position { line: 788, column: 27, }, end: Position { line: 788, column: 73, }, }, }, ), }, ), ], span: Span { start: Position { line: 786, column: 76, }, end: Position { line: 789, column: 6, }, }, }, ), ], }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 789, column: 10, }, end: Position { line: 789, column: 23, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 789, column: 24, }, end: Position { line: 789, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "isoImage", span: Span { start: Position { line: 789, column: 31, }, end: Position { line: 789, column: 39, }, }, }, ), Raw( PartRaw { content: "makeEfiBootable", span: Span { start: Position { line: 789, column: 40, }, end: Position { line: 789, column: 55, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "efiBootable", span: Span { start: Position { line: 790, column: 7, }, end: Position { line: 790, column: 18, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 790, column: 21, }, end: Position { line: 790, column: 25, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "efiBootImage", span: Span { start: Position { line: 791, column: 7, }, end: Position { line: 791, column: 19, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "boot/efi.img", span: Span { start: Position { line: 791, column: 23, }, end: Position { line: 791, column: 35, }, }, }, ), ], span: Span { start: Position { line: 791, column: 22, }, end: Position { line: 791, column: 36, }, }, }, ), }, ), ], span: Span { start: Position { line: 789, column: 56, }, end: Position { line: 792, column: 6, }, }, }, ), ], }, ), }, ), }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 794, column: 5, }, end: Position { line: 794, column: 9, }, }, }, ), Raw( PartRaw { content: "postBootCommands", span: Span { start: Position { line: 794, column: 10, }, end: Position { line: 794, column: 26, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "# After booting, register the contents of the Nix store on the\n# CD in the Nix database in the tmpfs.\n", span: Span { start: Position { line: 796, column: 1, }, end: Position { line: 798, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 798, column: 11, }, end: Position { line: 798, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nix", span: Span { start: Position { line: 798, column: 18, }, end: Position { line: 798, column: 21, }, }, }, ), Raw( PartRaw { content: "package", span: Span { start: Position { line: 798, column: 22, }, end: Position { line: 798, column: 29, }, }, }, ), Raw( PartRaw { content: "out", span: Span { start: Position { line: 798, column: 30, }, end: Position { line: 798, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/nix-store --load-db < /nix/store/nix-path-registration\n\n# nixos-rebuild also requires a \"system\" profile and an\n# /etc/NIXOS tag.\ntouch /etc/NIXOS\n", span: Span { start: Position { line: 796, column: 1, }, end: Position { line: 803, column: 9, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 803, column: 11, }, end: Position { line: 803, column: 17, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nix", span: Span { start: Position { line: 803, column: 18, }, end: Position { line: 803, column: 21, }, }, }, ), Raw( PartRaw { content: "package", span: Span { start: Position { line: 803, column: 22, }, end: Position { line: 803, column: 29, }, }, }, ), Raw( PartRaw { content: "out", span: Span { start: Position { line: 803, column: 30, }, end: Position { line: 803, column: 33, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system\n", span: Span { start: Position { line: 796, column: 1, }, end: Position { line: 804, column: 7, }, }, }, ), ], span: Span { start: Position { line: 795, column: 7, }, end: Position { line: 804, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "boot", span: Span { start: Position { line: 808, column: 5, }, end: Position { line: 808, column: 9, }, }, }, ), Raw( PartRaw { content: "initrd", span: Span { start: Position { line: 808, column: 10, }, end: Position { line: 808, column: 16, }, }, }, ), Raw( PartRaw { content: "supportedFilesystems", span: Span { start: Position { line: 808, column: 17, }, end: Position { line: 808, column: 37, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "vfat", span: Span { start: Position { line: 808, column: 43, }, end: Position { line: 808, column: 47, }, }, }, ), ], span: Span { start: Position { line: 808, column: 42, }, end: Position { line: 808, column: 48, }, }, }, ), ], span: Span { start: Position { line: 808, column: 40, }, end: Position { line: 808, column: 50, }, }, }, ), }, ), ], span: Span { start: Position { line: 668, column: 12, }, end: Position { line: 810, column: 4, }, }, }, ), }, ), ], span: Span { start: Position { line: 444, column: 1, }, end: Position { line: 812, column: 2, }, }, }, ), span: Span { start: Position { line: 9, column: 1, }, end: Position { line: 812, column: 2, }, }, }, ), span: Span { start: Position { line: 7, column: 1, }, end: Position { line: 812, column: 2, }, }, }, ), span: Span { start: Position { line: 5, column: 1, }, end: Position { line: 812, column: 2, }, }, }, )