Add nix import and export to nncp
This commit is contained in:
parent
7b512e337c
commit
a02e4625da
|
@ -1,6 +1,8 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./neighbours.nix ];
|
||||
|
||||
c3d2.mergeNncpSettings = false;
|
||||
c3d2.hq.statistics.enable = true;
|
||||
c3d2.autoUpdate = true;
|
||||
|
@ -27,9 +29,7 @@
|
|||
in lib.mapAttrs (name: value:
|
||||
value // {
|
||||
via = lib.lists.remove "c3d2" value.via;
|
||||
} // (if (value.addrs or { }) == { } then
|
||||
{ }
|
||||
else {
|
||||
} // (lib.attrsets.optionalAttrs (value.addrs or { } != { }) {
|
||||
calls = [ nightCall ];
|
||||
})) (builtins.removeAttrs config.c3d2.nncp.neigh [ "c3d2" ]);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
exec = {
|
||||
# A command to asynchronously export store paths to a remote caller.
|
||||
nix-store-export = with pkgs;
|
||||
[
|
||||
(writeScript "nncp-nix-store-export.sh" ''
|
||||
#!${bash}/bin/bash
|
||||
set -euo pipefail
|
||||
${config.nix.package}/bin/nix-store --export $@ | \
|
||||
${config.programs.nncp.package}/bin/nncp-exec -nice $NNCP_NICE $NNCP_SENDER nix-store-import
|
||||
'')
|
||||
];
|
||||
|
||||
# A command to import store paths from a remote caller.
|
||||
nix-store-import = [ "${config.nix.package}/bin/nix-store" "--import" ];
|
||||
};
|
||||
in { programs.nncp.settings.neigh = { emery = { inherit exec; }; }; }
|
|
@ -8,12 +8,20 @@ let
|
|||
daemonCfg = config.services.nncp.daemon;
|
||||
settingsFormat = pkgs.formats.json { };
|
||||
jsonCfgFile = settingsFormat.generate "nncp.json" programCfg.settings;
|
||||
pkg = programCfg.package;
|
||||
in {
|
||||
options = {
|
||||
programs.nncp = {
|
||||
|
||||
enable = mkEnableOption "NNCP (Node to Node copy) utilities";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.nncp;
|
||||
defaultText = literalExpression "pkgs.nncp";
|
||||
description = "The NNCP package to use system-wide.";
|
||||
};
|
||||
|
||||
secrets = mkOption {
|
||||
type = with types; listOf str;
|
||||
example = [ "/run/keys/nncp.hjson" ];
|
||||
|
@ -108,7 +116,7 @@ in {
|
|||
};
|
||||
|
||||
environment = mkIf programCfg.enable {
|
||||
systemPackages = [ pkgs.nncp ];
|
||||
systemPackages = [ pkg ];
|
||||
etc."nncp.hjson".source = nncpCfgFile;
|
||||
};
|
||||
|
||||
|
@ -121,12 +129,12 @@ in {
|
|||
nncpCfgDir=$(mktemp --directory nncp.XXXXXXXXXX)
|
||||
for f in ${jsonCfgFile} ${toString config.programs.nncp.secrets}; do
|
||||
tmpdir=$(mktemp --directory nncp.XXXXXXXXXX)
|
||||
${pkgs.nncp}/bin/nncp-cfgdir -cfg $f -dump $tmpdir
|
||||
${pkg}/bin/nncp-cfgdir -cfg $f -dump $tmpdir
|
||||
${pkgs.findutils}/bin/find $tmpdir -size 1c -delete
|
||||
cp -a $tmpdir/* $nncpCfgDir/
|
||||
rm -rf $tmpdir
|
||||
done
|
||||
${pkgs.nncp}/bin/nncp-cfgdir -load $nncpCfgDir > ${nncpCfgFile}
|
||||
${pkg}/bin/nncp-cfgdir -load $nncpCfgDir > ${nncpCfgFile}
|
||||
rm -rf $nncpCfgDir
|
||||
chgrp uucp ${nncpCfgFile}
|
||||
'';
|
||||
|
@ -139,7 +147,7 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.nncp}/bin/nncp-caller -noprogress -cfg "${nncpCfgFile}" ${
|
||||
${pkg}/bin/nncp-caller -noprogress -cfg "${nncpCfgFile}" ${
|
||||
lib.strings.escapeShellArgs callerCfg.extraArgs
|
||||
}'';
|
||||
Group = "uucp";
|
||||
|
@ -155,7 +163,7 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.nncp}/bin/nncp-daemon -noprogress -cfg "${nncpCfgFile}" ${
|
||||
${pkg}/bin/nncp-daemon -noprogress -cfg "${nncpCfgFile}" ${
|
||||
lib.strings.escapeShellArgs daemonCfg.extraArgs
|
||||
}'';
|
||||
Restart = "on-failure";
|
||||
|
@ -170,7 +178,7 @@ in {
|
|||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.nncp}/bin/nncp-daemon -noprogress -ucspi -cfg "${nncpCfgFile}" ${
|
||||
${pkg}/bin/nncp-daemon -noprogress -ucspi -cfg "${nncpCfgFile}" ${
|
||||
lib.strings.escapeShellArgs daemonCfg.extraArgs
|
||||
}'';
|
||||
Group = "uucp";
|
||||
|
|
Loading…
Reference in New Issue