diff options
author | makefu <github@syntax-fehler.de> | 2016-03-12 01:53:15 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2016-03-12 02:02:04 +0100 |
commit | 626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd (patch) | |
tree | 73dc7aa08cfa496045d63142db9f37ad7f82e2d7 | |
parent | 5e6798d7b7efbd14fb250ad9003d2977146d30d6 (diff) | |
download | nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar.gz nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar.bz2 nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar.lz nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar.xz nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.tar.zst nixlib-626bfce3b867b4bb17d48887a7c1b53ce1b1e8cd.zip |
graphite: fix carbonCache graphiteWeb graphiteApi
This commit implements the changes necessary to start up a graphite carbon Cache with twisted and start the corresponding graphiteWeb service. Dependencies need to be included via python buildEnv to include all recursive implicit dependencies. Additionally cairo is a requirement of graphiteWeb and pycairo is not a standard python package (buildPythonPackage) and therefore cannot be included via buildEnv. It also needs cairo in the Library PATH.
-rw-r--r-- | nixos/modules/services/monitoring/graphite.nix | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix index 976fd253a7cd..7104a5796f76 100644 --- a/nixos/modules/services/monitoring/graphite.nix +++ b/nixos/modules/services/monitoring/graphite.nix @@ -51,7 +51,13 @@ let ''; carbonEnv = { - PYTHONPATH = "${pkgs.python27Packages.carbon}/lib/python2.7/site-packages"; + PYTHONPATH = let + cenv = pkgs.python.buildEnv.override { + extraLibs = [ pkgs.python27Packages.carbon ]; + }; + cenvPack = "${cenv}/${pkgs.python.sitePackages}"; + # opt/graphite/lib contains twisted.plugins.carbon-cache + in "${cenvPack}/opt/graphite/lib:${cenvPack}"; GRAPHITE_ROOT = dataDir; GRAPHITE_CONF_DIR = configDir; GRAPHITE_STORAGE_DIR = dataDir; @@ -445,10 +451,21 @@ in { after = [ "network-interfaces.target" ]; path = [ pkgs.perl ]; environment = { - PYTHONPATH = "${pkgs.python27Packages.graphite_web}/lib/python2.7/site-packages"; + PYTHONPATH = let + penv = pkgs.python.buildEnv.override { + extraLibs = [ + pkgs.python27Packages.graphite_web + pkgs.python27Packages.pysqlite + ]; + }; + penvPack = "${penv}/${pkgs.python.sitePackages}"; + # opt/graphite/webapp contains graphite/settings.py + # explicitly adding pycairo in path because it cannot be imported via buildEnv + in "${penvPack}/opt/graphite/webapp:${penvPack}:${pkgs.pycairo}/${pkgs.python.sitePackages}"; DJANGO_SETTINGS_MODULE = "graphite.settings"; GRAPHITE_CONF_DIR = configDir; GRAPHITE_STORAGE_DIR = dataDir; + LD_LIBRARY_PATH = "${pkgs.cairo}/lib"; }; serviceConfig = { ExecStart = '' @@ -486,9 +503,11 @@ in { wantedBy = [ "multi-user.target" ]; after = [ "network-interfaces.target" ]; environment = { - PYTHONPATH = - "${cfg.api.package}/lib/python2.7/site-packages:" + - concatMapStringsSep ":" (f: f + "/lib/python2.7/site-packages") cfg.api.finders; + PYTHONPATH = let + aenv = pkgs.python.buildEnv.override { + extraLibs = [ cfg.api.package pkgs.cairo ] ++ cfg.api.finders; + }; + in "${aenv}/${pkgs.python.sitePackages}"; GRAPHITE_API_CONFIG = graphiteApiConfig; LD_LIBRARY_PATH = "${pkgs.cairo}/lib"; }; |