diff --git a/modules/default.nix b/modules/default.nix index 5341bce..0cc25eb 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,7 +1,10 @@ { inputs, config, ... }: { _module.args = { - pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${config.nixpkgs.hostPlatform.system}; + pkgs-unstable = import inputs.nixpkgs-unstable { + system = config.nixpkgs.hostPlatform.system; + config = config.nixpkgs.config; + }; }; imports = [ diff --git a/modules/services/actual.nix b/modules/services/actual.nix new file mode 100644 index 0000000..9db6b9e --- /dev/null +++ b/modules/services/actual.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + ... +}: +let + cfg = config.services.actual; + fqdn = "${cfg.subdomain}.${config.networking.domain}"; +in +{ + options.services.actual = { + subdomain = lib.mkOption { + type = lib.types.str; + }; + environmentFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + }; + }; + + config = lib.mkIf cfg.enable { + services = { + webserver = { + enable = lib.mkDefault true; + vHosts.${fqdn}.locations."/".proxyPort = cfg.settings.port; + }; + }; + + systemd.services.actual = { + serviceConfig.EnvironmentFile = cfg.environmentFile; + }; + }; +} diff --git a/modules/services/default.nix b/modules/services/default.nix index ae41162..28e5bc2 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -26,5 +26,9 @@ ./weechat.nix ./hledger-web.nix ./glance.nix + ./sillytavern.nix + ./nqptp.nix + ./actual.nix + ./voidauth.nix ]; } diff --git a/modules/services/nqptp.nix b/modules/services/nqptp.nix new file mode 100644 index 0000000..79af475 --- /dev/null +++ b/modules/services/nqptp.nix @@ -0,0 +1,27 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.services.nqptp; +in +{ + options.services.nqptp = { + enable = lib.mkEnableOption "nqptp service for shairport-sync"; + }; + + config = lib.mkIf cfg.enable { + systemd.services.nqptp = { + description = "Network Queued PCM Transport Protocol"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = lib.getExe pkgs.nqptp; + Restart = "on-failure"; + }; + }; + }; +} diff --git a/modules/services/voidauth.nix b/modules/services/voidauth.nix new file mode 100644 index 0000000..aae03d3 --- /dev/null +++ b/modules/services/voidauth.nix @@ -0,0 +1,50 @@ +{ + lib, + config, + inputs, + ... +}: +let + cfg = config.services.voidauth; + fqdn = "${cfg.subdomain}.${config.networking.domain}"; + port = cfg.settings.APP_PORT or 3000; +in +{ + options.services.voidauth = { + subdomain = lib.mkOption { + type = lib.types.str; + }; + }; + + imports = [ + inputs.voidauth.nixosModules.voidauth + ]; + + config = lib.mkIf cfg.enable { + services = { + voidauth = { + settings = { + APP_URL = "https://${fqdn}"; + DB_SOCKET_PATH = "/run/postgresql"; + DB_NAME = "voidauth"; + }; + }; + + webserver = { + enable = lib.mkDefault true; + vHosts.${fqdn}.locations."/".proxyPort = port; + }; + + postgresql = { + enable = lib.mkDefault true; + ensureDatabases = [ "voidauth" ]; + ensureUsers = [ + { + name = "voidauth"; + ensureDBOwnership = true; + } + ]; + }; + }; + }; +}