diff --git a/hosts/default.nix b/hosts/default.nix index 3795651..23f9596 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -14,4 +14,12 @@ in { modules = [ ./astral ]; specialArgs = { inherit (self) nixosModules; }; }; + quasar = nixosSystem { + system = "x86_64-linux"; + modules = [ ./quasar ]; + specialArgs = { + inherit (self) nixosModules; + inherit agenix; + }; + }; } diff --git a/hosts/quasar/default.nix b/hosts/quasar/default.nix new file mode 100644 index 0000000..c3ba129 --- /dev/null +++ b/hosts/quasar/default.nix @@ -0,0 +1,89 @@ +{ modulesPath, nixosModules, agenix, pkgs, config, ... }: { + imports = [ + "${modulesPath}/virtualisation/amazon-image.nix" + nixosModules.nettika + nixosModules.promptmoji + agenix.nixosModules.default + ]; + + nixpkgs.config.allowUnfree = true; + + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + trusted-users = [ "@wheel" ]; + }; + + security.sudo.wheelNeedsPassword = false; + + environment.variables.EDITOR = "nano"; + + networking = { + hostName = "quasar"; + networkmanager.enable = true; + firewall.allowedTCPPorts = [ 80 443 ]; + }; + + environment.systemPackages = [ pkgs.htop ]; + + age.secrets = { + matrix-synapse-secrets.file = ./secrets/matrix-synapse-secrets.age; + }; + + services.postgresql = { enable = true; }; + + services.caddy = { + enable = true; + virtualHosts = { + "consortium.chat".extraConfig = '' + reverse_proxy localhost:8008 + header Strict-Transport-Security "max-age=63072000; includeSubDomains" + ''; + "matrix.consortium.chat".extraConfig = '' + reverse_proxy /_matrix/* localhost:8008 + reverse_proxy /_synapse/client/* localhost:8008 + ''; + "admin.consortium.chat".extraConfig = '' + root * ${pkgs.synapse-admin} + file_server + ''; + }; + }; + + services.matrix-synapse = { + enable = true; + settings = { + server_name = "consortium.chat"; + serve_server_wellknown = true; + }; + extraConfigFiles = [ config.age.secrets.matrix-synapse-secrets.path ]; + }; + + programs.git = { + enable = true; + lfs.enable = true; + config = { + init.defaultBranch = "master"; + user = { + email = "git@nettika.cat"; + name = "Nettika"; + }; + credential.helper = "store"; + }; + }; + + programs.nano = { + enable = true; + nanorc = '' + set autoindent + set linenumbers + ''; + }; + + programs.fish.enable = true; + + promptSymbol = "🌟"; + + time.timeZone = "America/Los_Angeles"; + + system.stateVersion = "24.05"; +} diff --git a/hosts/quasar/secrets/matrix-synapse-secrets.age b/hosts/quasar/secrets/matrix-synapse-secrets.age new file mode 100644 index 0000000..f8716bd --- /dev/null +++ b/hosts/quasar/secrets/matrix-synapse-secrets.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 f+PJrQ Iv9sdO33a3P4MqwsqV9fG1pZo2qflmlKYr2oDI/guwQ +oUUIBdg9Ey5RTBDFTKTvAdQGxKWtdlBluBE2Urosc7Y +--- pAqz01P0OJOGhl/nM09oFU+f447+O7K1lFRlkhcv740 +Hub~*:9zl/^o#ň3 ~z(56+<TxM5`F`[-3"Ϩ- +h? @4g ޳$s2b[Y) s܃_YI{4CRA$kQ, +oigr<'l$S2s8}E+\.ry"k}ԭ,ꐈ0=t