ifdyndnsd 0.2.0

Watch netlink for interface address updates to do DynDNS just like nsupdate does
Documentation
{
  inputs = {
    utils.url = "github:numtide/flake-utils";
    naersk.url = "github:nmattia/naersk";
    naersk.inputs.nixpkgs.follows = "nixpkgs";
    fenix.url = "github:nix-community/fenix";
    fenix.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self, nixpkgs, utils, naersk, fenix, }:
    let
      systems = [
        "i686-linux"
        "x86_64-linux"
        #"armv6l-linux"
        #"armv7l-linux"
        "aarch64-linux"
        #"riscv64-linux"
      ];
    in utils.lib.eachSystem systems (system:
      let
        pkgs = nixpkgs.legacyPackages."${system}";
        rust = fenix.packages.${system}.stable.withComponents [
          "cargo"
          "rustc"
          "rustfmt"
          "clippy"
        ];

        # Override the version used in naersk
        naersk-lib = naersk.lib."${system}".override {
          cargo = rust;
          rustc = rust;
        };
      in rec {
        # `nix build`
        packages.ifdyndnsd = naersk-lib.buildPackage {
          pname = "ifdyndnsd";
          src = ./.;
          cargoTestCommands = x:
            x ++ [
              # clippy
              ''
                cargo clippy --all --all-features --tests -- \
                              -D clippy::pedantic \
                              -D warnings \
                              -A clippy::await-holding-refcell-ref''
              # rustfmt
              "cargo fmt -- --check"
            ];
        };
        defaultPackage = packages.ifdyndnsd;

        checks = packages;

        # `nix run`
        apps.ifdyndnsd = utils.lib.mkApp { drv = packages.ifdyndnsd; };
        defaultApp = apps.ifdyndnsd;

        # `nix develop`
        devShell = pkgs.mkShell {
          nativeBuildInputs = with defaultPackage;
            nativeBuildInputs ++ buildInputs;
          packages = [ pkgs.cargo-edit ];
        };
      }) // {
        overlay = final: prev: { ifdyndnsd = self.packages.${prev.system}; };

        nixosModule = import ./nixos-module.nix { inherit self; };
      };
}