{ description = "Zola development environment"; inputs = { deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.url = "github:serokell/deploy-rs"; flake-parts.url = "github:hercules-ci/flake-parts"; git-hooks.inputs.nixpkgs.follows = "nixpkgs"; git-hooks.url = "github:cachix/git-hooks.nix"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; self.submodules = true; treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = inputs@{ self, ... }: inputs.flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.git-hooks.flakeModule inputs.treefmt-nix.flakeModule ]; systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; perSystem = { config, lib, pkgs, system, ... }: { treefmt = { programs.nixfmt.enable = true; programs.nixfmt.package = pkgs.nixfmt; programs.rustfmt.enable = true; }; pre-commit.settings.hooks = { treefmt.enable = true; }; apps.deploy = { type = "app"; program = "${inputs.deploy-rs.packages.${system}.default}/bin/deploy"; }; packages.blog = pkgs.stdenvNoCC.mkDerivation { pname = "ankarhem-blog-site"; version = "0"; src = ./.; nativeBuildInputs = [ pkgs.zola ]; buildPhase = '' runHook preBuild mkdir -p "$out" zola --config zola.toml build --output-dir "$out/public" runHook postBuild ''; dontInstall = true; }; checks = lib.optionalAttrs (system == "x86_64-linux") ( inputs.deploy-rs.lib.${system}.deployChecks self.deploy ); devShells.default = pkgs.mkShell { inherit (config.pre-commit) shellHook; packages = with pkgs; [ zola inputs.deploy-rs.packages.${system}.default ] ++ config.pre-commit.settings.enabledPackages; }; _module.args.pkgs = import inputs.nixpkgs { inherit system; overlays = lib.attrValues self.overlays; }; }; flake.deploy.nodes.homelab = { hostname = "homelab"; sshUser = "root"; user = "root"; profiles.blog = { path = let p = self.packages.x86_64-linux.blog; in inputs.deploy-rs.lib.x86_64-linux.activate.custom p '' ln -sfn "${p}/public" /var/www/ankarhem.dev ''; }; }; flake.overlays.default = final: prev: { }; }; }