fix nuc stuff
This commit is contained in:
@@ -43,7 +43,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
supportedFilesystems = lib.mkDefault [ "bcachefs" ];
|
supportedFilesystems = lib.mkOverride 90 [ "bcachefs" ];
|
||||||
|
|
||||||
consoleLogLevel = lib.mkDefault 0;
|
consoleLogLevel = lib.mkDefault 0;
|
||||||
bootspec.enable = (!isArm);
|
bootspec.enable = (!isArm);
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ in
|
|||||||
)) { } "lightswitch automations";
|
)) { } "lightswitch automations";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = lib.mkIf config.${namespace}.services.home-assistant.enable {
|
||||||
environment.etc."hass/lightswitch-automations.yaml" = {
|
environment.etc."hass/lightswitch-automations.yaml" = {
|
||||||
text = lightswitchAutomations;
|
text = lightswitchAutomations;
|
||||||
user = "hass";
|
user = "hass";
|
||||||
162
modules/nixos/homeassistant/automations/motion-light/default.nix
Normal file
162
modules/nixos/homeassistant/automations/motion-light/default.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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?
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
# imports = [ ./hardware-configuration.nix ];
|
|
||||||
${namespace} = {
|
${namespace} = {
|
||||||
# ###################################################
|
# ###################################################
|
||||||
# # Boot # #
|
# # Boot # #
|
||||||
@@ -97,6 +96,32 @@
|
|||||||
lightEntityId = "light.bedroom_lights";
|
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 = {
|
otbr = {
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user