commit
3b174a4024
3 changed files with 404 additions and 1 deletions
|
@ -238,6 +238,7 @@
|
|||
./services/networking/dnscrypt-proxy.nix
|
||||
./services/networking/dnsmasq.nix
|
||||
./services/networking/ejabberd.nix
|
||||
./services/networking/firefox/sync-server.nix
|
||||
./services/networking/firewall.nix
|
||||
./services/networking/flashpolicyd.nix
|
||||
./services/networking/freenet.nix
|
||||
|
|
142
nixos/modules/services/networking/firefox/sync-server.nix
Normal file
142
nixos/modules/services/networking/firefox/sync-server.nix
Normal file
|
@ -0,0 +1,142 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.firefox.syncserver;
|
||||
syncServerIni = pkgs.writeText "syncserver.ini" ''
|
||||
[DEFAULT]
|
||||
overrides = ${cfg.privateConfig}
|
||||
|
||||
[server:main]
|
||||
use = egg:Paste#http
|
||||
host = ${cfg.listen.address}
|
||||
port = ${toString cfg.listen.port}
|
||||
|
||||
[app:main]
|
||||
use = egg:syncserver
|
||||
|
||||
[syncserver]
|
||||
public_url = ${cfg.publicUrl}
|
||||
${optionalString (cfg.sqlUri != "") "sqluri = ${cfg.sqlUri}"}
|
||||
allow_new_users = ${if cfg.allowNewUsers then "true" else "false"}
|
||||
|
||||
[browserid]
|
||||
backend = tokenserver.verifiers.LocalVerifier
|
||||
audiences = ${removeSuffix "/" cfg.publicUrl}
|
||||
'';
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.firefox.syncserver = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable a Firefox Sync Server, this give the opportunity to
|
||||
Firefox users to store all synchronized data on their own server. To use this
|
||||
server, Firefox users should visit the <option>about:config</option>, and
|
||||
replicate the following change
|
||||
|
||||
<screen>
|
||||
services.sync.tokenServerURI: http://localhost:5000/token/1.0/sync/1.5
|
||||
</screen>
|
||||
|
||||
where <option>http://localhost:5000/</option> corresponds to the
|
||||
public url of the server.
|
||||
'';
|
||||
};
|
||||
|
||||
listen.address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
Address on which the sync server listen to.
|
||||
'';
|
||||
};
|
||||
|
||||
listen.port = mkOption {
|
||||
type = types.int;
|
||||
default = 5000;
|
||||
description = ''
|
||||
Port on which the sync server listen to.
|
||||
'';
|
||||
};
|
||||
|
||||
publicUrl = mkOption {
|
||||
type = types.str;
|
||||
default = "http://localhost:5000/";
|
||||
example = "http://sync.example.com/";
|
||||
description = ''
|
||||
Public URL with which firefox users can use to access the sync server.
|
||||
'';
|
||||
};
|
||||
|
||||
allowNewUsers = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to allow new-user signups on the server. Only request by
|
||||
existing accounts will be honored.
|
||||
'';
|
||||
};
|
||||
|
||||
sqlUri = mkOption {
|
||||
type = types.str;
|
||||
default = "sqlite:////var/db/firefox-sync-server.db";
|
||||
example = "postgresql://scott:tiger@localhost/test";
|
||||
description = ''
|
||||
The location of the database. This URL is composed of
|
||||
<option>dialect[+driver]://user:password@host/dbname[?key=value..]</option>,
|
||||
where <option>dialect</option> is a database name such as
|
||||
<option>mysql</option>, <option>oracle</option>, <option>postgresql</option>,
|
||||
etc., and <option>driver</option> the name of a DBAPI, such as
|
||||
<option>psycopg2</option>, <option>pyodbc</option>, <option>cx_oracle</option>,
|
||||
etc. The <link
|
||||
xlink:href="http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#database-urls">
|
||||
SQLAlchemy documentation</link> provides more examples and describe the syntax of
|
||||
the expected URL.
|
||||
'';
|
||||
};
|
||||
|
||||
privateConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "/etc/firefox/syncserver-secret.ini";
|
||||
description = ''
|
||||
The private config file is used to extend the generated config with confidential
|
||||
information, such as the <option>syncserver.sqlUri</option> setting if it contains a
|
||||
password, and the <option>syncserver.secret</option> setting is used by the server to
|
||||
generate cryptographically-signed authentication tokens.
|
||||
|
||||
If this file does not exists, then it is created with a generated
|
||||
<option>syncserver.secret</option> settings.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
|
||||
systemd.services.syncserver = {
|
||||
after = [ "network.target" ];
|
||||
description = "Firefox Sync Server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.pythonPackages.pasteScript pkgs.coreutils ];
|
||||
environment.PYTHONPATH = "${pkgs.pythonPackages.syncserver}/lib/${pkgs.pythonPackages.python.libPrefix}/site-packages";
|
||||
preStart = ''
|
||||
if ! test -e ${cfg.privateConfig}; then
|
||||
umask u=rwx,g=x,o=x
|
||||
mkdir -p $(dirname ${cfg.privateConfig})
|
||||
echo > ${cfg.privateConfig} '[syncserver]'
|
||||
echo >> ${cfg.privateConfig} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
|
||||
fi
|
||||
'';
|
||||
serviceConfig.ExecStart = "paster serve ${syncServerIni}";
|
||||
};
|
||||
|
||||
};
|
||||
}
|
|
@ -832,6 +832,20 @@ let
|
|||
propagatedBuildInputs = with self; [ iowait psutil pyzmq tornado mock ];
|
||||
};
|
||||
|
||||
cornice = buildPythonPackage rec {
|
||||
name = "cornice-${version}";
|
||||
version = "0.17.0";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/cornice.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "12yrcsv1sdl5w308y1cc939ppq7pi2490s54zfcbs481cvsyr1lg";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ pyramid simplejson ];
|
||||
|
||||
doCheck = false; # lazy packager
|
||||
};
|
||||
|
||||
cvxopt = buildPythonPackage rec {
|
||||
name = "${pname}-${version}";
|
||||
pname = "cvxopt";
|
||||
|
@ -1610,6 +1624,26 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
# Backported version of the ConfigParser library of Python 3.3
|
||||
configparser = if isPy3k then null else buildPythonPackage rec {
|
||||
name = "configparser-${version}";
|
||||
version = "3.3.0r2";
|
||||
|
||||
# running install_egg_info
|
||||
# error: [Errno 9] Bad file descriptor: '<stdout>'
|
||||
disabled = isPyPy;
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/c/configparser/${name}.tar.gz";
|
||||
sha256 = "6a2318590dfc4013fc5bf53c2bec14a8cb455a232295eb282a13f94786c4b0b2";
|
||||
};
|
||||
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
ColanderAlchemy = buildPythonPackage rec {
|
||||
name = "ColanderAlchemy-0.2.0";
|
||||
|
@ -3205,6 +3239,18 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
pyramid_hawkauth = buildPythonPackage rec {
|
||||
name = "pyramidhawkauth-${version}";
|
||||
version = "0.1.0";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/pyramid_hawkauth.git;
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1ic7xl72qnz382xaqhcy9ql17gx7pxbs78znp8xr66sp3dcx2s3c";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ pyramid hawkauthlib tokenlib webtest ];
|
||||
};
|
||||
|
||||
radicale = buildPythonPackage rec {
|
||||
name = "radicale-${version}";
|
||||
namePrefix = "";
|
||||
|
@ -4762,6 +4808,18 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
hawkauthlib = buildPythonPackage rec {
|
||||
name = "hawkauthlib-${version}";
|
||||
version = "0.1.1";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/hawkauthlib.git;
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "0b3xydii50ifs8qkgbpdlidfs2rzw63f807ahrq9flz90ahf582h";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ requests webob ];
|
||||
};
|
||||
|
||||
hcs_utils = buildPythonPackage rec {
|
||||
name = "hcs_utils-1.5";
|
||||
|
||||
|
@ -5183,6 +5241,29 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
konfig = buildPythonPackage rec {
|
||||
name = "konfig-${version}";
|
||||
version = "0.9";
|
||||
|
||||
# konfig unconditionaly depend on configparser, even if it is part of
|
||||
# the standard library in python 3.2 or above.
|
||||
disabled = isPy3k;
|
||||
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/konfig.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "1v9pjb9idapjlc75p6h06kx7bi8zxhfgj93yxq1bn337kmyk1xdf";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ configparser argparse ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Yet Another Config Parser";
|
||||
homepage = "https://github.com/mozilla-services/konfig";
|
||||
license = licenses.mpl20;
|
||||
};
|
||||
};
|
||||
|
||||
kitchen = buildPythonPackage (rec {
|
||||
name = "kitchen-1.1.1";
|
||||
disabled = isPy3k;
|
||||
|
@ -5792,7 +5873,6 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
|
||||
mox = buildPythonPackage rec {
|
||||
name = "mox-0.5.3";
|
||||
|
||||
|
@ -5810,6 +5890,29 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
mozsvc = buildPythonPackage rec {
|
||||
name = "mozsvc-${version}";
|
||||
version = "0.8";
|
||||
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/mozservices.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "0k1d7v8aa4xd3f9h8m5crl647136ba15i9nzdrpxg5aqmv2n0i0p";
|
||||
};
|
||||
|
||||
patches = singleton (pkgs.fetchurl {
|
||||
url = https://github.com/nbp/mozservices/commit/f86c0b0b870cd8f80ce90accde9e16ecb2e88863.diff;
|
||||
sha256 = "1lnghx821f6dqp3pa382ka07cncdz7hq0mkrh44d0q3grvrlrp9n";
|
||||
});
|
||||
|
||||
doCheck = false; # lazy packager
|
||||
propagatedBuildInputs = with self; [ pyramid simplejson konfig ];
|
||||
|
||||
meta = {
|
||||
homepage = https://github.com/mozilla-services/mozservices;
|
||||
description = "Various utilities for Mozilla apps";
|
||||
};
|
||||
};
|
||||
|
||||
mpmath = buildPythonPackage rec {
|
||||
name = "mpmath-0.17";
|
||||
|
@ -5995,6 +6098,33 @@ let
|
|||
};
|
||||
});
|
||||
|
||||
pymysql = buildPythonPackage rec {
|
||||
name = "pymysql-${version}";
|
||||
version = "0.6.3";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/PyMySQL/PyMySQL.git;
|
||||
rev = "refs/tags/pymysql-${version}";
|
||||
sha256 = "1m9fr2x49s3aixlmccr3w80skl19dya9h3x69wgl6ly1z27iyg24";
|
||||
};
|
||||
};
|
||||
|
||||
pymysqlsa = self.buildPythonPackage rec {
|
||||
name = "pymysqlsa-${version}";
|
||||
version = "1.0";
|
||||
|
||||
propagatedBuildInputs = with self; [ pymysql sqlalchemy9 ];
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/p/pymysql_sa/pymysql_sa-1.0.tar.gz";
|
||||
sha256 = "a2676bce514a29b2d6ab418812259b0c2f7564150ac53455420a20bd7935314a";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "PyMySQL dialect for SQL Alchemy";
|
||||
homepage = https://pypi.python.org/pypi/pymysql_sa;
|
||||
license = licenses.mit;
|
||||
};
|
||||
};
|
||||
|
||||
MySQL_python = buildPythonPackage {
|
||||
name = "MySQL-python-1.2.3";
|
||||
|
@ -6746,6 +6876,26 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
pasteScript = buildPythonPackage rec {
|
||||
version = "1.7.5";
|
||||
name = "PasterScript-${version}";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "http://pypi.python.org/packages/source/P/PasteScript/${name}.tar.gz";
|
||||
sha256 = "2b685be69d6ac8bc0fe6f558f119660259db26a15e16a4943c515fbee8093539";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
buildInputs = with self; [ nose ];
|
||||
propagatedBuildInputs = with self; [ paste paste_deploy cheetah argparse ];
|
||||
|
||||
meta = {
|
||||
description = "A pluggable command-line frontend, including commands to setup package file layouts";
|
||||
homepage = http://pythonpaste.org/script/;
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
pathpy = buildPythonPackage rec {
|
||||
name = "path.py-5.2";
|
||||
|
||||
|
@ -10497,6 +10647,23 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
umemcache = buildPythonPackage rec {
|
||||
name = "umemcache-${version}";
|
||||
version = "1.6.3";
|
||||
disabled = isPy3k;
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://pypi.python.org/packages/source/u/umemcache/${name}.zip";
|
||||
sha256 = "211031a03576b7796bf277dbc9c9e3e754ba066bbb7fb601ab5c6291b8ec1918";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Ultra fast memcache client written in highly optimized C++ with Python bindings";
|
||||
homepage = https://github.com/esnme/ultramemcache;
|
||||
license = licenses.bsdOriginal;
|
||||
};
|
||||
};
|
||||
|
||||
unittest2 = buildPythonPackage rec {
|
||||
version = "0.5.1";
|
||||
name = "unittest2-${version}";
|
||||
|
@ -11683,6 +11850,17 @@ let
|
|||
doCheck = false;
|
||||
};
|
||||
|
||||
tokenlib = buildPythonPackage rec {
|
||||
name = "tokenlib-${version}";
|
||||
version = "0.3.1";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/tokenlib.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "0dmq41sy64jmkj7n49jgbpii5n5d41ci263lyhqbff5slr289m51";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [ requests webob ];
|
||||
};
|
||||
|
||||
tornadokick = buildPythonPackage rec {
|
||||
name = "tornadokick-0.2.1";
|
||||
|
@ -11765,6 +11943,26 @@ let
|
|||
propagatedBuildInputs = with self; [ pkgs.libarchive ];
|
||||
};
|
||||
|
||||
pybrowserid = buildPythonPackage rec {
|
||||
name = "PyBrowserID-${version}";
|
||||
version = "0.9.2";
|
||||
disabled = isPy3k; # Errors in the test suite.
|
||||
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla/PyBrowserID.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "0nyqb0v8yrkqnrqsh1hlhvzr2pyvkxvkw701p3gpsvk29c0gb5n6";
|
||||
};
|
||||
|
||||
buildInputs = with self; [ mock unittest2 ];
|
||||
propagatedBuildInputs = with self; [ requests ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Python library for the BrowserID Protocol";
|
||||
homepage = "https://github.com/mozilla/PyBrowserID";
|
||||
license = licenses.mpl20;
|
||||
};
|
||||
};
|
||||
|
||||
pyzmq = buildPythonPackage rec {
|
||||
name = "pyzmq-13.0.0";
|
||||
|
@ -11776,6 +11974,28 @@ let
|
|||
doCheck = false;
|
||||
};
|
||||
|
||||
tokenserver = buildPythonPackage rec {
|
||||
name = "tokenserver-${version}";
|
||||
version = "1.2.11";
|
||||
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/tokenserver.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "1pjrw7xhhqx7h4s08h1lsaa499r2ymc41zdknjimn6zlqdjdk1fb";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
propagatedBuildInputs = with self; [ cornice mozsvc pybrowserid tokenlib ];
|
||||
|
||||
patchPhase = ''
|
||||
sed -i "s|'testfixtures'||" setup.py
|
||||
'';
|
||||
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
tissue = buildPythonPackage rec {
|
||||
name = "tissue-0.9.2";
|
||||
|
@ -12646,6 +12866,46 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
syncserver = buildPythonPackage rec {
|
||||
name = "syncserver-${version}";
|
||||
version = "1.5.0";
|
||||
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/syncserver.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "1xljylycxg7351hmqh7aa6fvvsjg06zvd4r7hcjqyd0k0sxvk7y6";
|
||||
};
|
||||
|
||||
buildInputs = with self; [ unittest2 ];
|
||||
propagatedBuildInputs = with self; [
|
||||
cornice gunicorn pyramid requests simplejson sqlalchemy9 mozsvc tokenserver
|
||||
serversyncstorage configparser
|
||||
];
|
||||
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
serversyncstorage = buildPythonPackage rec {
|
||||
name = "serversyncstorage-${version}";
|
||||
version = "1.5.11";
|
||||
src = pkgs.fetchgit {
|
||||
url = https://github.com/mozilla-services/server-syncstorage.git;
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "1byq2k2f36f1jli9599ygfm2qsb4adl9140sxjpgfjbznb74q90q";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with self; [
|
||||
pyramid sqlalchemy9 simplejson mozsvc cornice pyramid_hawkauth pymysql
|
||||
pymysqlsa umemcache wsgiproxy2 requests pybrowserid
|
||||
];
|
||||
|
||||
doCheck = false; # lazy packager
|
||||
};
|
||||
|
||||
|
||||
thumbor = self.buildPythonPackage rec {
|
||||
name = "thumbor-4.0.4";
|
||||
|
||||
|
|
Loading…
Reference in a new issue