diff --git a/modules/module-list.nix b/modules/module-list.nix index c4b8fa5a9fe..a61cbbea469 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -132,6 +132,7 @@ ./services/networking/ejabberd.nix ./services/networking/firewall.nix ./services/networking/flashpolicyd.nix + ./services/networking/freenet.nix ./services/networking/git-daemon.nix ./services/networking/gnunet.nix ./services/networking/gogoclient.nix diff --git a/modules/services/networking/freenet.nix b/modules/services/networking/freenet.nix new file mode 100644 index 00000000000..4087fe524d0 --- /dev/null +++ b/modules/services/networking/freenet.nix @@ -0,0 +1,63 @@ +# NixOS module for Transmission BitTorrent daemon + +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.freenet; + varDir = "/var/lib/freenet"; + +in + +{ + + ### configuration + + options = { + + services.freenet = { + + enable = mkOption { + type = types.uniq types.bool; + default = false; + description = "Enable the Freenet daemon"; + }; + + nice = mkOption { + type = types.uniq types.int; + default = 10; + description = "Set the nice level for the Freenet daemon"; + }; + + }; + + }; + + ### implementation + + config = mkIf cfg.enable { + + systemd.services.freenet = { + description = "Freenet daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig.ExecStart = "${pkgs.freenet}/bin/freenet"; + serviceConfig.User = "freenet"; + serviceConfig.UMask = "0007"; + serviceConfig.WorkingDirectory = varDir; + serviceConfig.Nice = cfg.nice; + }; + + users.extraUsers.freenet = { + group = "freenet"; + description = "Psyced daemon user"; + home = varDir; + createHome = true; + }; + + users.extraGroups.freenet = {}; + }; + +}