summaryrefslogtreecommitdiffstats
path: root/makefu
diff options
context:
space:
mode:
Diffstat (limited to 'makefu')
-rw-r--r--makefu/2configs/dcpp/airdcpp.nix14
-rw-r--r--makefu/3modules/airdcpp.nix271
-rw-r--r--makefu/3modules/default.nix1
-rw-r--r--makefu/5pkgs/airdcpp-webclient/default.nix27
4 files changed, 7 insertions, 306 deletions
diff --git a/makefu/2configs/dcpp/airdcpp.nix b/makefu/2configs/dcpp/airdcpp.nix
index 44940812d..fe05effd9 100644
--- a/makefu/2configs/dcpp/airdcpp.nix
+++ b/makefu/2configs/dcpp/airdcpp.nix
@@ -1,6 +1,6 @@
{ config, ... }:
{
- makefu.airdcpp = {
+ krebs.airdcpp = {
enable = true;
extraGroups = [ "download" ];
web.port = 5600;
@@ -14,8 +14,8 @@
dcpp = {
shares = {
# Incoming must be writeable!
- incoming = { path = config.makefu.dl-dir + "/dcpp"; incoming = true; };
- audiobooks.path = config.makefu.dl-dir + "/audiobooks";
+ incoming = { path = config.makefu.dl-dir + "/finished/dcpp"; incoming = true; };
+ audiobooks.path = config.makefu.dl-dir + "/finished/audiobooks";
};
Nick = "makefu";
DownloadSpeed = "1000";
@@ -23,13 +23,13 @@
};
};
networking.firewall.allowedTCPPorts =
- [ config.makefu.airdcpp.dcpp.InPort
- config.makefu.airdcpp.dcpp.TLSPort
+ [ config.krebs.airdcpp.dcpp.InPort
+ config.krebs.airdcpp.dcpp.TLSPort
];
- networking.firewall.allowedUDPPorts = [ config.makefu.airdcpp.dcpp.UDPPort ];
+ networking.firewall.allowedUDPPorts = [ config.krebs.airdcpp.dcpp.UDPPort ];
services.nginx.virtualHosts."dcpp.${config.krebs.build.host.name}.r".locations."/" =
- { proxyPass = "http://localhost:${toString config.makefu.airdcpp.web.port}/";
+ { proxyPass = "http://localhost:${toString config.krebs.airdcpp.web.port}/";
extraConfig = ''
proxy_set_header Host $host;
diff --git a/makefu/3modules/airdcpp.nix b/makefu/3modules/airdcpp.nix
deleted file mode 100644
index 342052e70..000000000
--- a/makefu/3modules/airdcpp.nix
+++ /dev/null
@@ -1,271 +0,0 @@
-{ config, lib, pkgs, ... }:
-with import <stockholm/lib>; #genid
-let
- cfg = config.makefu.airdcpp;
-
- out = {
- options.makefu.airdcpp = api;
- config = lib.mkIf cfg.enable imp;
- };
-
- api = with types;{
- enable = mkEnableOption "airdcpp";
-
- package = mkOption {
- type = package;
- default = pkgs.airdcpp-webclient;
- };
-
- user = mkOption {
- description = ''
- user which will run udpt. if kept default a new user will be created
- '';
- type = str;
- default = "airdcpp";
- };
- extraGroups = mkOption {
- description = ''extra groups for the user (only for default user)'';
- type = listOf str;
- default = [];
- example = [ "nginx" ];
- };
-
- stateDir = mkOption {
- description = ''
- directory for storing state (pid,config)
- '';
- type = str;
- default = "/var/lib/airdcpp";
- };
- hubs = mkOption {
- type = attrsOf (submodule ( { config, ... }: {
- options = {
- Nick = mkOption {
- description = ''
- Nick Name for hub
- '';
- type = str;
- default = cfg.Nick;
- };
- Password = mkOption {
- description = ''
- Password to be used
-
- WARNING: will be stored in plain text in /nix/store
- '';
- type = str;
- default = "";
- apply = lib.removeSuffix "\n";
- };
- Server = mkOption {
- description = ''
- URL to the hub (must be provided)
- '';
- type = str;
- };
- AutoConnect = mkOption {
- description = ''
- automatically connect to the hub
- '';
- type = bool;
- default = false;
- };
- };
- }));
- description = "hubs which should be configured via Favorites.xml,
- Options are only used if no initial Favorites.xml file is provided and none exists";
- default = {};
- };
- initialFavoritesConfigFile = mkOption {
- description = ''
- path inital Favorites.xml configuration if none exists
- '';
- type = nullOr path;
- default = null;
- };
- dcpp = {
- Nick = mkOption {
- description = ''
- Nick Name for connection
- '';
- type = str;
- default = "kevin";
- };
- InPort = mkOption {
- description = "Input Port";
- type = int;
- default = 16849;
- };
- UDPPort = mkOption {
- description = "UDP open Port";
- type = int;
- default = 16849;
- };
- TLSPort = mkOption {
- description = "TLS open Port";
- type = int;
- default = 16869;
- };
- DownloadSpeed = mkOption {
- description = "Total Download Speed in Mbps/s";
- type = str;
- default = "100";
- };
- UploadSpeed = mkOption {
- description = "Total Upload Speed in Mbp/s";
- type = str;
- default = "100";
- };
- shares = mkOption {
- default = {};
- type = attrsOf (submodule ( { config, ... }: {
- options = {
- path = mkOption {
- description = "path to the share";
- type = str;
- };
- incoming = mkOption {
- description = "incoming";
- type = bool;
- default = false;
- };
- };
- }));
- };
- initialConfigFile = mkOption {
- description = ''
- path inital DCPlusPlus.xml configuration if none exists
- '';
- type = nullOr path;
- default = null;
- };
- };
- web = {
- port = mkOption {
- description = ''web-ui port
-
- NOTE: once the initial config had been written to the state directory it will not be replaced
- '';
- type = int;
- default = 5600;
- };
- initialConfigFile = mkOption {
- description = ''
- path inital WebServer.xml configuration if none exists
- '';
- type = nullOr path;
- default = null;
- };
- # TODO: tlsPort
- users = mkOption {
- type = attrsOf (submodule ( { config, ... }: {
- options = {
- password = mkOption {
- description = "password of user";
- type = str;
- apply = lib.removeSuffix "\n";
- };
- permissions = mkOption {
- description = "user permissions";
- type = str;
- default = "admin";
- };
- };
- }));
- };
- };
- };
-
- imp = let
- genUsers = users: concatMapStringsSep "\n" (user:
- ''<WebUser Username="${user.name}" Password="${user.password}" LastLogin="0" Permissions="${user.permissions}"/>'' )
- (mapAttrsToList (name: val: val // { inherit name; }) users);
- webConfigFile = if (cfg.web.initialConfigFile == null) then builtins.trace "warning: airdcpp passwords are stored in plain text" pkgs.writeText "initial-config" ''
- <?xml version="1.0" encoding="utf-8" standalone="yes"?>
- <WebServer>
- <Config>
- <Server Port="${toString cfg.web.port}"/>
- <TLSServer Port="0" Certificate="" CertificateKey=""/>
- </Config>
- <WebUsers>${genUsers cfg.web.users}
- </WebUsers>
- </WebServer>
- '' else cfg.web.initialConfigFile;
- genHubs = hubs: concatMapStringsSep "\n" (hub:
- ''<Hub Name="${hub.name}" Connect="${
- if hub.AutoConnect then "1" else "0"
- }" Description="" Password="${hub.Password}" Server="${hub.Server}" ChatUserSplit="0" UserListState="1" HubFrameOrder="" HubFrameWidths="" HubFrameVisible="" Group="" Bottom="0" Top="0" Right="0" Left="0" Nick="${hub.Nick}"/>'' )
- (mapAttrsToList (name: val: val // { inherit name; }) cfg.hubs);
- favoritesConfigFile = if (cfg.initialFavoritesConfigFile == null) then
- builtins.trace "warning: airdcpp hub passwords are stored in plain text" pkgs.writeText "initial-config" ''
- <?xml version="1.0" encoding="utf-8" standalone="yes"?>
- <Favorites>
- <Hubs>
- ${genHubs cfg.hubs}
- </Hubs>
- </Favorites>
- '' else cfg.initialFavoritesConfigFile;
- genShares = shares: concatMapStringsSep "\n" (share:
- ''<Directory Virtual="stockholm" Incoming="${
- if share.incoming then "1" else "0"
- }" LastRefreshTime="0">${share.path}</Directory>'' )
- (mapAttrsToList (name: val: val // { inherit name; }) shares);
- dcppConfigFile = if (cfg.dcpp.initialConfigFile == null) then pkgs.writeText "initial-config" ''
- <?xml version="1.0" encoding="utf-8" standalone="yes"?>
- <DCPlusPlus>
- <Settings>
- <Nick type="string">${cfg.dcpp.Nick}</Nick>
- <InPort type="int">${toString cfg.dcpp.InPort}</InPort>
- <UDPPort type="int">${toString cfg.dcpp.UDPPort}</UDPPort>
- <TLSPort type="int">${toString cfg.dcpp.TLSPort}</TLSPort>
- <AutoDetectIncomingConnection type="int">0</AutoDetectIncomingConnection>
- <NoIpOverride type="int">1</NoIpOverride>
- <WizardRunNew type="int">0</WizardRunNew>
- <IPUpdate type="int">0</IPUpdate>
- <AlwaysCCPM type="int">1</AlwaysCCPM>
- <DownloadSpeed type="string">${cfg.dcpp.DownloadSpeed}</DownloadSpeed>
- <UploadSpeed type="string">${cfg.dcpp.UploadSpeed}</UploadSpeed>
- </Settings>
- <Share Token="0" Name="Default">
- ${genShares cfg.dcpp.shares}
- <NoShare/>
- </Share>
- <ChatFilterItems/>
- </DCPlusPlus>
- '' else cfg.dcpp.initialConfigFile;
- in {
- systemd.services.airdcpp = {
- description = "airdcpp webui";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- restartIfChanged = true;
- serviceConfig = {
- Type = "simple";
- ExecStartPre = pkgs.writeDash "prepare-env" ''
- d=${cfg.stateDir}/WebServer.xml
- test -e $d || install -m700 -o${cfg.user} ${webConfigFile} $d
- d=${cfg.stateDir}/DCPlusPlus.xml
- test -e $d || install -m700 -o${cfg.user} ${dcppConfigFile} $d
- d=${cfg.stateDir}/Favorites.xml
- test -e $d || install -m700 -o${cfg.user} ${favoritesConfigFile} $d
- '';
- PermissionsStartOnly = true;
- ExecStart = "${cfg.package}/bin/airdcppd -c=${cfg.stateDir} -p=${cfg.stateDir}/airdcpp.pid";
- PrivateTmp = true;
- WorkingDirectory = cfg.stateDir;
- User = "${cfg.user}";
- };
- };
- users = lib.mkIf (cfg.user == "airdcpp") {
- users.airdcpp = {
- uid = genid "airdcpp";
- home = cfg.stateDir;
- createHome = true;
- inherit (cfg) extraGroups;
- };
- groups.airdcpp.gid = genid "airdcpp";
- };
- };
-in
-out
-
diff --git a/makefu/3modules/default.nix b/makefu/3modules/default.nix
index 963649c63..7146174fb 100644
--- a/makefu/3modules/default.nix
+++ b/makefu/3modules/default.nix
@@ -2,7 +2,6 @@ _:
{
imports = [
- ./airdcpp.nix
./awesome-extra.nix
./deluge.nix
./forward-journal.nix
diff --git a/makefu/5pkgs/airdcpp-webclient/default.nix b/makefu/5pkgs/airdcpp-webclient/default.nix
deleted file mode 100644
index 361a7da65..000000000
--- a/makefu/5pkgs/airdcpp-webclient/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, fetchurl
-}:
-stdenv.mkDerivation rec {
- name = "airdcpp-webclient-${version}";
- version = "2.3.0";
-
- src = fetchurl {
- url = http://web-builds.airdcpp.net/stable/airdcpp_2.3.0_webui-2.3.0_64-bit_portable.tar.gz;
- sha256 = "0yvcl0nc70fghc7vfsgvbpryi5q97arld8adql4way4qa0mdnyv1";
- };
-
- phases = [ "unpackPhase" "installPhase" ];
- installPhase = ''
- mkdir -p $out/{share,bin}
- cp -r * $out/share
- ln -s $out/share/airdcppd $out/bin/
- '';
-
- meta = with stdenv.lib; {
- # to start it: airdcpp -p=<pid-file> -c=<config-store-path (must be writeable)> --configure
- description = "dcpp client (statically precompiled)";
- homepage = http://fixme;
- license = licenses.gpl3;
- maintainers = with maintainers; [ makefu ];
- platforms = with platforms; linux;
- };
-}