Skip to content

Commit

Permalink
nixos/asf: add ipcPasswordFile option, only delete bot configs when m…
Browse files Browse the repository at this point in the history
…anaged by nixos, make preStart clearer
  • Loading branch information
SuperSandro2000 committed Jun 3, 2022
1 parent b450c76 commit 48b21f6
Showing 1 changed file with 28 additions and 14 deletions.
42 changes: 28 additions & 14 deletions nixos/modules/services/games/asf.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ let
# is in theory not needed as this is already the default for default builds
UpdateChannel = 0;
Headless = true;
} // lib.optionalAttrs (cfg.ipcPasswordFile != "") {
IPCPassword = "#ipcPassword#";
});

ipc-config = format.generate "IPC.config" cfg.ipcSettings;
Expand Down Expand Up @@ -92,6 +94,11 @@ respectively `0` because NixOS takes care of updating everything.
default = { };
};

ipcPasswordFile = mkOption {
type = types.path;
description = "Path to a file containig the password. The file must be readable by the <literal>asf</literal> user/group.";
};

ipcSettings = mkOption {
type = format.type;
description = ''
Expand Down Expand Up @@ -202,26 +209,33 @@ respectively `0` because NixOS takes care of updating everything.
}
];

preStart = ''
preStart = let
createBotsScript = pkgs.runCommandLocal "ASF-bots" {} ''
mkdir -p $out/lib/asf/bots
# clean potential removed bots
rm -rf $out/lib/asf/bots/*.json
for i in ${strings.concatStringsSep " " (lists.map (x: "${getName x},${x}") (attrsets.mapAttrsToList mkBot cfg.bots))}; do IFS=",";
set -- $i
ln -fs $2 $out/lib/asf/bots/$1
done
'';
replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
in ''
mkdir -p config
rm -f www
rm -f config/{*.json,*.config}
ln -s ${asf-config} config/ASF.json
cp --no-preserve=mode ${asf-config} config/ASF.json
${replaceSecretBin} '#ipcPassword#' '${cfg.ipcPasswordFile}' config/ASF.json
${strings.optionalString (cfg.ipcSettings != {}) ''
ln -s ${ipc-config} config/IPC.config
${optionalString (cfg.ipcSettings != {}) ''
ln -fs ${ipc-config} config/IPC.config
''}
ln -s ${pkgs.runCommandLocal "ASF-bots" {} ''
mkdir -p $out/lib/asf/bots
for i in ${strings.concatStringsSep " " (lists.map (x: "${getName x},${x}") (attrsets.mapAttrsToList mkBot cfg.bots))}; do IFS=",";
set -- $i
ln -s $2 $out/lib/asf/bots/$1
done
''}/lib/asf/bots/* config/
${optionalString (cfg.ipcSettings != {}) ''
ln -fs ${createBotsScript}/lib/asf/bots/* config/
''}
${strings.optionalString cfg.web-ui.enable ''
rm -f www
${optionalString cfg.web-ui.enable ''
ln -s ${cfg.web-ui.package}/lib/dist www
''}
'';
Expand Down

0 comments on commit 48b21f6

Please sign in to comment.