Skip to content

Commit

Permalink
alternative for iproute module (#41801)
Browse files Browse the repository at this point in the history
  • Loading branch information
volth authored and xeji committed Sep 1, 2018
1 parent 2d6179d commit 0fa04d6
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 19 deletions.
2 changes: 1 addition & 1 deletion nixos/doc/manual/release-notes/rl-1809.xml
Expand Up @@ -91,7 +91,7 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
<para>
When enabled the <literal>iproute2</literal> will copy the files expected
by ip route (e.g., <filename>rt_tables</filename>) in
<filename>/run/iproute2</filename>. This allows to write aliases for
<filename>/etc/iproute2</filename>. This allows to write aliases for
routing tables for instance.
</para>
</listitem>
Expand Down
35 changes: 22 additions & 13 deletions nixos/modules/config/iproute2.nix
Expand Up @@ -4,20 +4,29 @@ with lib;

let
cfg = config.networking.iproute2;
confDir = "/run/iproute2";
in
{
options.networking.iproute2.enable = mkEnableOption "copy IP route configuration files";

config = mkMerge [
({ nixpkgs.config.iproute2.confDir = confDir; })

(mkIf cfg.enable {
system.activationScripts.iproute2 = ''
cp -R ${pkgs.iproute}/etc/iproute2 ${confDir}
chmod -R 664 ${confDir}
chmod +x ${confDir}
options.networking.iproute2 = {
enable = mkEnableOption "copy IP route configuration files";
rttablesExtraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Verbatim lines to add to /etc/iproute2/rt_tables
'';
})
];
};
};

config = mkIf cfg.enable {
environment.etc."iproute2/bpf_pinning" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/bpf_pinning"; };
environment.etc."iproute2/ematch_map" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/ematch_map"; };
environment.etc."iproute2/group" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/group"; };
environment.etc."iproute2/nl_protos" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/nl_protos"; };
environment.etc."iproute2/rt_dsfield" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/rt_dsfield"; };
environment.etc."iproute2/rt_protos" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/rt_protos"; };
environment.etc."iproute2/rt_realms" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/rt_realms"; };
environment.etc."iproute2/rt_scopes" = { mode = "0644"; text = fileContents "${pkgs.iproute}/etc/iproute2/rt_scopes"; };
environment.etc."iproute2/rt_tables" = { mode = "0644"; text = (fileContents "${pkgs.iproute}/etc/iproute2/rt_tables")
+ (optionalString (cfg.rttablesExtraConfig != "") "\n\n${cfg.rttablesExtraConfig}"); };
};
}
7 changes: 2 additions & 5 deletions pkgs/os-specific/linux/iproute/default.nix
@@ -1,6 +1,4 @@
{ fetchurl, stdenv, config, flex, bash, bison, db, iptables, pkgconfig
, libelf
}:
{ fetchurl, stdenv, flex, bash, bison, db, iptables, pkgconfig, libelf }:

stdenv.mkDerivation rec {
name = "iproute2-${version}";
Expand Down Expand Up @@ -28,9 +26,8 @@ stdenv.mkDerivation rec {
"HDRDIR=$(TMPDIR)/include/iproute2" # Don't install headers
];

# enable iproute2 module if you want this folder to be created
buildFlags = [
"CONFDIR=${config.iproute2.confDir or "/run/iproute2"}"
"CONFDIR=/etc/iproute2"
];

installFlags = [
Expand Down

0 comments on commit 0fa04d6

Please sign in to comment.