Merge pull request #14845 from regnat/zerobin

pythonPackages.zerobin : init at 7da1615 and add service
This commit is contained in:
Frederik Rietdijk 2016-04-25 14:04:32 +02:00
commit 25c35529f4
3 changed files with 203 additions and 0 deletions

View File

@ -401,6 +401,7 @@
./services/networking/wicd.nix
./services/networking/wpa_supplicant.nix
./services/networking/xinetd.nix
./services/networking/zerobin.nix
./services/networking/zerotierone.nix
./services/networking/znc.nix
./services/printing/cupsd.nix

View File

@ -0,0 +1,102 @@
{ config, pkgs, lib, nodes, ... }:
with lib;
let
cfg = config.services.zerobin;
zerobin_config = pkgs.writeText "zerobin-config.py" ''
PASTE_FILES_ROOT = "${cfg.dataDir}"
${cfg.extraConfig}
'';
in
{
options = {
services.zerobin = {
enable = mkEnableOption "0bin";
dataDir = mkOption {
type = types.str;
default = "/var/lib/zerobin";
description = ''
Path to the 0bin data directory
'';
};
user = mkOption {
type = types.str;
default = "zerobin";
description = ''
The user 0bin should run as
'';
};
group = mkOption {
type = types.str;
default = "zerobin";
description = ''
The group 0bin should run as
'';
};
listenPort = mkOption {
type = types.int;
default = 8000;
example = 1357;
description = ''
The port zerobin should listen on
'';
};
listenAddress = mkOption {
type = types.str;
default = "localhost";
example = "127.0.0.1";
description = ''
The address zerobin should listen to
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
example = ''
MENU = (
('Home', '/'),
)
COMPRESSED_STATIC_FILE = True
'';
description = ''
Extra configuration to be appended to the 0bin config file
(see https://0bin.readthedocs.org/en/latest/en/options.html)
'';
};
};
};
config = mkIf (cfg.enable) {
users.users."${cfg.user}" =
if cfg.user == "zerobin" then {
isSystemUser = true;
group = cfg.group;
home = cfg.dataDir;
createHome = true;
}
else {};
users.groups."${cfg.group}" = {};
systemd.services.zerobin = {
enable = true;
after = [ "network-interfaces.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${pkgs.pythonPackages.zerobin}/bin/zerobin ${cfg.listenAddress} ${toString cfg.listenPort} false ${cfg.user} ${cfg.group} ${zerobin_config}";
serviceConfig.PrivateTmp="yes";
serviceConfig.User = cfg.user;
serviceConfig.Group = cfg.group;
preStart = ''
mkdir -p ${cfg.dataDir}
chown ${cfg.user} ${cfg.dataDir}
'';
};
};
}

View File

@ -26588,4 +26588,104 @@ in modules // {
maintainers = with maintainers; [];
};
};
repeated_test = buildPythonPackage rec {
name = "repeated_test-${version}";
version = "0.1a3";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/r/repeated-test/${name}.tar.gz";
sha256 = "062syp7kl2g0x6qx3z8zb5sdycpi7qcpxp9iml2v8dqzqnij9bpg";
};
buildInputs = with self; [
unittest2
];
propagatedBuildInputs = with self; [
six
];
meta = {
description = "A quick unittest-compatible framework for repeating a test function over many fixtures";
homepage = "https://github.com/epsy/repeated_test";
license = licenses.mit;
};
};
sigtools = buildPythonPackage rec {
name = "sigtools-${version}";
version = "1.1a3";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/s/sigtools/${name}.tar.gz";
sha256 = "190w14vzbiyvxcl9jmyyimpahar5b0bq69v9iv7chi852yi71w6w";
};
buildInputs = with self; [
repeated_test
sphinx
mock
coverage
unittest2
];
propagatedBuildInputs = with self; [
funcsigs
six
];
patchPhase = ''sed -i s/test_suite="'"sigtools.tests"'"/test_suite="'"unittest2.collector"'"/ setup.py'';
meta = {
description = "Utilities for working with 3.3's inspect.Signature objects.";
homepage = "https://pypi.python.org/pypi/sigtools";
license = licenses.mit;
};
};
clize = buildPythonPackage rec {
name = "clize-${version}";
version = "3.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/clize/${name}.tar.gz";
sha256 = "1xkr3h404d7pgj5gdpg6bddv3v3yq2hgx8qlwkgw5abg218k53hm";
};
buildInputs = with self; [
dateutil
];
propagatedBuildInputs = with self; [
sigtools
];
meta = {
description = "Command-line argument parsing for Python";
homepage = "https://github.com/epsy/clize";
license = licenses.mit;
};
};
zerobin = buildPythonPackage rec {
name = "zerobin-${version}";
version = "20160108";
src = pkgs.fetchFromGitHub {
owner = "sametmax";
repo = "0bin";
rev = "7da1615";
sha256 = "1pzcwy454kn5216pvwjqzz311s6jbh7viw9s6kw4xps6f5h44bid";
};
propagatedBuildInputs = with self; [
cherrypy
bottle
lockfile
clize
];
meta = {
description = "A client side encrypted pastebin";
homepage = "http://0bin.net/";
license = licenses.wtfpl;
};
};
}