diff --git a/flake.lock b/flake.lock index 97a27cd..449e9f1 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,30 @@ { "nodes": { + "beautysh": { + "inputs": { + "nixpkgs": [ + "webshite", + "ide", + "nixvim", + "nixpkgs" + ], + "poetry2nix": "poetry2nix", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1680308980, + "narHash": "sha256-aUEHV0jk2qIFP3jlsWYWhBbm+w/N9gzH3e4I5DcdB5s=", + "owner": "lovesegfault", + "repo": "beautysh", + "rev": "9845efc3ea3e86cc0d41465d720a47f521b2799c", + "type": "github" + }, + "original": { + "owner": "lovesegfault", + "repo": "beautysh", + "type": "github" + } + }, "blobs": { "flake": false, "locked": { @@ -32,6 +57,128 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "webshite", + "ide", + "systems" + ] + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "webshite", + "ide", + "nixvim", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "ide": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "webshite", + "nixpkgs" + ], + "nixvim": "nixvim", + "systems": "systems_3" + }, + "locked": { + "lastModified": 1700381416, + "narHash": "sha256-aRPRwB6Wq7IeqAzYBfmOvmJhBL8vtWLinBzC2unIdFI=", + "owner": "ivandimitrov8080", + "repo": "flake-ide", + "rev": "2bb917c7b939e00166ef3a04ced321313036e0ce", + "type": "github" + }, + "original": { + "owner": "ivandimitrov8080", + "repo": "flake-ide", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1700014976, @@ -76,11 +223,111 @@ "type": "indirect" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "beautysh": "beautysh", + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "webshite", + "ide", + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1700240304, + "narHash": "sha256-nR5Ot2nN0msfGD1Vj76/4zb6+5ksJ28gfsit/BhK/oA=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "440c449c0a13f7864bb8406baf19f4e9f61abc55", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "poetry2nix": { + "inputs": { + "flake-utils": [ + "webshite", + "ide", + "nixvim", + "beautysh", + "utils" + ], + "nixpkgs": [ + "webshite", + "ide", + "nixvim", + "beautysh", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658665240, + "narHash": "sha256-/wkx7D7enyBPRjIkK0w7QxLQhzEkb3UxNQnjyc3FTUI=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "8b8edc85d24661d5a6d0d71d6a7011f3e699780f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "poetry2nix", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_3", + "gitignore": "gitignore", + "nixpkgs": [ + "webshite", + "ide", + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1699271226, + "narHash": "sha256-8Jt1KW3xTjolD6c6OjJm9USx/jmL+VVmbooADCkdDfU=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ea758da1a6dcde6dc36db348ed690d09b9864128", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "nixpkgs": "nixpkgs", "simple-nixos-mailserver": "simple-nixos-mailserver", - "vpsadminos": "vpsadminos" + "vpsadminos": "vpsadminos", + "webshite": "webshite" } }, "simple-nixos-mailserver": { @@ -108,6 +355,51 @@ "type": "gitlab" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1680978846, + "narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=", + "owner": "nix-systems", + "repo": "x86_64-linux", + "rev": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "x86_64-linux", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1605370193, @@ -123,6 +415,21 @@ "type": "github" } }, + "utils_2": { + "locked": { + "lastModified": 1678901627, + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "vpsadminos": { "locked": { "lastModified": 1699919832, @@ -137,6 +444,28 @@ "repo": "vpsadminos", "type": "github" } + }, + "webshite": { + "inputs": { + "ide": "ide", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1700996381, + "narHash": "sha256-mKPkSgMnnrYHIAK44J+cGRlMD0jVz5E9ZFNu+kjGaB0=", + "owner": "ivandimitrov8080", + "repo": "idimitrov.dev", + "rev": "a7eb0513e6fb22eacaa365f37ad4482272e9bc4d", + "type": "github" + }, + "original": { + "owner": "ivandimitrov8080", + "ref": "nextjs_standalone", + "repo": "idimitrov.dev", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 86d3a78..37dd354 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,10 @@ url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; inputs.nixpkgs.follows = "nixpkgs"; }; + webshite = { + url = "github:ivandimitrov8080/idimitrov.dev/nextjs_standalone"; + inputs.nixpkgs.follows = "nixpkgs"; + }; vpsadminos.url = "github:vpsfreecz/vpsadminos"; }; @@ -13,18 +17,21 @@ , nixpkgs , simple-nixos-mailserver , vpsadminos + , webshite , ... }: let - myOverlay = self: super: { - scripts = (super.buildEnv { name = "scripts"; paths = [ ./. ]; }); + system = "x86_64-linux"; + myOverlay = final: prev: { + scripts = (final.buildEnv { name = "scripts"; paths = [ ./. ]; }); + webshite = webshite.packages.${system}.default; }; in { nixosConfigurations = { + inherit system; mailserver = nixpkgs.lib.nixosSystem rec { - system = "x86_64-linux"; modules = [ simple-nixos-mailserver.nixosModule vpsadminos.nixosConfigurations.container diff --git a/mailserver/default.nix b/mailserver/default.nix index 89571e9..1154d6e 100644 --- a/mailserver/default.nix +++ b/mailserver/default.nix @@ -1,4 +1,4 @@ { config, pkgs, ... }: { - imports = [ ./configuration.nix ./mailserver.nix ./roundcube.nix ./postgres.nix ./wireguard.nix ]; + imports = [ ./configuration.nix ./mailserver ./roundcube ./postgres ./wireguard ./nginx ./webshite ]; } diff --git a/mailserver/mailserver.nix b/mailserver/mailserver/default.nix similarity index 100% rename from mailserver/mailserver.nix rename to mailserver/mailserver/default.nix diff --git a/mailserver/nginx/default.nix b/mailserver/nginx/default.nix new file mode 100644 index 0000000..bb061a6 --- /dev/null +++ b/mailserver/nginx/default.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: +{ + services = { + nginx = { + enable = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts."webshite.idimitrov.dev" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:3000"; + }; + }; + }; + }; +} diff --git a/mailserver/postgres.nix b/mailserver/postgres/default.nix similarity index 100% rename from mailserver/postgres.nix rename to mailserver/postgres/default.nix diff --git a/mailserver/roundcube.nix b/mailserver/roundcube/default.nix similarity index 94% rename from mailserver/roundcube.nix rename to mailserver/roundcube/default.nix index 97b7c9d..ecfd0b1 100644 --- a/mailserver/roundcube.nix +++ b/mailserver/roundcube/default.nix @@ -14,6 +14,5 @@ $config['smtp_pass'] = "%p"; ''; }; - nginx.enable = true; }; } diff --git a/mailserver/webshite/default.nix b/mailserver/webshite/default.nix new file mode 100644 index 0000000..a855d9d --- /dev/null +++ b/mailserver/webshite/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + systemd.services.webshite = { + enable = true; + serviceConfig = { + ExecStart = "${pkgs.bash}/bin/bash ${pkgs.webshite}/bin/idimitrov.dev"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + }; +} diff --git a/mailserver/wireguard.nix b/mailserver/wireguard/default.nix similarity index 100% rename from mailserver/wireguard.nix rename to mailserver/wireguard/default.nix