mirror of
https://github.com/Ahwxorg/nixos-config.git
synced 2025-12-04 15:00:13 +01:00
Compare commits
4 commits
71d816fe80
...
c6601da4e0
| Author | SHA1 | Date | |
|---|---|---|---|
| c6601da4e0 | |||
| 27d6950542 | |||
| 87338c4568 | |||
| 1b8b3f607d |
5 changed files with 137 additions and 12 deletions
|
|
@ -1,14 +1,87 @@
|
||||||
{ pkgs, config, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
externalInterface = "wan0";
|
||||||
|
# networks = config.homelab.networks.local;
|
||||||
|
# internalInterfaces = lib.mapAttrsToList (_: val: val.interface) networks;
|
||||||
|
# internalIPs = lib.mapAttrsToList (
|
||||||
|
# _: val: lib.strings.removeSuffix ".1" val.cidr + ".0/24"
|
||||||
|
# ) networks;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./variables.nix
|
./variables.nix
|
||||||
./../../modules/core/default.server.nix
|
./../../modules/core/default.router.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "lily";
|
liv = {
|
||||||
|
server.enable = true;
|
||||||
|
router.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
liv.server.enable = true;
|
boot = {
|
||||||
|
supportedFilesystems = [ "zfs" ];
|
||||||
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "/dev/sda";
|
||||||
|
useOSProber = true;
|
||||||
|
};
|
||||||
|
kernel = {
|
||||||
|
sysctl = {
|
||||||
|
# Forward both IPv4 and IPv6 on all interfaces
|
||||||
|
"net.ipv4.conf.all.forwarding" = true;
|
||||||
|
"net.ipv6.conf.all.forwarding" = false;
|
||||||
|
|
||||||
|
# By default, do not automatically configure any IPv6 addresses.
|
||||||
|
# "net.ipv6.conf.all.accept_ra" = 0;
|
||||||
|
# "net.ipv6.conf.all.autoconf" = 0;
|
||||||
|
# "net.ipv6.conf.all.use_tempaddr" = 0;
|
||||||
|
|
||||||
|
# Allow IPv6 autoconfiguration and tempory address use on WAN.
|
||||||
|
"net.ipv6.conf.${externalInterface}.accept_ra" = 2;
|
||||||
|
"net.ipv6.conf.${externalInterface}.autoconf" = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowPing = true;
|
||||||
|
|
||||||
|
# allow ssh on *all* interfaces, even wan.
|
||||||
|
allowedTCPPorts = lib.mkForce [ 22 ];
|
||||||
|
allowedUDPPorts = lib.mkForce [ 22 ];
|
||||||
|
|
||||||
|
# interface-specific rules
|
||||||
|
interfaces = {
|
||||||
|
"lan0" = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
22
|
||||||
|
53
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
22
|
||||||
|
53
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:47:67:6e", ATTR{type}=="1", NAME="wan0"
|
||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:47:67:6f", ATTR{type}=="1", NAME="lan0"
|
||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:63:0f:80", ATTR{type}=="1", NAME="lan1"
|
||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:63:0f:81", ATTR{type}=="1", NAME="lan2"
|
||||||
|
'';
|
||||||
|
|
||||||
|
networking.hostName = "lily";
|
||||||
|
|
||||||
time.timeZone = "Europe/Amsterdam";
|
time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
|
@ -17,10 +90,6 @@
|
||||||
zfs
|
zfs
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
|
||||||
supportedFilesystems = [ "zfs" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.hostId = "8ddb2a9b";
|
networking.hostId = "8ddb2a9b";
|
||||||
|
|
||||||
services.zfs = {
|
services.zfs = {
|
||||||
|
|
@ -28,10 +97,6 @@
|
||||||
trim.enable = true;
|
trim.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.loader.grub.enable = true;
|
|
||||||
boot.loader.grub.device = "/dev/sda";
|
|
||||||
boot.loader.grub.useOSProber = true;
|
|
||||||
|
|
||||||
# boot.zfs.extraPools = [ "terrabite" ];
|
# boot.zfs.extraPools = [ "terrabite" ];
|
||||||
|
|
||||||
# fileSystems."/terrabite/main" = {
|
# fileSystems."/terrabite/main" = {
|
||||||
|
|
|
||||||
11
modules/core/default.router.nix
Normal file
11
modules/core/default.router.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (import ./hardware.nix) ]
|
||||||
|
++ [ (import ./program.nix) ]
|
||||||
|
++ [ (import ./sshd.nix) ]
|
||||||
|
++ [ (import ./security.nix) ]
|
||||||
|
++ [ (import ./services.nix) ]
|
||||||
|
++ [ (import ./system.nix) ]
|
||||||
|
++ [ (import ./user.nix) ];
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,8 @@
|
||||||
[ ./../home/default.server.nix ]
|
[ ./../home/default.server.nix ]
|
||||||
else if (host == "dandelion") then
|
else if (host == "dandelion") then
|
||||||
[ ./../home/default.server.nix ]
|
[ ./../home/default.server.nix ]
|
||||||
|
else if (host == "lily") then
|
||||||
|
[ ./../home/default.server.nix ]
|
||||||
# else if (host == "yoshino") then
|
# else if (host == "yoshino") then
|
||||||
# [ ./../home/default.nix ]
|
# [ ./../home/default.nix ]
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
++ [ (import ./amdgpu.nix) ]
|
++ [ (import ./amdgpu.nix) ]
|
||||||
++ [ (import ./nvidia.nix) ]
|
++ [ (import ./nvidia.nix) ]
|
||||||
++ [ (import ./server.nix) ]
|
++ [ (import ./server.nix) ]
|
||||||
|
++ [ (import ./router.nix) ]
|
||||||
++ [ (import ./desktop.nix) ]
|
++ [ (import ./desktop.nix) ]
|
||||||
++ [ (import ./wine.nix) ]
|
++ [ (import ./wine.nix) ]
|
||||||
++ [ (import ./creative.nix) ]
|
++ [ (import ./creative.nix) ]
|
||||||
|
|
|
||||||
46
roles/router.nix
Normal file
46
roles/router.nix
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
username,
|
||||||
|
home-manager,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.liv.router;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.liv.router = {
|
||||||
|
enable = mkEnableOption "Enable router";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pkgs.kitty.terminfo
|
||||||
|
powertop
|
||||||
|
bind
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
thermald.enable = true;
|
||||||
|
vnstat.enable = true;
|
||||||
|
# cpupower-gui.enable = true;
|
||||||
|
# power-profiles-daemon.enable = true;
|
||||||
|
|
||||||
|
# auto-cpufreq = {
|
||||||
|
# enable = true;
|
||||||
|
# settings = {
|
||||||
|
# battery = {
|
||||||
|
# governor = "powersave";
|
||||||
|
# turbo = "auto";
|
||||||
|
# };
|
||||||
|
# charger = {
|
||||||
|
# governor = "performance";
|
||||||
|
# turbo = "auto";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue