Misc updates
This commit is contained in:
parent
0b5ca6d22c
commit
f51256c3ae
5 changed files with 127 additions and 288 deletions
|
@ -4,12 +4,19 @@
|
|||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkEnableOption mkOption types;
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
mkIf
|
||||
mkEnableOption
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.${namespace}.services.homeassistant;
|
||||
hass_cfg = config.services.home-assistant;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.${namespace}.services.homeassistant = {
|
||||
enable = mkEnableOption "home assistant";
|
||||
acmeCertName = mkOption {
|
||||
|
@ -25,14 +32,24 @@ in {
|
|||
config = mkIf cfg.enable {
|
||||
services.home-assistant = {
|
||||
enable = true;
|
||||
extraPackages = python3packages:
|
||||
with python3packages; [
|
||||
extraPackages =
|
||||
python3packages: with python3packages; [
|
||||
# postgresql support
|
||||
psycopg2
|
||||
|
||||
# homekit support
|
||||
hap-python
|
||||
];
|
||||
|
||||
extraComponents = [
|
||||
"3_day_blinds"
|
||||
"motion_blinds"
|
||||
|
||||
"opower"
|
||||
"smud"
|
||||
|
||||
"cast"
|
||||
"homekit_controller"
|
||||
"hue"
|
||||
"met"
|
||||
"mqtt"
|
||||
|
@ -46,10 +63,10 @@ in {
|
|||
];
|
||||
|
||||
config = {
|
||||
default_config = {};
|
||||
default_config = { };
|
||||
http = {
|
||||
use_x_forwarded_for = true;
|
||||
trusted_proxies = ["127.0.0.1"];
|
||||
trusted_proxies = [ "127.0.0.1" ];
|
||||
};
|
||||
|
||||
recorder.db_url = "postgresql://@/hass";
|
||||
|
@ -75,7 +92,7 @@ in {
|
|||
};
|
||||
|
||||
services.postgresql = {
|
||||
ensureDatabases = ["hass"];
|
||||
ensureDatabases = [ "hass" ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "hass";
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
}:
|
||||
let
|
||||
cfg = config.aa.services.nextcloud;
|
||||
secrets = config.age.secrets;
|
||||
|
||||
|
@ -15,7 +16,8 @@
|
|||
group = "nextcloud";
|
||||
};
|
||||
};
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.aa.services.nextcloud = with lib; {
|
||||
enable = mkEnableOption "nextcloud";
|
||||
acmeCertName = mkOption {
|
||||
|
@ -29,28 +31,30 @@ in {
|
|||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
age.secrets = builtins.listToAttrs (builtins.map (attrs: mkNextcloudSecret attrs) [
|
||||
{
|
||||
name = "restic/password";
|
||||
path = ../../../../secrets/nextcloud_restic_password.age;
|
||||
}
|
||||
{
|
||||
name = "restic/env";
|
||||
path = ../../../../secrets/nextcloud_restic_env.age;
|
||||
}
|
||||
{
|
||||
name = "restic/repo";
|
||||
path = ../../../../secrets/nextcloud_restic_repo.age;
|
||||
}
|
||||
{
|
||||
name = "nextcloud_admin";
|
||||
path = ../../../../secrets/nextcloud_admin.age;
|
||||
}
|
||||
]);
|
||||
age.secrets = builtins.listToAttrs (
|
||||
builtins.map (attrs: mkNextcloudSecret attrs) [
|
||||
{
|
||||
name = "restic/password";
|
||||
path = ../../../../secrets/nextcloud_restic_password.age;
|
||||
}
|
||||
{
|
||||
name = "restic/env";
|
||||
path = ../../../../secrets/nextcloud_restic_env.age;
|
||||
}
|
||||
{
|
||||
name = "restic/repo";
|
||||
path = ../../../../secrets/nextcloud_restic_repo.age;
|
||||
}
|
||||
{
|
||||
name = "nextcloud_admin";
|
||||
path = ../../../../secrets/nextcloud_admin.age;
|
||||
}
|
||||
]
|
||||
);
|
||||
|
||||
services.nextcloud = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud30;
|
||||
package = pkgs.nextcloud31;
|
||||
hostName = "nextcloud.kilonull.com";
|
||||
https = true;
|
||||
database.createLocally = true;
|
||||
|
@ -75,16 +79,18 @@ in {
|
|||
};
|
||||
|
||||
# nextcloud module configures nginx, just need to specify SSL stuffs here
|
||||
services.nginx.virtualHosts.${config.services.nextcloud.hostName} = lib.mkIf (cfg.acmeCertName != "") {
|
||||
forceSSL = true;
|
||||
useACMEHost = cfg.acmeCertName;
|
||||
};
|
||||
services.nginx.virtualHosts.${config.services.nextcloud.hostName} =
|
||||
lib.mkIf (cfg.acmeCertName != "")
|
||||
{
|
||||
forceSSL = true;
|
||||
useACMEHost = cfg.acmeCertName;
|
||||
};
|
||||
|
||||
services.restic.backups = {
|
||||
nextcloud = {
|
||||
user = "nextcloud";
|
||||
initialize = true;
|
||||
paths = [config.services.nextcloud.datadir];
|
||||
paths = [ config.services.nextcloud.datadir ];
|
||||
environmentFile = secrets."restic/env".path;
|
||||
repositoryFile = secrets."restic/repo".path;
|
||||
passwordFile = secrets."restic/password".path;
|
||||
|
@ -93,10 +99,18 @@ in {
|
|||
Persistent = true;
|
||||
RandomizedDelaySec = "5h";
|
||||
};
|
||||
pruneOpts = ["--keep-daily 7" "--keep-weekly 5" "--keep-monthly 12" "--keep-yearly 9001"];
|
||||
pruneOpts = [
|
||||
"--keep-daily 7"
|
||||
"--keep-weekly 5"
|
||||
"--keep-monthly 12"
|
||||
"--keep-yearly 9001"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [80 443];
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue