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:
parent
dcf55255e6
commit
48c9789141
krebs
155
krebs/3modules/apt-cacher-ng.nix
Normal file
155
krebs/3modules/apt-cacher-ng.nix
Normal 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;
|
||||
}
|
21
krebs/5pkgs/apt-cacher-ng/default.nix
Normal file
21
krebs/5pkgs/apt-cacher-ng/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue