[Nix-dev] Cannot override MemoryLimit and CPUShares in service?

Rickard Nilsson rickard.nilsson at telia.com
Fri Feb 17 20:03:48 CET 2017


On 02/17/2017 06:30 PM, Matthias Beyer wrote:
 > Hi,
 >
 > I try to build a container for gitit, searx and hound (each service 
one) to play
 > around. I fail to override the memory limit and the cpu shares. Here 
is my
 > service configuration for hound, as an example:
 >
 >
 >     { port, MemoryHighMB, CPUShares, ... }:
 >     {
 >       autoStart = false;
 >       config = { config, pkgs, ... }: rec {
 >         nixpkgs.config.allowUnfree = false;
 >
 >         services.hound = {
 >           enable = true;
 >           home =  "/var/lib/hound";
 >           config = ''
 >             {
 >               "max-concurrent-indexers" : 2,
 >               "dbpath" : "${services.hound.home}/data",
 >               "repos" : {
 >                 "nixpkgs": { "url" : 
"https://www.github.com/NixOS/nixpkgs.git" },
 >                 "imag": { "url" : 
"https://www.github.com/matthiasbeyer/imag.git" }
 >               }
 >             }
 >           '';
 >           listen = ":${toString port}";
 >
 >           serviceConfig = {
 >             MemoryHigh = MemoryHighMB * 1024 * 1024;
 >             CPUShares  = CPUShares;
 >           };
 >         };
 >       };
 >     }
 >
 > I import it like so into my system configuration:
 >
 >   containers = {
 >     hound = import ./containers/hound.nix {
 >       port = 8082;
 >       MemoryHighMB = 512;
 >       CPUShares = 512;
 >     };
 >   };
 >
 > And it fails with:
 >
 >     error: The option `containers.gitit.services.gitit.serviceConfig' 
defined in
 >     `<unknown-file>' does not exist.
 >
 > Can someone tell what's wrong here?

Two things, I think:

The container should have a 'config' attribute:

   containers.hound.config = import ...

And within the container config I think you must configure the systemd 
service directly (there is no 'serviceConfig' option for 'services.hound'):

   systemd.services.hound.serviceConfig = { ... }

I assume here that the 'services.hound' option generates a 
'systemd.services.hound' config. I haven't checked though.


   / Rickard


More information about the nix-dev mailing list