2024-10-05 12:38:13 -04:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
self,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
inherit (config.sops) secrets;
|
|
|
|
|
|
|
|
compiled = pkgs.callPackage ./package.nix {};
|
|
|
|
in {
|
|
|
|
khepri.compositions."netdaemon" = {
|
|
|
|
networks.netdaemon = {external = true;};
|
|
|
|
|
|
|
|
services."netdaemon4" = {
|
|
|
|
image = import ./images/netdaemon.nix pkgs;
|
|
|
|
restart = "always";
|
|
|
|
|
|
|
|
environmentFiles = [secrets.netdaemon.path];
|
|
|
|
environment = {
|
|
|
|
HomeAssistant__Host = "homie.nelim.org";
|
|
|
|
HomeAssistant__Port = "443";
|
|
|
|
HomeAssistant__Ssl = "true";
|
|
|
|
NetDaemon__ApplicationAssembly = "netdaemon.dll";
|
|
|
|
Logging__LogLevel__Default = "Information"; # use Information/Debug/Trace/Warning/Error
|
|
|
|
TZ = "America/New_York";
|
|
|
|
};
|
|
|
|
|
|
|
|
volumes = ["${compiled}/lib/netdaemon-config:/data"];
|
|
|
|
networks = ["netdaemon"];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
services.home-assistant = {
|
|
|
|
customComponents = builtins.attrValues {
|
|
|
|
inherit
|
|
|
|
(self.legacyPackages.${pkgs.system}.hass-components)
|
|
|
|
netdaemon
|
|
|
|
;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.systemPackages = [
|
|
|
|
(pkgs.writeShellApplication {
|
|
|
|
name = "updateNuDeps";
|
2024-10-05 16:17:14 -04:00
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
dos2unix
|
|
|
|
dotnet-sdk_8
|
|
|
|
];
|
2024-10-05 12:38:13 -04:00
|
|
|
text = ''
|
2024-10-05 16:17:14 -04:00
|
|
|
# Install codegen
|
|
|
|
dotnet tool install --create-manifest-if-needed NetDaemon.HassModel.CodeGen
|
|
|
|
|
|
|
|
# Run it
|
|
|
|
dotnet tool run nd-codegen -token "$(sed 's/HomeAssistant__Token=//' ${secrets.netdaemon.path})"
|
|
|
|
dos2unix ./HomeAssistantGenerated.cs
|
2024-10-05 12:38:13 -04:00
|
|
|
|
|
|
|
# Update all nugets to latest versions
|
|
|
|
regex='PackageReference Include="([^"]*)" Version="([^"]*)"'
|
|
|
|
|
|
|
|
find . -type f -name '*.csproj' | while read -r file; do
|
|
|
|
# Extract unique package names from the .csproj file
|
|
|
|
packages=$(grep -oP "$regex" "$file" | sed -E 's/.*Include="([^"]*)".*/\1/' | sort -u)
|
|
|
|
|
|
|
|
# Loop through each package and update
|
|
|
|
for package in $packages; do
|
|
|
|
echo -e "\033[35mUpdate $file package: $package\033[0m"
|
|
|
|
dotnet add "$file" package "$package"
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
${compiled.passthru.fetch-deps} .
|
2024-10-05 14:43:43 -04:00
|
|
|
alejandra .
|
2024-10-05 16:17:14 -04:00
|
|
|
rm -r "$FLAKE/.config"
|
2024-10-05 12:38:13 -04:00
|
|
|
'';
|
|
|
|
})
|
|
|
|
];
|
|
|
|
}
|