xkeyboard-config_custom
pkgs.xkeyboard-config_custom
Functor
Docs pulled from | This Revision | about 1 hour ago
Contribute
Enhance the ecosystem with your expertise! Contribute to fill the gaps in documentation. Your input can make a difference.
Noogle detected
This is a Functor
Learn about functors
Implementation
The following is the current implementation of this function.
{
layouts ? { },
}:
let
patchIn = name: layout: ''
# install layout files
${lib.optionalString (layout.compatFile != null) "cp '${layout.compatFile}' 'compat/${name}'"}
${lib.optionalString (layout.geometryFile != null) "cp '${layout.geometryFile}' 'geometry/${name}'"}
${lib.optionalString (layout.keycodesFile != null) "cp '${layout.keycodesFile}' 'keycodes/${name}'"}
${lib.optionalString (layout.symbolsFile != null) "cp '${layout.symbolsFile}' 'symbols/${name}'"}
${lib.optionalString (layout.typesFile != null) "cp '${layout.typesFile}' 'types/${name}'"}
# add model description
${ed}/bin/ed -v rules/base.xml <<EOF
/<\/modelList>
-
a
<model>
<configItem>
<name>${name}</name>
<description>${layout.description}</description>
<vendor>${layout.description}</vendor>
</configItem>
</model>
.
w
EOF
# add layout description
ed -v rules/base.xml <<EOF
/<\/layoutList>
-
a
<layout>
<configItem>
<name>${name}</name>
<shortDescription>${name}</shortDescription>
<description>${layout.description}</description>
<languageList>
${lib.concatMapStrings (lang: "<iso639Id>${lang}</iso639Id>\n") layout.languages}
</languageList>
</configItem>
<variantList/>
</layout>
.
w
EOF
'';
in
xkeyboard-config.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [
automake
ed
];
postPatch = lib.concatStrings (lib.mapAttrsToList patchIn layouts);
})