2024-11-24 09:10:44 +00:00
|
|
|
{ config, lib, pkgs, forEachUser, ... }:
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
imports = [
|
|
|
|
|
../configuration.nix
|
|
|
|
|
];
|
|
|
|
|
|
2025-02-06 02:29:57 -07:00
|
|
|
services.synergy.server = {
|
|
|
|
|
enable = true;
|
|
|
|
|
};
|
|
|
|
|
|
2024-11-24 09:10:44 +00:00
|
|
|
myModules.fonts.enable = true;
|
|
|
|
|
myModules.base.enable = true;
|
|
|
|
|
myModules.desktop.enable = true;
|
2025-01-17 08:21:53 +00:00
|
|
|
myModules.xmonad.enable = true;
|
2025-02-06 17:51:24 -07:00
|
|
|
myModules.wyoming.enable = true;
|
2025-01-17 08:21:53 +00:00
|
|
|
|
2025-01-29 00:51:36 -07:00
|
|
|
networking.enableIPv6 = true;
|
|
|
|
|
|
2025-02-06 02:29:57 -07:00
|
|
|
services.synergy.client = {
|
|
|
|
|
enable = true;
|
|
|
|
|
serverAddress = "strixi-minaj.local:24800";
|
|
|
|
|
};
|
|
|
|
|
|
2025-01-29 00:51:36 -07:00
|
|
|
boot.kernel.sysctl = {
|
|
|
|
|
# For all interfaces (e.g. if you want to accept RA on all):
|
|
|
|
|
"net.ipv6.conf.all.accept_ra" = lib.mkForce "1";
|
|
|
|
|
"net.ipv6.conf.all.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
|
|
|
|
"net.ipv6.conf.default.accept_ra" = lib.mkForce "1";
|
|
|
|
|
"net.ipv6.conf.default.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
|
|
|
|
"net.ipv6.conf.wlo1.accept_ra" = lib.mkForce "1";
|
|
|
|
|
"net.ipv6.conf.wlo1.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
|
|
|
|
|
|
|
|
|
# Ensure forwarding is off on all interfaces unless needed
|
|
|
|
|
"net.ipv6.conf.all.forwarding" = lib.mkForce "0";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
systemd.services.otbr-agent = {
|
|
|
|
|
wants = [ "network-online.target" ];
|
|
|
|
|
after = [ "network-online.target" ];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.openthread-border-router = {
|
|
|
|
|
enable = true;
|
|
|
|
|
backboneInterface = "wpan0";
|
|
|
|
|
logLevel = "debug";
|
|
|
|
|
radio = {
|
|
|
|
|
device = "/dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_0cd053abfa38ef119c66e1d154516304-if00-port0";
|
|
|
|
|
baudRate = 460800;
|
|
|
|
|
flowControl = true;
|
|
|
|
|
};
|
|
|
|
|
web = {
|
|
|
|
|
listenPort = 8087;
|
|
|
|
|
};
|
|
|
|
|
rest = {
|
|
|
|
|
listenPort = 8089;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2025-01-17 01:20:56 -07:00
|
|
|
services.matter-server = {
|
|
|
|
|
enable = true;
|
2025-01-29 00:51:36 -07:00
|
|
|
logLevel = "debug";
|
2025-02-06 02:29:57 -07:00
|
|
|
extraArgs = let cert-dir = pkgs.fetchFromGitHub {
|
|
|
|
|
repo = "connectedhomeip";
|
|
|
|
|
owner = "project-chip";
|
|
|
|
|
rev = "6e8676be6142bb541fa68048c77f2fc56a21c7b1";
|
|
|
|
|
hash = "sha256-QwPKn2R4mflTKMyr1k4xF04t0PJIlzNCOdXEiQwX5wk=";
|
|
|
|
|
}; in
|
2025-02-07 18:30:32 -07:00
|
|
|
[
|
|
|
|
|
"--bluetooth-adapter=0"
|
|
|
|
|
"--paa-root-cert-dir=${cert-dir}/credentials/production/paa-root-certs"
|
|
|
|
|
"--enable-test-net-dcl"
|
|
|
|
|
"--ota-provider-dir=/var/lib/matter-server/ota-provider"
|
|
|
|
|
];
|
2025-02-06 02:29:57 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
age.secrets.google-service-account = {
|
|
|
|
|
file = ../secrets/google-assistant-integration-service-key.age;
|
|
|
|
|
owner = "hass";
|
2025-01-17 01:20:56 -07:00
|
|
|
};
|
2025-01-17 08:21:53 +00:00
|
|
|
|
2024-11-24 14:14:18 -07:00
|
|
|
services.home-assistant = {
|
|
|
|
|
enable = true;
|
2025-01-17 01:59:55 -07:00
|
|
|
extraComponents = [
|
2025-01-19 17:35:50 +00:00
|
|
|
"anthropic"
|
|
|
|
|
"cast"
|
|
|
|
|
"dlna_dmr"
|
2025-01-17 01:59:55 -07:00
|
|
|
"esphome"
|
2025-01-19 17:35:50 +00:00
|
|
|
"google_assistant"
|
|
|
|
|
"homeassistant_hardware"
|
|
|
|
|
"homeassistant_sky_connect"
|
2025-01-29 00:51:36 -07:00
|
|
|
"homekit_controller"
|
|
|
|
|
"ibeacon"
|
2025-01-19 17:35:50 +00:00
|
|
|
"isal"
|
|
|
|
|
"kef"
|
2025-01-29 00:51:36 -07:00
|
|
|
"kegtron"
|
2025-01-19 17:35:50 +00:00
|
|
|
"matter"
|
2025-01-17 01:59:55 -07:00
|
|
|
"met"
|
2025-01-19 17:35:50 +00:00
|
|
|
"opensky"
|
|
|
|
|
"otbr"
|
2025-02-06 12:38:57 -07:00
|
|
|
"piper"
|
2025-01-17 01:59:55 -07:00
|
|
|
"radio_browser"
|
2025-01-19 17:35:50 +00:00
|
|
|
"roomba"
|
|
|
|
|
"samsungtv"
|
|
|
|
|
"thread"
|
2025-02-06 12:38:57 -07:00
|
|
|
"wake_word"
|
2025-01-19 17:35:50 +00:00
|
|
|
"webostv"
|
2025-02-06 12:38:57 -07:00
|
|
|
"whisper"
|
|
|
|
|
"wyoming"
|
2025-01-19 17:35:50 +00:00
|
|
|
"yale"
|
|
|
|
|
];
|
|
|
|
|
extraPackages = python3Packages: with python3Packages; [
|
|
|
|
|
numpy
|
|
|
|
|
python-matter-server
|
|
|
|
|
universal-silabs-flasher
|
2025-01-17 01:59:55 -07:00
|
|
|
];
|
2024-11-24 14:14:18 -07:00
|
|
|
config = {
|
2025-02-06 02:29:57 -07:00
|
|
|
http = {
|
|
|
|
|
use_x_forwarded_for = true;
|
|
|
|
|
trusted_proxies = ["0.0.0.0" "127.0.0.1" "::1" "192.168.50.1"];
|
|
|
|
|
};
|
|
|
|
|
google_assistant = {
|
|
|
|
|
project_id = "canyon-run-b104-home-assistant";
|
|
|
|
|
service_account = "!include ${config.age.secrets.google-service-account.path}";
|
|
|
|
|
report_state = true;
|
|
|
|
|
exposed_domains = ["switch" "light"];
|
|
|
|
|
};
|
2025-01-19 17:35:50 +00:00
|
|
|
default_config = {};
|
2024-11-24 14:14:18 -07:00
|
|
|
};
|
|
|
|
|
};
|
2024-11-24 14:02:35 -07:00
|
|
|
|
2025-02-06 02:29:57 -07:00
|
|
|
security.acme = {
|
|
|
|
|
acceptTerms = true;
|
|
|
|
|
defaults.email = "IvanMalison@gmail.com";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.nginx = {
|
|
|
|
|
enable = true;
|
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
|
recommendedGzipSettings = true;
|
|
|
|
|
recommendedTlsSettings = true;
|
|
|
|
|
|
|
|
|
|
virtualHosts = {
|
|
|
|
|
"homeassistant.canyonrunb104.duckdns.org" = {
|
|
|
|
|
enableACME = true;
|
|
|
|
|
addSSL = true;
|
|
|
|
|
locations."/" = {
|
|
|
|
|
proxyPass = "http://localhost:8123";
|
|
|
|
|
extraConfig = ''
|
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
|
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
"ha.canyonrunb104.duckdns.org" = {
|
|
|
|
|
enableACME = true;
|
|
|
|
|
addSSL = true;
|
|
|
|
|
locations."/" = {
|
|
|
|
|
proxyPass = "http://localhost:8123";
|
|
|
|
|
extraConfig = ''
|
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
|
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2025-01-17 08:21:53 +00:00
|
|
|
boot.loader.systemd-boot.configurationLimit = 3;
|
|
|
|
|
|
2025-01-29 00:51:36 -07:00
|
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
|
|
2024-11-24 09:10:44 +00:00
|
|
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
|
|
|
|
boot.initrd.kernelModules = [ ];
|
|
|
|
|
boot.kernelModules = [ "kvm-intel" ];
|
|
|
|
|
boot.extraModulePackages = [ ];
|
|
|
|
|
boot.loader.systemd-boot.enable = true;
|
|
|
|
|
|
2024-12-17 00:16:29 -07:00
|
|
|
# Add Intel Wi-Fi firmware
|
2024-12-17 00:20:13 -07:00
|
|
|
hardware.enableRedistributableFirmware = true;
|
2024-12-17 00:16:29 -07:00
|
|
|
hardware.enableAllFirmware = true;
|
|
|
|
|
|
2024-11-24 09:10:44 +00:00
|
|
|
fileSystems."/" =
|
|
|
|
|
{ device = "/dev/disk/by-uuid/453d28a1-26f2-4b25-ac72-c6d301fd0bb8";
|
|
|
|
|
fsType = "ext4";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
fileSystems."/boot" =
|
|
|
|
|
{ device = "/dev/disk/by-uuid/184E-E5E8";
|
|
|
|
|
fsType = "vfat";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
swapDevices = [ ];
|
|
|
|
|
|
|
|
|
|
networking.hostName = "justin-bieber-creek";
|
|
|
|
|
|
2025-01-29 00:51:36 -07:00
|
|
|
networking.useDHCP = false;
|
2024-11-24 09:10:44 +00:00
|
|
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
|
|
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
|
|
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
|
|
|
|
|
|
|
|
system.stateVersion = "23.05";
|
|
|
|
|
|
|
|
|
|
home-manager.users = forEachUser {
|
|
|
|
|
home.stateVersion = "23.05";
|
|
|
|
|
};
|
2024-11-24 14:02:35 -07:00
|
|
|
}
|