{
  description = "developpement and deployment flake for shoblog";

  inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";

  outputs = { self, nixpkgs }:
    let
      supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
      forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
        pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
      });
    in
    {
      devShells = forEachSupportedSystem ({ pkgs }: {
        default = pkgs.mkShell {
          packages = with pkgs; [ nodejs yarn jetbrains.webstorm yarn2nix ];
        };
      });

      packages = forEachSupportedSystem ({ pkgs }: {
        default = pkgs.mkYarnPackage {
          name = "shoblog-front";
          src = ./.;

          packageJSON = ./package.json;
          yarnLock = ./yarn.lock;
          yarnNix = ./yarn.nix;
          
          buildPhase = ''
            runHook preBuild;
            mkdir $TEMPDIR/dist
            yarn run build --outDir $TEMPDIR/dist;
            runHook postBuild;
          '';

          installPhase = ''
            runHook preInstall
            mkdir -p $out/
            cp -r $TEMPDIR/dist/ $out/
            runHook postInstall
          '';

          distPhase = ''true'';
        };
      });
    };
}
