169 lines
5.1 KiB
Nix
169 lines
5.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
imports = [
|
|
./hardware-configuration.nix
|
|
../../modules/profiles/desktop.nix
|
|
../../modules/profiles/server.nix
|
|
../../modules/services/ollama.nix
|
|
../../modules/services/samba.nix
|
|
../../modules/system/home-profile.nix
|
|
../../modules/system/nix-ld.nix
|
|
../../modules/system/packages.nix
|
|
];
|
|
|
|
age.secrets.miku-homelab-wg.file = ../../secrets/miku-homelab-wg.age;
|
|
|
|
myPackages.extra = with pkgs; [
|
|
rocmPackages.rocm-smi
|
|
btrfs-progs
|
|
distrobox
|
|
steam-run
|
|
];
|
|
|
|
myHomeProfile.extraPrograms = [
|
|
../../home/emmatherock/agents.nix
|
|
../../home/emmatherock/audio.nix
|
|
../../home/emmatherock/desktop-apps.nix
|
|
../../home/emmatherock/deskflow.nix
|
|
../../home/emmatherock/gaming.nix
|
|
../../home/emmatherock/media.nix
|
|
../../home/emmatherock/packages.nix
|
|
../../home/emmatherock/plasma.nix
|
|
../../home/emmatherock/vscode.nix
|
|
];
|
|
|
|
myNetworking = {
|
|
hostName = "miku-homelab";
|
|
useNetworkManager = true;
|
|
staticIp = {
|
|
interface = "enp6s0";
|
|
address = "10.1.1.21";
|
|
prefixLength = 24;
|
|
gateway = "10.1.1.1";
|
|
nameservers = [ "1.1.1.1" "8.8.8.8" ];
|
|
};
|
|
extraUdpPorts = [ 80 443 4242 49983 24800 26900 60977 ];
|
|
extraTcpPorts = [ 80 443 4242 49983 24800 26900 60977 ];
|
|
sshAllowUsers = [ "emmatherock" ];
|
|
wireguard = {
|
|
enable = true;
|
|
ips = [ "10.20.0.2/24" ];
|
|
privateKeyFile = config.age.secrets.miku-homelab-wg.path;
|
|
peers = [
|
|
{
|
|
publicKey = "BKs9VlsIEM1np6wHeVFL4NfbS1l69xnwins6Q12ByAM=";
|
|
allowedIPs = [ "10.20.0.1/32" ];
|
|
endpoint = "vps.external.mikufanclub.lat:51822";
|
|
persistentKeepalive = 25;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
myUsers = {
|
|
admins.emmatherock = {
|
|
description = "EmmaTheRock";
|
|
shell = pkgs.fish;
|
|
extraGroups = [ "plugdev" "networkmanager" "wheel" "video" "mikushare-group" "render" ];
|
|
authorizedKeys = [
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA8vfwM5g9RJXqHtqTgNqsYg9SxSm+UMvFqTjBoAsLJ6 emmatherock@MAIN-PC"
|
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO6pnKpUEaeoNXqlenc8MAz1GG8P6BRILyIHMSLtvdeF termius"
|
|
];
|
|
};
|
|
serviceUsers.mikushare = {
|
|
description = "Acceso remoto Mikufanclub";
|
|
group = "mikushare-group";
|
|
createHome = false;
|
|
};
|
|
extraGroups = [ "mikushare-group" "plugdev" ];
|
|
};
|
|
|
|
myContainers = {
|
|
enable = true;
|
|
storageDriver = "btrfs";
|
|
globalNetwork = "homelab_net";
|
|
composeStacks = {
|
|
tools = {
|
|
path = "/mnt/containers/tools";
|
|
after = [ "network-online.target" "tailscaled.service" ];
|
|
};
|
|
arrs = {
|
|
path = "/mnt/containers/arrs";
|
|
after = [ "docker-compose-tools.service" "local-fs.target" ];
|
|
};
|
|
gameservers = {
|
|
path = "/mnt/containers/gameserver";
|
|
after = [ "docker-compose-tools.service" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
boot = {
|
|
loader = {
|
|
efi.canTouchEfiVariables = true;
|
|
systemd-boot.enable = false;
|
|
limine = {
|
|
enable = true;
|
|
maxGenerations = 5;
|
|
};
|
|
};
|
|
plymouth.enable = true;
|
|
initrd.kernelModules = [ "amdgpu" ];
|
|
kernelPackages = pkgs.linuxPackages_latest;
|
|
kernelParams = [ "quiet" "splash" "boot.shell_on_fail" "loglevel=3" "iommu=pt" ];
|
|
};
|
|
|
|
time.timeZone = "America/Argentina/Buenos_Aires";
|
|
i18n.defaultLocale = "es_AR.UTF-8";
|
|
|
|
services.hardware.deepcool-digital-linux.enable = true;
|
|
|
|
services.udev.extraRules = ''
|
|
# Intel RAPL energy usage file
|
|
ACTION=="add", SUBSYSTEM=="powercap", KERNEL=="intel-rapl:0", RUN+="${pkgs.coreutils}/bin/chmod 444 /sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj"
|
|
|
|
# DeepCool HID raw devices
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3633", MODE="0666"
|
|
|
|
# CH510 MESH DIGITAL
|
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="34d3", ATTRS{idProduct}=="1100", MODE="0666"
|
|
# Elgato 4K X (all speed modes)
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009b", MODE="0666", GROUP="plugdev"
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009c", MODE="0666", GROUP="plugdev"
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009d", MODE="0666", GROUP="plugdev"
|
|
|
|
# Elgato 4K S (all speed modes)
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00af", MODE="0666", GROUP="plugdev"
|
|
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00ae", MODE="0666", GROUP="plugdev"
|
|
|
|
# nvtop
|
|
SUBSYSTEM=="drm", KERNEL=="card*", SUBSYSTEMS=="pci", DRIVERS=="amdgpu", RUN+="/bin/sh -c 'chmod -R g+r /sys/class/drm/%k/device/'"
|
|
'';
|
|
|
|
systemd.services.tailscale-udp-gro = {
|
|
description = "Configurar UDP GRO para Tailscale";
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.ethtool}/bin/ethtool -K enp6s0 rx-udp-gro-forwarding on rx-gro-list on";
|
|
RemainAfterExit = true;
|
|
};
|
|
};
|
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
nix.settings = {
|
|
experimental-features = [ "nix-command" "flakes" ];
|
|
};
|
|
|
|
zramSwap = {
|
|
enable = true;
|
|
algorithm = "zstd";
|
|
memoryPercent = 50;
|
|
priority = 100;
|
|
};
|
|
|
|
system.stateVersion = "25.11";
|
|
}
|