mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
Merge pull request #243102 from yu-re-ka/peering-manager-meta
This commit is contained in:
commit
9e010edec7
3 changed files with 29 additions and 20 deletions
|
@ -1,7 +1,5 @@
|
||||||
{ config, lib, pkgs, buildEnv, ... }:
|
{ config, lib, pkgs, buildEnv, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.peering-manager;
|
cfg = config.services.peering-manager;
|
||||||
configFile = pkgs.writeTextFile {
|
configFile = pkgs.writeTextFile {
|
||||||
|
@ -41,24 +39,24 @@ let
|
||||||
pkg = (pkgs.peering-manager.overrideAttrs (old: {
|
pkg = (pkgs.peering-manager.overrideAttrs (old: {
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
ln -s ${configFile} $out/opt/peering-manager/peering_manager/configuration.py
|
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
|
ln -s ${cfg.ldapConfigPath} $out/opt/peering-manager/peering_manager/ldap_config.py
|
||||||
'';
|
'';
|
||||||
})).override {
|
})).override {
|
||||||
inherit (cfg) plugins;
|
inherit (cfg) plugins;
|
||||||
};
|
};
|
||||||
peeringManagerManageScript = with pkgs; (writeScriptBin "peering-manager-manage" ''
|
peeringManagerManageScript = pkgs.writeScriptBin "peering-manager-manage" ''
|
||||||
#!${stdenv.shell}
|
#!${pkgs.stdenv.shell}
|
||||||
export PYTHONPATH=${pkg.pythonPath}
|
export PYTHONPATH=${pkg.pythonPath}
|
||||||
sudo -u peering-manager ${pkg}/bin/peering-manager "$@"
|
sudo -u peering-manager ${pkg}/bin/peering-manager "$@"
|
||||||
'');
|
'';
|
||||||
|
|
||||||
in {
|
in {
|
||||||
options.services.peering-manager = {
|
options.services.peering-manager = with lib; {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = lib.types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Enable Peering Manager.
|
Enable Peering Manager.
|
||||||
|
|
||||||
This module requires a reverse proxy that serves `/static` separately.
|
This module requires a reverse proxy that serves `/static` separately.
|
||||||
|
@ -69,7 +67,7 @@ in {
|
||||||
listenAddress = mkOption {
|
listenAddress = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "[::1]";
|
default = "[::1]";
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Address the server will listen on.
|
Address the server will listen on.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -77,7 +75,7 @@ in {
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
type = types.port;
|
type = types.port;
|
||||||
default = 8001;
|
default = 8001;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Port the server will listen on.
|
Port the server will listen on.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -88,14 +86,14 @@ in {
|
||||||
defaultText = literalExpression ''
|
defaultText = literalExpression ''
|
||||||
python3Packages: with python3Packages; [];
|
python3Packages: with python3Packages; [];
|
||||||
'';
|
'';
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
List of plugin packages to install.
|
List of plugin packages to install.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
secretKeyFile = mkOption {
|
secretKeyFile = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Path to a file containing the secret key.
|
Path to a file containing the secret key.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -103,7 +101,7 @@ in {
|
||||||
peeringdbApiKeyFile = mkOption {
|
peeringdbApiKeyFile = mkOption {
|
||||||
type = with types; nullOr path;
|
type = with types; nullOr path;
|
||||||
default = null;
|
default = null;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Path to a file containing the PeeringDB API key.
|
Path to a file containing the PeeringDB API key.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -111,7 +109,7 @@ in {
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Additional lines of configuration appended to the `configuration.py`.
|
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.
|
See the [documentation](https://peering-manager.readthedocs.io/en/stable/configuration/optional-settings/) for more possible options.
|
||||||
'';
|
'';
|
||||||
|
@ -120,7 +118,7 @@ in {
|
||||||
enableLdap = mkOption {
|
enableLdap = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Enable LDAP-Authentication for Peering Manager.
|
Enable LDAP-Authentication for Peering Manager.
|
||||||
|
|
||||||
This requires a configuration file being pass through `ldapConfigPath`.
|
This requires a configuration file being pass through `ldapConfigPath`.
|
||||||
|
@ -129,15 +127,15 @@ in {
|
||||||
|
|
||||||
ldapConfigPath = mkOption {
|
ldapConfigPath = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
description = lib.mdDoc ''
|
description = mdDoc ''
|
||||||
Path to the Configuration-File for LDAP-Authentication, will be loaded as `ldap_config.py`.
|
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.
|
See the [documentation](https://peering-manager.readthedocs.io/en/stable/setup/6-ldap/#configuration) for possible options.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services.peering-manager.plugins = mkIf cfg.enableLdap (ps: [ ps.django-auth-ldap ]);
|
services.peering-manager.plugins = lib.mkIf cfg.enableLdap (ps: [ ps.django-auth-ldap ]);
|
||||||
|
|
||||||
system.build.peeringManagerPkg = pkg;
|
system.build.peeringManagerPkg = pkg;
|
||||||
|
|
||||||
|
@ -262,4 +260,6 @@ in {
|
||||||
users.groups.peering-manager = {};
|
users.groups.peering-manager = {};
|
||||||
users.groups."${config.services.redis.servers.peering-manager.user}".members = [ "peering-manager" ];
|
users.groups."${config.services.redis.servers.peering-manager.user}".members = [ "peering-manager" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ yuka ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ import ../make-test-python.nix ({ lib, pkgs, ... }: {
|
||||||
"sudo -u postgres psql -c 'ALTER USER \"peering-manager\" WITH SUPERUSER;'"
|
"sudo -u postgres psql -c 'ALTER USER \"peering-manager\" WITH SUPERUSER;'"
|
||||||
)
|
)
|
||||||
machine.succeed(
|
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"
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, fetchpatch
|
, fetchpatch
|
||||||
, nixosTests
|
, nixosTests
|
||||||
|
, lib
|
||||||
|
|
||||||
, plugins ? ps: []
|
, plugins ? ps: []
|
||||||
}:
|
}:
|
||||||
|
@ -93,4 +94,12 @@ in py.pkgs.buildPythonApplication rec {
|
||||||
inherit (nixosTests) peering-manager;
|
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;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue