{ description = "My website hosting random thoughts"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; devshell = { url = "github:numtide/devshell"; inputs.nixpkgs.follows = "nixpkgs"; }; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; pre-commit-hooks-nix = { url = "github:cachix/pre-commit-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.devshell.flakeModule inputs.treefmt-nix.flakeModule inputs.pre-commit-hooks-nix.flakeModule ]; systems = [ "x86_64-linux" ]; perSystem = { config, pkgs, ... }: { packages = { default = config.packages.website; website = pkgs.stdenv.mkDerivation { pname = "sorre-website"; version = "2023-11-15"; src = ./.; nativeBuildInputs = [ pkgs.zola ]; buildPhase = "zola build"; installPhase = "cp -r public $out"; }; }; devshells.default = { packages = builtins.attrValues config.treefmt.build.programs; commands = with pkgs; [{ package = zola; }]; }; treefmt = { projectRootFile = ./flake.nix; programs = { nixfmt.enable = true; }; }; pre-commit = { check.enable = true; settings = { settings = { treefmt.package = config.treefmt.build.wrapper; }; hooks = { treefmt.enable = true; deadnix.enable = true; }; }; }; }; }; }