{ description = "My website hosting random thoughts"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; 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"; }; radion-theme = { url = "github:micahkepe/radion"; flake = false; }; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.treefmt-nix.flakeModule inputs.pre-commit-hooks-nix.flakeModule ]; systems = [ "x86_64-linux" ]; perSystem = { config, pkgs, ... }: let theme = inputs.radion-theme; themeName = ((builtins.fromTOML (builtins.readFile "${theme}/theme.toml")).name); in { packages = { default = config.packages.website; website = pkgs.stdenv.mkDerivation { pname = "sorre-website"; version = "2026-02-20"; src = ./.; nativeBuildInputs = [ pkgs.zola ]; configurePhase = '' mkdir -p "themes/${themeName}" cp -r ${theme}/* "themes/${themeName}" ''; buildPhase = "zola build"; installPhase = "cp -r public $out"; }; docker-image = pkgs.dockerTools.buildImage { name = "sorre-website"; tag = "latest"; config = { ExposedPorts = { "8080/tcp" = { }; }; Cmd = [ "${pkgs.pkgsStatic.darkhttpd}/bin/darkhttpd" "${config.packages.website}" "--port" "8080" "--addr" "0.0.0.0" ]; }; }; }; devShells.default = let stdenvMinimal = pkgs.stdenvNoCC.override { cc = null; preHook = ""; allowedRequisites = null; initialPath = pkgs.lib.filter ( a: pkgs.lib.hasPrefix "coreutils" a.name ) pkgs.stdenvNoCC.initialPath; extraNativeBuildInputs = [ ]; }; minimalMkShell = pkgs.mkShell.override { stdenv = stdenvMinimal; }; in minimalMkShell { packages = with pkgs; [ zola ] ++ builtins.attrValues config.treefmt.build.programs; shellHook = '' mkdir -p themes ln -sn "${theme}" "themes/${themeName}" ''; }; treefmt = { projectRootFile = "flake.nix"; programs = { nixfmt.enable = true; }; }; pre-commit = { check.enable = true; settings.hooks = { treefmt.package = config.treefmt.build.wrapper; treefmt.enable = true; deadnix.enable = true; }; }; }; }; }