at 17.09-beta 1.2 kB view raw
1# NixOS module for Freenet daemon 2 3{ config, lib, pkgs, ... }: 4 5with lib; 6 7let 8 9 cfg = config.services.freenet; 10 varDir = "/var/lib/freenet"; 11 12in 13 14{ 15 16 ### configuration 17 18 options = { 19 20 services.freenet = { 21 22 enable = mkOption { 23 type = types.bool; 24 default = false; 25 description = "Enable the Freenet daemon"; 26 }; 27 28 nice = mkOption { 29 type = types.int; 30 default = 10; 31 description = "Set the nice level for the Freenet daemon"; 32 }; 33 34 }; 35 36 }; 37 38 ### implementation 39 40 config = mkIf cfg.enable { 41 42 systemd.services.freenet = { 43 description = "Freenet daemon"; 44 after = [ "network.target" ]; 45 wantedBy = [ "multi-user.target" ]; 46 serviceConfig.ExecStart = "${pkgs.freenet}/bin/freenet"; 47 serviceConfig.User = "freenet"; 48 serviceConfig.UMask = "0007"; 49 serviceConfig.WorkingDirectory = varDir; 50 serviceConfig.Nice = cfg.nice; 51 }; 52 53 users.extraUsers.freenet = { 54 group = "freenet"; 55 description = "Freenet daemon user"; 56 home = varDir; 57 createHome = true; 58 uid = config.ids.uids.freenet; 59 }; 60 61 users.extraGroups.freenet.gid = config.ids.gids.freenet; 62 }; 63 64}