mirror of
https://github.com/srid/nixos-config.git
synced 2025-12-26 15:04:59 +08:00
cleanup
This commit is contained in:
parent
eff3333e3d
commit
d425868d12
7 changed files with 73 additions and 41 deletions
|
|
@ -5,33 +5,16 @@ let
|
|||
inherit (inputs) self;
|
||||
in
|
||||
{
|
||||
# nixos-unified.sshTarget = "root@5.161.184.111";
|
||||
nixos-unified.sshTarget = "gate";
|
||||
|
||||
imports = [
|
||||
./configuration.nix
|
||||
(self + /modules/nixos/shared/primary-as-admin.nix)
|
||||
(self + /webapps/proxy.nix)
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
services.tailscale.enable = true;
|
||||
services.openssh.settings.PasswordAuthentication = false;
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
virtualHosts."actualism.app" = {
|
||||
# FIXME: Don't hardcode, instead of read from pureintent's containers.nix
|
||||
locations."/".proxyPass = "http://pureintent:3000";
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
};
|
||||
};
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults.email = "srid@srid.ca";
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 22 ];
|
||||
|
||||
# Workaround the annoying `Failed to start Network Manager Wait Online` error on switch.
|
||||
# https://github.com/NixOS/nixpkgs/issues/180175
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
# TODO(refactor): decompose
|
||||
{ flake, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (flake) inputs;
|
||||
actualism-app = inputs.actualism-app.packages.${pkgs.system}.default;
|
||||
in
|
||||
{
|
||||
containers.actualism-app = {
|
||||
autoStart = true;
|
||||
config = { lib, ... }: {
|
||||
systemd.services.actualism-app = {
|
||||
description = "actualism-app";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe actualism-app}";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ in
|
|||
imports = [
|
||||
self.nixosModules.default
|
||||
./configuration.nix
|
||||
./containers.nix
|
||||
(self + /webapps/host.nix)
|
||||
];
|
||||
|
||||
services.openssh.enable = true;
|
||||
|
|
|
|||
9
webapps/README.md
Normal file
9
webapps/README.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Hosting webapps on home-server
|
||||
|
||||
Host them on `pureintent` (home-server)
|
||||
|
||||
Run nginx on `gate` (Hetzner VPS).
|
||||
|
||||
Put the two in a Tailscale network. Profit!
|
||||
|
||||
WARNING: This is not cleanly designed yet, so don't use it as a reference.
|
||||
8
webapps/default.nix
Normal file
8
webapps/default.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{ flake, system, ... }:
|
||||
{
|
||||
actualism-app = {
|
||||
port = 3000; # TODO: Change this, and pass to daemon (renaming `package` to `exec` or something)
|
||||
domain = "actualism.app";
|
||||
package = flake.inputs.actualism-app.packages.${system}.default;
|
||||
};
|
||||
}
|
||||
24
webapps/host.nix
Normal file
24
webapps/host.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Configuration for the host on which all webapps will run.
|
||||
{ flake, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
webapps = import ./. { inherit flake; system = pkgs.system; };
|
||||
in
|
||||
{
|
||||
# Run each web app as a systemd service decided inside a container.
|
||||
containers = lib.mapAttrs
|
||||
(name: v: {
|
||||
autoStart = true;
|
||||
config = {
|
||||
systemd.services.${name} = {
|
||||
description = name;
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe v.package}";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
})
|
||||
webapps;
|
||||
}
|
||||
30
webapps/proxy.nix
Normal file
30
webapps/proxy.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Configuration for the VPS running nginx reverse proxy
|
||||
{ flake, pkgs, lib, webapps, ... }:
|
||||
|
||||
let
|
||||
host = "pureintent"; # See host.nix
|
||||
webapps = import ./. { inherit flake; system = pkgs.system; };
|
||||
in
|
||||
{
|
||||
services.tailscale.enable = true;
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
|
||||
virtualHosts = lib.mapAttrs'
|
||||
(name: v: lib.nameValuePair v.domain {
|
||||
locations."/".proxyPass = "http://${host}:${builtins.toString v.port}";
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
})
|
||||
webapps;
|
||||
};
|
||||
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults.email = "srid@srid.ca";
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 22 ];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue