Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions nixos/modules/services/web-apps/peering-manager.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{ config, lib, pkgs, buildEnv, ... }:

with lib;

let
cfg = config.services.peering-manager;
configFile = pkgs.writeTextFile {
Expand Down Expand Up @@ -41,24 +39,24 @@ let
pkg = (pkgs.peering-manager.overrideAttrs (old: {
postInstall = ''
ln -s ${configFile} $out/opt/peering-manager/peering_manager/configuration.py
'' + optionalString cfg.enableLdap ''
'' + lib.optionalString cfg.enableLdap ''
ln -s ${cfg.ldapConfigPath} $out/opt/peering-manager/peering_manager/ldap_config.py
'';
})).override {
inherit (cfg) plugins;
};
peeringManagerManageScript = with pkgs; (writeScriptBin "peering-manager-manage" ''
#!${stdenv.shell}
peeringManagerManageScript = pkgs.writeScriptBin "peering-manager-manage" ''
#!${pkgs.stdenv.shell}
export PYTHONPATH=${pkg.pythonPath}
sudo -u peering-manager ${pkg}/bin/peering-manager "$@"
'');
'';

in {
options.services.peering-manager = {
options.services.peering-manager = with lib; {
enable = mkOption {
type = lib.types.bool;
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Enable Peering Manager.

This module requires a reverse proxy that serves `/static` separately.
Expand All @@ -69,15 +67,15 @@ in {
listenAddress = mkOption {
type = types.str;
default = "[::1]";
description = lib.mdDoc ''
description = mdDoc ''
Address the server will listen on.
'';
};

port = mkOption {
type = types.port;
default = 8001;
description = lib.mdDoc ''
description = mdDoc ''
Port the server will listen on.
'';
};
Expand All @@ -88,30 +86,30 @@ in {
defaultText = literalExpression ''
python3Packages: with python3Packages; [];
'';
description = lib.mdDoc ''
description = mdDoc ''
List of plugin packages to install.
'';
};

secretKeyFile = mkOption {
type = types.path;
description = lib.mdDoc ''
description = mdDoc ''
Path to a file containing the secret key.
'';
};

peeringdbApiKeyFile = mkOption {
type = with types; nullOr path;
default = null;
description = lib.mdDoc ''
description = mdDoc ''
Path to a file containing the PeeringDB API key.
'';
};

extraConfig = mkOption {
type = types.lines;
default = "";
description = lib.mdDoc ''
description = mdDoc ''
Additional lines of configuration appended to the `configuration.py`.
See the [documentation](https://peering-manager.readthedocs.io/en/stable/configuration/optional-settings/) for more possible options.
'';
Expand All @@ -120,7 +118,7 @@ in {
enableLdap = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Enable LDAP-Authentication for Peering Manager.

This requires a configuration file being pass through `ldapConfigPath`.
Expand All @@ -129,15 +127,15 @@ in {

ldapConfigPath = mkOption {
type = types.path;
description = lib.mdDoc ''
description = mdDoc ''
Path to the Configuration-File for LDAP-Authentication, will be loaded as `ldap_config.py`.
See the [documentation](https://peering-manager.readthedocs.io/en/stable/setup/6-ldap/#configuration) for possible options.
'';
};
};

config = mkIf cfg.enable {
services.peering-manager.plugins = mkIf cfg.enableLdap (ps: [ ps.django-auth-ldap ]);
config = lib.mkIf cfg.enable {
services.peering-manager.plugins = lib.mkIf cfg.enableLdap (ps: [ ps.django-auth-ldap ]);

system.build.peeringManagerPkg = pkg;

Expand Down Expand Up @@ -262,4 +260,6 @@ in {
users.groups.peering-manager = {};
users.groups."${config.services.redis.servers.peering-manager.user}".members = [ "peering-manager" ];
};

meta.maintainers = with lib.maintainers; [ yuka ];
}
2 changes: 1 addition & 1 deletion nixos/tests/web-apps/peering-manager.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import ../make-test-python.nix ({ lib, pkgs, ... }: {
"sudo -u postgres psql -c 'ALTER USER \"peering-manager\" WITH SUPERUSER;'"
)
machine.succeed(
"cd ${nodes.machine.config.system.build.peeringManagerPkg}/opt/peering-manager ; peering-manager-manage test --no-input"
"cd ${nodes.machine.system.build.peeringManagerPkg}/opt/peering-manager ; peering-manager-manage test --no-input"
)
'';
})
9 changes: 9 additions & 0 deletions pkgs/servers/web-apps/peering-manager/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
, fetchFromGitHub
, fetchpatch
, nixosTests
, lib

, plugins ? ps: []
}:
Expand Down Expand Up @@ -93,4 +94,12 @@ in py.pkgs.buildPythonApplication rec {
inherit (nixosTests) peering-manager;
};
};

meta = with lib; {
homepage = "https://peering-manager.net/";
license = licenses.asl20;
description = "BGP sessions management tool";
maintainers = with maintainers; [ yuka ];
platforms = platforms.linux;
};
}