diff --git a/examples/rotuer.nix b/examples/rotuer.nix index 9351931c..ad43d58b 100644 --- a/examples/rotuer.nix +++ b/examples/rotuer.nix @@ -112,7 +112,7 @@ in rec { domain = "fake.liminix.org"; }; - services.wan = svc.pppoe { + services.wan = svc.pppoe.build { interface = config.hardware.networkInterfaces.wan; ppp-options = [ "debug" "+ipv6" "noauth" diff --git a/modules/ppp/default.nix b/modules/ppp/default.nix index baa7188e..a0e716ab 100644 --- a/modules/ppp/default.nix +++ b/modules/ppp/default.nix @@ -11,14 +11,24 @@ { lib, pkgs, config, ...}: let inherit (lib) mkOption types; + inherit (pkgs) liminix; in { options = { system.service.pppoe = mkOption { - type = types.functionTo types.package; + type = liminix.lib.types.serviceDefn; }; }; config = { - system.service.pppoe = pkgs.callPackage ./pppoe.nix {}; + system.service.pppoe = pkgs.liminix.callService ./pppoe.nix { + interface = mkOption { + type = liminix.lib.types.service; + description = "ethernet interface to run PPPoE over"; + }; + ppp-options = mkOption { + type = types.listOf types.str; + description = "options supplied on ppp command line"; + }; + }; kernel = { config = { PPP = "y"; diff --git a/modules/ppp/pppoe.nix b/modules/ppp/pppoe.nix index c7ceead4..9aae9862 100644 --- a/modules/ppp/pppoe.nix +++ b/modules/ppp/pppoe.nix @@ -6,25 +6,9 @@ , writeAshScript , serviceFns } : +{ interface, ppp-options }: let inherit (liminix.services) longrun; - inherit (liminix.lib) typeChecked; - inherit (lib) mkOption types; - - t = { - interface = mkOption { - type = liminix.lib.types.service; - description = "ethernet interface to run PPPoE over"; - }; - ppp-options = mkOption { - type = types.listOf types.str; - description = "options supplied on ppp command line"; - }; - }; -in -params: -let - inherit (typeChecked "pppoe.nix" t params) interface ppp-options; name = "${interface.device}.pppoe"; ip-up = writeAshScript "ip-up" {} '' . ${serviceFns} @@ -55,7 +39,6 @@ let "usepeerdns" "logfd" "2" ]; - in longrun { inherit name;