iana-etc module: allow adding new services

This fixes a bug which only allowed modifying existing services.
This commit is contained in:
tv 2019-12-02 01:11:37 +01:00 committed by makefu
parent 4a1ab9bf65
commit b77df86da8
No known key found for this signature in database
GPG Key ID: 36F7711F3FC0F225
1 changed files with 14 additions and 26 deletions

View File

@ -23,32 +23,20 @@ with import <stockholm/lib>;
};
config.environment.etc = mkIf (config.krebs.iana-etc.services != {}) {
services.source = mkForce (pkgs.runCommand "krebs-iana-etc" {} ''
exec < ${pkgs.iana_etc}/etc/services
exec > $out
awk -F '[ /]+' '
BEGIN {
port=0
}
${concatMapStringsSep "\n" (entry: ''
$2 == ${entry.port} {
port=$2
next
}
port == ${entry.port} {
${concatMapStringsSep "\n"
(proto: let
s = "${entry.${proto}.name} ${entry.port}/${proto}";
in
"print ${toJSON s}")
(filter (proto: entry.${proto} != null) ["tcp" "udp"])}
port=0
}
'') (attrValues config.krebs.iana-etc.services)}
{
print $0
}
'
services.source = mkForce (pkgs.runCommand "krebs-iana-etc" {} /* sh */ ''
{
${concatMapStringsSep "\n" (entry: /* sh */ ''
${concatMapStringsSep "\n"
(proto: let
line = "${entry.${proto}.name} ${entry.port}/${proto}";
in /* sh */ ''
echo ${shell.escape line}
'')
(filter (proto: entry.${proto} != null) ["tcp" "udp"])}
'') (attrValues config.krebs.iana-etc.services)}
cat ${pkgs.iana_etc}/etc/services
} |
sort -b -k 2,2 -u > $out
'');
};