1
0

Compare commits

..

7 Commits

6 changed files with 175 additions and 33 deletions

View File

@ -6,23 +6,23 @@
tracker.enable = false; tracker.enable = false;
}; };
environment.gnome.excludePackages = with pkgs.gnome; [ environment.gnome.excludePackages = with pkgs; [
pkgs.baobab baobab
pkgs.epiphany epiphany
pkgs.gnome-calendar gnome-calendar
gnome-clocks gnome-clocks
pkgs.gnome-console gnome-console
gnome-contacts gnome-contacts
gnome-logs gnome-logs
gnome-maps gnome-maps
gnome-music gnome-music
pkgs.gnome-tour gnome-tour
pkgs.gnome-photos gnome-photos
gnome-weather gnome-weather
pkgs.gnome-connections gnome-connections
pkgs.simple-scan simple-scan
pkgs.yelp yelp
pkgs.geary geary
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@ -288,11 +288,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1725103162, "lastModified": 1725432240,
"narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=", "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b", "rev": "ad416d066ca1222956472ab7d0555a6946746a80",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -57,22 +57,19 @@
ip46tables -t mangle -A forward-mangle -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1416 ip46tables -t mangle -A forward-mangle -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1416
''; '';
networking.interfaces.net-heimnetz.useDHCP = true; networking.dhcpcd-prefixdelegation = {
enable = true;
networking.dhcpcd = { interfaces = {
enable = false; "ppp-dtagdsl" = {
allowInterfaces = [ iaid = 1;
"net-heimnetz" interfaces = {
"ppp-dtagdsl" "net-heimnetz" = {
]; sla_id = 201;
wait = "ipv6"; prefix_len = 64;
extraConfig = '' };
ipv6only };
noipv6rs };
interface ppp-dtagdsl };
ipv6rs
ia_pd 1/::/56 net-heimnetz/201/64
'';
}; };
environment.etc."ppp/ipv6-up" = { environment.etc."ppp/ipv6-up" = {

View File

@ -15,7 +15,7 @@
lfs.enable = true; lfs.enable = true;
settings = { settings = {
log = { log = {
LEVEL = "Info"; LEVEL = "Warn";
}; };
database = { database = {
CHARSET = "utf8"; CHARSET = "utf8";
@ -28,7 +28,7 @@
server = { server = {
ROOT_URL = "https://git.clerie.de/"; ROOT_URL = "https://git.clerie.de/";
DOMAIN = "git.clerie.de"; DOMAIN = "git.clerie.de";
HTTP_ADDRESS = "127.0.0.1"; HTTP_ADDRESS = "::1";
HTTP_PORT = 3000; HTTP_PORT = 3000;
OFFLINE_MODE = true; OFFLINE_MODE = true;
LANDING_PAGE = "explore"; LANDING_PAGE = "explore";
@ -80,7 +80,7 @@
forceSSL = true; forceSSL = true;
locations = { locations = {
"/" = { "/" = {
proxyPass = "http://localhost:3000"; proxyPass = "http://[::1]:3000";
}; };
}; };
extraConfig = '' extraConfig = ''

View File

@ -8,6 +8,7 @@
./clerie-firewall ./clerie-firewall
./clerie-gc-dir ./clerie-gc-dir
./clerie-system-upgrade ./clerie-system-upgrade
./dhcpcd-prefixdelegation
./minecraft-server ./minecraft-server
./monitoring ./monitoring
./nginx-port-forward ./nginx-port-forward

View File

@ -0,0 +1,144 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.networking.dhcpcd-prefixdelegation;
downstreamInterfaceConfig = name: opts: "${name}${
optionalString (opts.sla_id != null) "/${builtins.toString opts.sla_id}${
optionalString (opts.prefix_len != null) "/${builtins.toString opts.prefix_len}${
optionalString (opts.suffix != null) "/${opts.suffix}"
}"
}"
}";
interfaceConfig = name: opts: ''
interface ${name}
ipv6rs
ia_pd ${builtins.toString opts.iaid}${
optionalString (opts.prefix != null) "/${opts.prefix}${
optionalString (opts.prefix_len != null) "/${builtins.toString opts.prefix_len}"
}"
} ${concatMapStringsSep " " ({name, value}: downstreamInterfaceConfig name value) (attrsToList opts.interfaces)}
'';
dhcpcdConf = pkgs.writeText "dhcpcd.conf" ''
duid
noipv6rs
waitip 6
ipv6only
allowinterfaces ${concatStringsSep " " (builtins.attrNames cfg.interfaces)} ${concatMapStringsSep " " ({name, value}: concatStringsSep "" (builtins.attrNames value.interfaces)) (attrsToList cfg.interfaces)}
${concatMapStringsSep "\n" ({name, value}: interfaceConfig name value) (attrsToList cfg.interfaces)}
'';
downstreamInterfaceOpts = { ... }: {
options = {
sla_id = mkOption {
type = with types; nullOr ints.unsigned;
default = null;
};
prefix_len = mkOption {
type = with types; nullOr ints.unsigned;
default = null;
};
suffix = mkOption {
type = with types; nullOr str;
default = null;
};
};
};
interfaceOpts = { ... }: {
options = {
iaid = mkOption {
type = with types; ints.unsigned;
description = ''
Request a delegated prefix with this IAID on this interface
'';
};
prefix = mkOption {
type = with types; nullOr str;
default = null;
};
prefix_len = mkOption {
type = with types; nullOr ints.unsigned;
default = null;
};
interfaces = mkOption {
type = with types; attrsOf (submodule downstreamInterfaceOpts);
default = {};
description =''
Interfaces to assign IPv6 prefixes to
'';
};
};
};
in
{
options = {
networking.dhcpcd-prefixdelegation = {
enable = mkEnableOption "dhcpcd for prefixdelegation";
interfaces = mkOption {
type = with types; attrsOf (submodule interfaceOpts);
default = {};
description = ''
Interfaces to request IPv6 prefixes from
'';
};
};
};
config = mkIf cfg.enable {
environment.etc."dhcpcd.conf".source = dhcpcdConf;
systemd.services.dhcpcd-prefixdelegation = {
description = "DHCP Client for IPv6 Prefix Delegation";
wantedBy = [ "multi-user.target" ];
wants = [ "network.target" ];
before = [ "network-online.target" ];
# Stopping dhcpcd during a reconfiguration is undesirable
# because it brings down the network interfaces configured by
# dhcpcd. So do a "systemctl restart" instead.
stopIfChanged = false;
path = [ pkgs.dhcpcd ];
unitConfig.ConditionCapability = "CAP_NET_ADMIN";
serviceConfig =
{ Type = "forking";
PIDFile = "/run/dhcpcd/pid";
RuntimeDirectory = "dhcpcd";
ExecStart = "@${pkgs.dhcpcd}/sbin/dhcpcd dhcpcd --quiet --config ${dhcpcdConf}";
ExecReload = "${pkgs.dhcpcd}/sbin/dhcpcd --rebind";
Restart = "always";
};
};
users.users.dhcpcd = {
isSystemUser = true;
group = "dhcpcd";
};
users.groups.dhcpcd = {};
};
}