diff --git a/projects/holo/default.nix b/projects/holo/default.nix new file mode 100644 index 000000000..283c89aac --- /dev/null +++ b/projects/holo/default.nix @@ -0,0 +1,30 @@ +{ + lib, + pkgs, + sources, +}@args: + +{ + metadata = { + summary = "Holo is a suite of routing protocols designed to address the needs of modern networks"; + subgrants = [ + "HoloRouting" + ]; + }; + + nixos.modules.programs = { + holo = { + name = "holo"; + # if a project has `packages`, add them inside the `module.nix` file + module = ./programs/holo/module.nix; + examples.basic = { + module = ./programs/holo/examples/basic.nix; + description = "Enable the holo program"; + tests.basic = import ./programs/holo/tests/basic.nix args; + }; + }; + }; + + # TODO: add service module + nixos.modules.services.holo-daemon = null; +} diff --git a/projects/holo/programs/holo/examples/basic.nix b/projects/holo/programs/holo/examples/basic.nix new file mode 100644 index 000000000..97db60dc6 --- /dev/null +++ b/projects/holo/programs/holo/examples/basic.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.holo.enable = true; +} diff --git a/projects/holo/programs/holo/module.nix b/projects/holo/programs/holo/module.nix new file mode 100644 index 000000000..9b87af863 --- /dev/null +++ b/projects/holo/programs/holo/module.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.programs.holo; +in +{ + options.programs.holo = { + enable = lib.mkEnableOption "holo"; + package = lib.mkPackageOption pkgs "holo-cli" { }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + cfg.package + ]; + }; +} diff --git a/projects/holo/programs/holo/tests/basic.nix b/projects/holo/programs/holo/tests/basic.nix new file mode 100644 index 000000000..2e6a7a5c6 --- /dev/null +++ b/projects/holo/programs/holo/tests/basic.nix @@ -0,0 +1,28 @@ +{ + sources, + ... +}: + +{ + name = "holo"; + + nodes = { + machine = + { ... }: + { + imports = [ + sources.modules.ngipkgs + sources.modules.programs.holo + sources.examples.holo.basic + ]; + }; + }; + + testScript = + { nodes, ... }: + '' + start_all() + + machine.succeed("holo-cli --version") + ''; +}