apt-cacher-ng: init package and module

once apt-cacher-ng arrives in nixos stable it will be removed from stockholm
This commit is contained in:
makefu 2015-11-17 12:16:51 +01:00
parent dcf55255e6
commit 48c9789141
2 changed files with 176 additions and 0 deletions
krebs
3modules
5pkgs/apt-cacher-ng

View file

@ -0,0 +1,155 @@
{ config, pkgs, lib, ... }:
with lib;
let
acng-config = pkgs.writeTextFile {
name = "acng-configuration";
destination = "/acng.conf";
text = ''
ForeGround: 1
CacheDir: ${cfg.cacheDir}
LogDir: ${cfg.logDir}
PidFile: /var/run/apt-cacher-ng.pid
ExTreshold: ${toString cfg.cacheExpiration}
Port: ${toString cfg.port}
BindAddress: ${cfg.bindAddress}
# defaults:
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol
Remap-cygwin: file:cygwin_mirrors /cygwin
Remap-sfnet: file:sfnet_mirrors
Remap-alxrep: file:archlx_mirrors /archlinux
Remap-fedora: file:fedora_mirrors
Remap-epel: file:epel_mirrors
Remap-slrep: file:sl_mirrors # Scientific Linux
Remap-gentoo: file:gentoo_mirrors.gz /gentoo ; file:backends_gentoo
ReportPage: acng-report.html
SupportDir: ${pkgs.apt-cacher-ng}/lib/apt-cacher-ng
LocalDirs: acng-doc ${pkgs.apt-cacher-ng}/share/doc/apt-cacher-ng
# Nix cache
${optionalString cfg.enableNixCache ''
Remap-nix: http://cache.nixos.org /nixos ; https://cache.nixos.org
PfilePatternEx: (^|.*?/).*\.narinfo(|\.gz|\.xz|\.bz2)$
VfilePatternEx: (^|.*?/)nix-cache-info$
''}
${cfg.extraConfig}
''; };
acng-home = "/var/cache/acng";
cfg = config.krebs.apt-cacher-ng;
api = {
enable = mkEnableOption "apt-cacher-ng";
cacheDir = mkOption {
default = acng-home + "/cache";
type = types.str;
description = ''
Path to apt-cacher-ng cache directory.
Will be created and chowned to acng-user
'';
};
logDir = mkOption {
default = acng-home + "/log";
type = types.str;
description = ''
Path to apt-cacher-ng log directory.
Will be created and chowned to acng-user
'';
};
port = mkOption {
default = 3142;
type = types.int;
description = ''
port of apt-cacher-ng
'';
};
bindAddress = mkOption {
default = "";
type = types.str;
example = "localhost 192.168.7.254 publicNameOnMainInterface";
description = ''
listen address of apt-cacher-ng. Defaults to every interface.
'';
};
cacheExpiration = mkOption {
default = 4;
type = types.int;
description = ''
number of days before packages expire in the cache without being
requested.
'';
};
enableNixCache = mkOption {
default = true;
type = types.bool;
description = ''
enable cache.nixos.org caching via PfilePatternEx and VfilePatternEx.
to use the apt-cacher-ng in your nixos configuration:
nix.binary-cache = [ http://acng-host:port/nixos ];
These options cannot be used in extraConfig, use SVfilePattern and
SPfilePattern or disable this option.
'';
};
extraConfig = mkOption {
default = "";
type = types.lines;
description = ''
extra config appended to the generated acng.conf
'';
};
};
imp = {
users.extraUsers.acng = {
# uid = config.ids.uids.acng;
uid = 897955083; #genid Reaktor
description = "apt-cacher-ng";
home = acng-home;
createHome = false;
};
users.extraGroups.acng = {
gid = 897955083; #genid Reaktor
# gid = config.ids.gids.Reaktor;
};
systemd.services.apt-cacher-ng = {
description = "apt-cacher-ng";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
PermissionsStartOnly = true;
ExecStartPre = pkgs.writeScript "acng-init" ''
#!/bin/sh
mkdir -p ${shell.escape cfg.cacheDir} ${shell.escape cfg.logDir}
chown acng:acng ${shell.escape cfg.cacheDir} ${shell.escape cfg.logDir}
'';
ExecStart = "${pkgs.apt-cacher-ng}/bin/apt-cacher-ng -c ${acng-config}";
PrivateTmp = "true";
User = "acng";
Restart = "always";
RestartSec = "10";
};
};
};
in
{
options.krebs.apt-cacher-ng = api;
config = mkIf cfg.enable imp;
}

View file

@ -0,0 +1,21 @@
{ stdenv, fetchurl, cmake, doxygen, zlib, openssl, bzip2, pkgconfig, libpthreadstubs }:
stdenv.mkDerivation rec {
name = "apt-cacher-ng-${version}";
version = "0.8.6";
src = fetchurl {
url = "http://ftp.debian.org/debian/pool/main/a/apt-cacher-ng/apt-cacher-ng_${version}.orig.tar.xz";
sha256 = "0044dfks8djl11fs28jj8894i4rq424xix3d3fkvzz2i6lnp8nr5";
};
NIX_LDFLAGS = "-lpthread";
buildInputs = [ doxygen cmake zlib openssl bzip2 pkgconfig libpthreadstubs ];
meta = {
description = "A caching proxy specialized for linux distribution files";
homepage = http://www.unix-ag.uni-kl.de/~bloch/acng/;
license = stdenv.lib.licenses.gpl2;
maintainers = [ stdenv.lib.maintainers.makefu ];
};
}