fix nuc stuff

This commit is contained in:
mjallen18
2026-02-04 21:11:23 -06:00
parent a9c1d71495
commit aff6fa9ec6
6 changed files with 190 additions and 221 deletions

View File

@@ -43,7 +43,7 @@ in
};
};
supportedFilesystems = lib.mkDefault [ "bcachefs" ];
supportedFilesystems = lib.mkOverride 90 [ "bcachefs" ];
consoleLogLevel = lib.mkDefault 0;
bootspec.enable = (!isArm);

View File

@@ -139,7 +139,7 @@ in
)) { } "lightswitch automations";
};
config = {
config = lib.mkIf config.${namespace}.services.home-assistant.enable {
environment.etc."hass/lightswitch-automations.yaml" = {
text = lightswitchAutomations;
user = "hass";

View File

@@ -0,0 +1,162 @@
{
config,
lib,
namespace,
...
}:
with lib;
let
inherit (lib.${namespace}) mkOpt mkBoolOpt;
cfg = config.${namespace}.services.home-assistant.automation;
automationToYaml = mlcfg: ''
- id: '${toString mlcfg.id}'
alias: ${mlcfg.alias}
description: '${mlcfg.description}'
triggers:
- device_id: ${mlcfg.motion-sensor.mqttDeviceId}
entity_id: ${mlcfg.motion-sensor.mqttEntityId}
domain: binary_sensor
id: occupied
subtype: on_press
trigger: device
type: occupied
for:
hours: 0
minutes: 0
seconds: 0
- device_id: ${mlcfg.motion-sensor.mqttDeviceId}
entity_id: ${mlcfg.motion-sensor.mqttEntityId}
domain: binary_sensor
id: vacant
subtype: off_press
trigger: device
type: not_occupied
for:
hours: 0
minutes: 0
seconds: 5
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- occupied
sequence:
- action: light.turn_on
data:
brightness_pct: ${toString mlcfg.light.brightnessPercent}
kelvin: ${toString mlcfg.light.lightTemperature}
transition: ${toString mlcfg.light.transitionTime}
metadata: {}
target:
entity_id:
- ${mlcfg.light.entityId}
- conditions:
- condition: trigger
id:
- vacant
sequence:
- action: light.turn_off
data:
transition: ${toString mlcfg.light.transitionTime}
metadata: {}
target:
entity_id:
- ${mlcfg.light.entityId}
mode: single
'';
automationToYamlSwitch = mlcfg: ''
- id: '${toString mlcfg.id}'
alias: ${mlcfg.alias}
description: '${mlcfg.description}'
triggers:
- device_id: ${mlcfg.motion-sensor.mqttDeviceId}
entity_id: ${mlcfg.motion-sensor.mqttEntityId}
domain: binary_sensor
id: occupied
subtype: on_press
trigger: device
type: occupied
for:
hours: 0
minutes: 0
seconds: 0
- device_id: ${mlcfg.motion-sensor.mqttDeviceId}
entity_id: ${mlcfg.motion-sensor.mqttEntityId}
domain: binary_sensor
id: vacant
subtype: off_press
trigger: device
type: not_occupied
for:
hours: 0
minutes: 0
seconds: 5
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- occupied
sequence:
- type: turn_on
device_id: ${mlcfg.switch.deviceId}
entity_id: ${mlcfg.switch.entityId}
domain: switch
- conditions:
- condition: trigger
id:
- vacant
sequence:
- type: turn_off
device_id: ${mlcfg.switch.deviceId}
entity_id: ${mlcfg.switch.entityId}
domain: switch
mode: single
'';
motionLightAutomations = concatStringsSep "\n" (
mapAttrsToList (_: automationToYaml) cfg.motion-light
);
in
{
options.${namespace}.services.home-assistant.automation = {
motion-light = mkOpt (types.attrsOf (
types.submodule {
options = {
id = mkOpt types.int 0 "Automation Id";
alias = mkOpt types.str "" "Alias/Friendly Name";
description = mkOpt types.str "" "Automation Description";
motion-sensor = {
mqttDeviceId = mkOpt types.str "" "mqtt device id of the motion sensor";
mqttEntityId = mkOpt types.str "" "mqtt entity id of the motion sensor";
};
light = {
entityId = mkOpt types.str "" "home assistant entity id for the lights";
transitionTime = mkOpt types.int 2 "light transition time in seconds";
brightnessPercent = mkOpt types.int 100 "brightness percentage when turned on";
lightTemperature = mkOpt types.int 6000 "light temperature when turned on";
brightnessStepPercent = mkOpt types.int 10 "dimmer step in brightness percent";
};
switch = {
enable = mkBoolOpt false "is it a binary switch light";
deviceId = mkOpt types.str "" "device id of the switch";
entityId = mkOpt types.str "" "entity id of the switch";
};
};
}
)) { } "motion light automations";
};
config = lib.mkIf config.${namespace}.services.home-assistant.enable {
environment.etc."hass/motion-light-automations.yaml" = {
text = motionLightAutomations;
user = "hass";
group = "hass";
};
};
}

View File

@@ -1,119 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ ... }:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# networking.hostName = "nixos"; # Define your hostname.
# Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true;
# Set your time zone.
# time.timeZone = "Europe/Amsterdam";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# services.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.alice = {
# isNormalUser = true;
# extraGroups = [ "wheel" ]; # Enable sudo for the user.
# packages = with pkgs; [
# tree
# ];
# };
# programs.firefox.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.11"; # Did you read the comment?
}

View File

@@ -4,7 +4,6 @@
...
}:
{
# imports = [ ./hardware-configuration.nix ];
${namespace} = {
# ###################################################
# # Boot # #
@@ -97,6 +96,32 @@
lightEntityId = "light.bedroom_lights";
};
};
motion-light = {
bedroom-closet-lights = {
id = 1769548321857;
alias = "Bedroom Closet Lights";
motion-sensor = {
mqttDeviceId = "fd73c1f3dfe08ab13d187fb49d781060";
mqttEntityId = "33b83e8db95b213b16b4b8c1f591ec92";
};
switch = {
deviceId = "a3dfab0c8d91554a7c92c65cdf655c86";
entityId = "645855b6f4347d65f5a54c33b3a9a1d0";
};
};
front-closet-lights = {
id = 1769548321857;
alias = "Front Closet Lights";
motion-sensor = {
mqttDeviceId = "7eb61ed09e48c1dcef8bcc0f7765c459";
mqttEntityId = "a8b48ad080e70a0cdbb991b79c607ca1";
};
light = {
entityId = "light.front_closet_lights";
};
};
};
};
};
otbr = {

View File

@@ -1,99 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"ahci"
"nvme"
"xhci_pci"
"thunderbolt"
"uas"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.initrd.luks.devices."nuc-nixos-cryptroot".device =
"/dev/disk/by-uuid/6564be77-2b7f-4078-a791-cc74ffccc561";
fileSystems."/" = {
device = "none";
fsType = "tmpfs";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/08E3-88DB";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
fileSystems."/nix" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [
"noatime"
"X-mount.subdir=nix"
];
};
fileSystems."/etc" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [
"noatime"
"X-mount.subdir=etc"
];
};
fileSystems."/var/log" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [
"noatime"
"X-mount.subdir=log"
];
};
fileSystems."/root" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [
"noatime"
"X-mount.subdir=root"
];
};
fileSystems."/persist" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [
"noatime"
"X-mount.subdir=persist"
];
};
fileSystems."/home" = {
device = "UUID=12dc0336-37fa-497c-bc4c-8e4eb8a2fab8";
fsType = "bcachefs";
options = [ "X-mount.subdir=home" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}