summaryrefslogtreecommitdiffstats
path: root/krebs/3modules/iana-etc.nix
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2019-12-02 01:11:37 +0100
committermakefu <github@syntax-fehler.de>2020-01-05 22:16:09 +0100
commitb77df86da81d20040d9a2c5bd1dee4ad750fa851 (patch)
treef24d895718211ad525f182ab2e7210fb45139b90 /krebs/3modules/iana-etc.nix
parent4a1ab9bf6516f455de30b782ab5fc0c3c55e983f (diff)
iana-etc module: allow adding new services
This fixes a bug which only allowed modifying existing services.
Diffstat (limited to 'krebs/3modules/iana-etc.nix')
-rw-r--r--krebs/3modules/iana-etc.nix40
1 files changed, 14 insertions, 26 deletions
diff --git a/krebs/3modules/iana-etc.nix b/krebs/3modules/iana-etc.nix
index f6d47f27e..e8037128d 100644
--- a/krebs/3modules/iana-etc.nix
+++ b/krebs/3modules/iana-etc.nix
@@ -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
'');
};