Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

Merge pull request #33372 from Mic92/memcache

nixos/memcached: make unix sockets usuable

authored by Jörg Thalheim and committed by GitHub f29ecd56 0f925943

+38 -25
+8
nixos/doc/manual/release-notes/rl-1803.xml
··· 131 131 Other types dependencies should be unaffected. 132 132 </para> 133 133 </listitem> 134 + <listitem> 135 + <para> 136 + The <literal>memcached</literal> service no longer accept dynamic socket 137 + paths via <option>services.memcached.socket</option>. Unix sockets can be 138 + still enabled by <option>services.memcached.enableUnixSocket</option> and 139 + will be accessible at <literal>/run/memcached/memcached.sock</literal>. 140 + </para> 141 + </listitem> 134 142 </itemizedlist> 135 143 136 144 </section>
+2 -2
nixos/modules/misc/ids.nix
··· 197 197 #input = 174; # unused 198 198 sddm = 175; 199 199 tss = 176; 200 - memcached = 177; 200 + #memcached = 177; removed 2018-01-03 201 201 ntp = 179; 202 202 zabbix = 180; 203 203 #redis = 181; removed 2018-01-03 ··· 475 475 input = 174; 476 476 sddm = 175; 477 477 tss = 176; 478 - #memcached = 177; # unused 478 + #memcached = 177; # unused, removed 2018-01-03 479 479 #ntp = 179; # unused 480 480 #zabbix = 180; # unused 481 481 #redis = 181; # unused, removed 2018-01-03
+28 -23
nixos/modules/services/databases/memcached.nix
··· 40 40 description = "The port to bind to"; 41 41 }; 42 42 43 - socket = mkOption { 44 - default = ""; 45 - description = "Unix socket path to listen on. Setting this will disable network support"; 46 - example = "/var/run/memcached"; 47 - }; 43 + enableUnixSocket = mkEnableOption "unix socket at /run/memcached/memcached.sock"; 48 44 49 45 maxMemory = mkOption { 50 46 default = 64; ··· 68 64 69 65 config = mkIf config.services.memcached.enable { 70 66 71 - users.extraUsers.memcached = 72 - { name = cfg.user; 73 - uid = config.ids.uids.memcached; 74 - description = "Memcached server user"; 75 - }; 67 + users.extraUsers = optional (cfg.user == "memcached") { 68 + name = "memcached"; 69 + description = "Memcached server user"; 70 + }; 76 71 77 72 environment.systemPackages = [ memcached ]; 78 73 79 - systemd.services.memcached = 80 - { description = "Memcached server"; 74 + systemd.services.memcached = { 75 + description = "Memcached server"; 81 76 82 - wantedBy = [ "multi-user.target" ]; 83 - after = [ "network.target" ]; 77 + wantedBy = [ "multi-user.target" ]; 78 + after = [ "network.target" ]; 84 79 85 - serviceConfig = { 86 - ExecStart = 87 - let 88 - networking = if cfg.socket != "" 89 - then "-s ${cfg.socket}" 90 - else "-l ${cfg.listen} -p ${toString cfg.port}"; 91 - in "${memcached}/bin/memcached ${networking} -m ${toString cfg.maxMemory} -c ${toString cfg.maxConnections} ${concatStringsSep " " cfg.extraOptions}"; 80 + serviceConfig = { 81 + PermissionsStartOnly = true; 82 + ExecStartPre = optionals cfg.enableUnixSocket [ 83 + "${pkgs.coreutils}/bin/install -d -o ${cfg.user} /run/memcached/" 84 + "${pkgs.coreutils}/bin/chown -R ${cfg.user} /run/memcached/" 85 + ]; 86 + ExecStart = 87 + let 88 + networking = if cfg.enableUnixSocket 89 + then "-s /run/memcached/memcached.sock" 90 + else "-l ${cfg.listen} -p ${toString cfg.port}"; 91 + in "${memcached}/bin/memcached ${networking} -m ${toString cfg.maxMemory} -c ${toString cfg.maxConnections} ${concatStringsSep " " cfg.extraOptions}"; 92 92 93 - User = cfg.user; 94 - }; 93 + User = cfg.user; 95 94 }; 95 + }; 96 96 }; 97 + imports = [ 98 + (mkRemovedOptionModule ["services" "memcached" "socket"] '' 99 + This option was replaced by a fixed unix socket path at /run/memcached/memcached.sock enabled using services.memached.enableUnixSocket. 100 + '') 101 + ]; 97 102 98 103 }