mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 21:33:03 +03:00
netatalk: 3.1.0 -> 3.1.7, new service module
This commit is contained in:
parent
e3aa635e68
commit
a2b8cc0aaf
@ -275,6 +275,7 @@
|
|||||||
./services/monitoring/zabbix-agent.nix
|
./services/monitoring/zabbix-agent.nix
|
||||||
./services/monitoring/zabbix-server.nix
|
./services/monitoring/zabbix-server.nix
|
||||||
./services/network-filesystems/drbd.nix
|
./services/network-filesystems/drbd.nix
|
||||||
|
./services/network-filesystems/netatalk.nix
|
||||||
./services/network-filesystems/nfsd.nix
|
./services/network-filesystems/nfsd.nix
|
||||||
./services/network-filesystems/openafs-client/default.nix
|
./services/network-filesystems/openafs-client/default.nix
|
||||||
./services/network-filesystems/rsyncd.nix
|
./services/network-filesystems/rsyncd.nix
|
||||||
|
150
nixos/modules/services/network-filesystems/netatalk.nix
Normal file
150
nixos/modules/services/network-filesystems/netatalk.nix
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.netatalk;
|
||||||
|
|
||||||
|
extmapFile = pkgs.writeText "extmap.conf" cfg.extmap;
|
||||||
|
|
||||||
|
afpToString = x: if builtins.typeOf x == "bool"
|
||||||
|
then (if x then "true" else "false")
|
||||||
|
else toString x;
|
||||||
|
|
||||||
|
volumeConfig = name:
|
||||||
|
let vol = getAttr name cfg.volumes; in
|
||||||
|
"[${name}]\n " + (toString (
|
||||||
|
map
|
||||||
|
(key: "${key} = ${afpToString (getAttr key vol)}\n")
|
||||||
|
(attrNames vol)
|
||||||
|
));
|
||||||
|
|
||||||
|
afpConf = ''[Global]
|
||||||
|
extmap file = ${extmapFile}
|
||||||
|
afp port = ${toString cfg.port}
|
||||||
|
|
||||||
|
${cfg.extraConfig}
|
||||||
|
|
||||||
|
${if cfg.homes.enable then ''[Homes]
|
||||||
|
${optionalString (cfg.homes.path != "") "path = ${cfg.homes.path}"}
|
||||||
|
basedir regex = ${cfg.homes.basedirRegex}
|
||||||
|
${cfg.homes.extraConfig}
|
||||||
|
'' else ""}
|
||||||
|
|
||||||
|
${toString (map volumeConfig (attrNames cfg.volumes))}
|
||||||
|
'';
|
||||||
|
|
||||||
|
afpConfFile = pkgs.writeText "afp.conf" afpConf;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.netatalk = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Whether to enable the Netatalk AFP fileserver.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
default = 548;
|
||||||
|
description = "TCP port to be used for AFP.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
example = "uam list = uams_guest.so";
|
||||||
|
description = ''
|
||||||
|
Lines of configuration to add to the <literal>[Global]</literal> section.
|
||||||
|
See <literal>man apf.conf</literal> for more information.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
homes = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Enable sharing of the UNIX server user home directories.";
|
||||||
|
};
|
||||||
|
|
||||||
|
path = mkOption {
|
||||||
|
default = "";
|
||||||
|
example = "afp-data";
|
||||||
|
description = "Share not the whole user home but this subdirectory path.";
|
||||||
|
};
|
||||||
|
|
||||||
|
basedirRegex = mkOption {
|
||||||
|
example = "/home";
|
||||||
|
description = "Regex which matches the parent directory of the user homes.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Lines of configuration to add to the <literal>[Homes]</literal> section.
|
||||||
|
See <literal>man apf.conf</literal> for more information.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
volumes = mkOption {
|
||||||
|
default = { };
|
||||||
|
type = types.attrsOf (types.attrsOf types.unspecified);
|
||||||
|
description =
|
||||||
|
''
|
||||||
|
Set of AFP volumes to export.
|
||||||
|
See <literal>man apf.conf</literal> for more information.
|
||||||
|
'';
|
||||||
|
example =
|
||||||
|
{ srv =
|
||||||
|
{ path = "/srv";
|
||||||
|
"read only" = true;
|
||||||
|
"hosts allow" = "10.1.0.0/16 10.2.1.100 2001:0db8:1234::/48";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extmap = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
File name extension mappings.
|
||||||
|
See <literal>man extmap.conf</literal> for more information.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
systemd.services.netatalk = {
|
||||||
|
description = "Netatalk AFP fileserver for Macintosh clients";
|
||||||
|
unitConfig.Documentation = "man:afp.conf(5) man:netatalk(8) man:afpd(8) man:cnid_metad(8) man:cnid_dbd(8)";
|
||||||
|
after = [ "network.target" "avahi-daemon.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
path = [ pkgs.netatalk ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "forking";
|
||||||
|
GuessMainPID = "no";
|
||||||
|
PIDFile = "/run/lock/netatalk";
|
||||||
|
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -m 0755 -p /var/lib/netatalk/CNID";
|
||||||
|
ExecStart = "${pkgs.netatalk}/sbin/netatalk -F ${afpConfFile}";
|
||||||
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
|
ExecStop = "${pkgs.coreutils}/bin/kill -TERM $MAINPID";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
security.pam.services.netatalk.unixAuth = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -1,24 +1,28 @@
|
|||||||
{ fetchurl, stdenv, pkgconfig, db, libgcrypt, avahi, libiconv, pam, openssl }:
|
{ fetchurl, stdenv, pkgconfig, db, libgcrypt, avahi, libiconv, pam, openssl, acl }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec{
|
||||||
name = "netatalk-3.1.0";
|
name = "netatalk-3.1.7";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/netatalk/netatalk/${name}.tar.bz2";
|
url = "mirror://sourceforge/netatalk/netatalk/${name}.tar.bz2";
|
||||||
sha256 = "1d8dc8ysslkis4yl1xab1w9p0pz7a1kg0i6fds4wxsp4fhb6wqhq";
|
sha256 = "0wf09fyqzza024qr1s26z5x7rsvh9zb4pv598gw7gm77wjcr6174";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pkgconfig db libgcrypt avahi pam openssl libiconv ];
|
buildInputs = [ pkgconfig db libgcrypt avahi libiconv pam openssl acl ];
|
||||||
|
|
||||||
|
patches = ./omitLocalstatedirCreation.patch;
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--with-bdb=${db}"
|
"--with-bdb=${db}"
|
||||||
"--with-openssl=${openssl}"
|
"--with-openssl=${openssl}"
|
||||||
|
"--with-lockfile=/run/lock/netatalk"
|
||||||
|
"--localstatedir=/var/lib"
|
||||||
];
|
];
|
||||||
|
|
||||||
enableParallelBuild = true;
|
enableParallelBuild = true;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "Apple File Protocl Server";
|
description = "Apple Filing Protocol Server";
|
||||||
homepage = http://netatalk.sourceforge.net/;
|
homepage = http://netatalk.sourceforge.net/;
|
||||||
license = stdenv.lib.licenses.gpl3;
|
license = stdenv.lib.licenses.gpl3;
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
diff -ur netatalk-3.1.7-old/config/Makefile.in netatalk-3.1.7-new/config/Makefile.in
|
||||||
|
--- netatalk-3.1.7-old/config/Makefile.in 2014-08-29 03:33:35.000000000 -0700
|
||||||
|
+++ netatalk-3.1.7-new/config/Makefile.in 2015-08-13 20:52:35.000000000 -0700
|
||||||
|
@@ -699,7 +699,7 @@
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
-install-data-am: install-data-local install-dbusserviceDATA
|
||||||
|
+install-data-am: install-dbusserviceDATA
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
@@ -754,7 +754,7 @@
|
||||||
|
cscopelist cscopelist-recursive ctags ctags-recursive \
|
||||||
|
distclean distclean-generic distclean-libtool distclean-tags \
|
||||||
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
|
- install-am install-data install-data-am install-data-local \
|
||||||
|
+ install-am install-data install-data-am \
|
||||||
|
install-dbusserviceDATA install-dvi install-dvi-am \
|
||||||
|
install-exec install-exec-am install-html install-html-am \
|
||||||
|
install-info install-info-am install-man install-pdf \
|
||||||
|
@@ -782,12 +782,6 @@
|
||||||
|
# install configuration files
|
||||||
|
#
|
||||||
|
|
||||||
|
-install-data-local: install-config-files
|
||||||
|
- mkdir -pm 0755 $(DESTDIR)$(localstatedir)/netatalk/
|
||||||
|
- mkdir -pm 0755 $(DESTDIR)$(localstatedir)/netatalk/CNID/
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(localstatedir)/netatalk/
|
||||||
|
- $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(localstatedir)/netatalk/CNID/
|
||||||
|
-
|
||||||
|
uninstall-local:
|
||||||
|
@for f in $(CONFFILES) $(GENFILES); do \
|
||||||
|
echo rm -f $(DESTDIR)$(pkgconfdir)/$$f; \
|
||||||
|
|
Loading…
Reference in New Issue
Block a user