liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

configuration.nix (1199B)


      1 { config, pkgs, ... }:
      2 let
      3   inherit (pkgs.liminix.services) target;
      4   svc = config.system.service;
      5 in
      6 rec {
      7   services.lan4 = svc.network.address.build {
      8     interface = config.hardware.networkInterfaces.lan;
      9     family = "inet";
     10     address = "192.168.19.1";
     11     prefixLength = 24;
     12   };
     13 
     14   imports = [
     15     ../../modules/ppp
     16     ../../modules/dnsmasq
     17     ../../modules/network
     18     ../../modules/firewall
     19   ];
     20 
     21   services.pppoe = svc.pppoe.build {
     22     interface = config.hardware.networkInterfaces.wan;
     23     username = "db123@a.1";
     24     password = "NotReallyTheSecret";
     25   };
     26 
     27   services.firewall = svc.firewall.build {
     28     zones = {
     29       wan = [ services.pppoe ];
     30       lan = [ services.lan4 ];
     31     };
     32   };
     33 
     34   services.defaultroute4 = svc.network.route.build {
     35     via = "$(output ${services.pppoe} address)";
     36     target = "default";
     37     dependencies = [ services.pppoe ];
     38   };
     39 
     40   services.packet_forwarding = svc.network.forward.build {
     41     dependencies = [ services.pppoe ];
     42   };
     43 
     44   services.dns = svc.dnsmasq.build {
     45     interface = services.lan4;
     46     ranges = [ "192.168.19.10,192.168.19.253" ];
     47     domain = "fake.liminix.org";
     48   };
     49 
     50   defaultProfile.packages = with pkgs; [ nftables hello ];
     51 }