diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b0b14d6 --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1710287966, + "narHash": "sha256-W/Ny8KSyZqbBncGdcyv8K63pXkZFSESJrbQi4EKWbdU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "54dce4f0ac3334c35093d38b17fe3799eab929b4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1f1422a --- /dev/null +++ b/flake.nix @@ -0,0 +1,59 @@ +{ + description = "Zola homepage for lix.systems"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + }; + + outputs = { + self, + nixpkgs, + }: let + forAllSystems = function: + builtins.mapAttrs + (system: pkgs: function (pkgs.appendOverlays [self.overlays.default])) + nixpkgs.legacyPackages; + in { + devShells = forAllSystems (pkgs: { + default = pkgs.mkShell { + inputsFrom = [pkgs.lix-systems-website]; + }; + }); + + packages = forAllSystems (pkgs: { + default = pkgs.lix-systems-website; + }); + + overlays.default = final: prev: { + lix-systems-website = final.stdenv.mkDerivation { + name = "lix.systems"; + src = self; + nativeBuildInputs = [final.zola]; + buildPhase = '' + zola build + ''; + installPhase = '' + cp -r public "$out" + ''; + }; + }; + + nixosModules.default = {pkgs}: let + host = "lix.systems"; + in { + nixpkgs.overlays = [self.overlays.default]; + + services.nginx = { + enable = true; + + virtualHosts = { + "${host}" = { + forceSSL = true; + enableACME = true; + root = "${pkgs.lix-systems-website}"; + }; + }; + }; + }; + }; +}