{
  description = "Description for the project";

  inputs = {
    flake-parts.url = "github:hercules-ci/flake-parts";
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
    nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
    nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
    lix-module = {
      url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    home-manager = {
      url = "github:nix-community/home-manager/release-24.11";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    devshell.url = "github:numtide/devshell";
    nixos-hardware = {
      url = "github:NixOS/nixos-hardware/master";
    };
  };

  outputs = inputs @ {
    flake-parts,
    self,
    ...
  }:
    flake-parts.lib.mkFlake {inherit inputs;} {
      imports = [
        inputs.devshell.flakeModule
        ./nixos/machines/wsl/configuration.nix
        ./nixos/machines/installer/configuration.nix
        ./nixos/machines/crash/machine.nix
        ./home-manager/machines/wsl/home.nix
        ./home-manager/machines/crash/home.nix
        ./devshells/rust.nix
        ./devshells/idris2.nix
        ./devshells/raku.nix
        ./devshells/markdown.nix
      ];
      config = {
        systems = [
          "x86_64-linux"
          "aarch64-linux"
          "aarch64-darwin"
          "x86_64-darwin"
        ];
        perSystem = {
          config,
          self',
          inputs',
          pkgs,
          system,
          ...
        }: {
          # Per-system attributes can be defined here. The self' and inputs'
          # module parameters provide easy access to attributes of the same
          # system.

          # Equivalent to  inputs'.nixpkgs.legacyPackages.hello;
          packages.default = pkgs.hello;
        };
      };
      options = with inputs.nixpkgs.lib; {
        flake = flake-parts.lib.mkSubmoduleOptions {
          homeConfigurations = mkOption {
            type = types.lazyAttrsOf types.raw;
            default = {};
          };
        };
      };
    };
}