{
  description = "A wip universal Linux settings application.";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-parts = {
      url = "github:hercules-ci/flake-parts";
      inputs.nixpkgs-lib.follows = "nixpkgs";
    };
    rust-overlay.url = "github:oxalica/rust-overlay";
  };

  outputs = inputs @ { self, flake-parts, ... }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      systems = [ "x86_64-linux" "aarch64-linux" ];

      perSystem =
        { config
        , self'
        , inputs'
        , pkgs
        , system
        , ...
        }:
        {
          _module.args.pkgs = import self.inputs.nixpkgs {
            inherit system;
            overlays = [
              (import
                inputs.rust-overlay
              )
            ];
          };
          devShells.default = pkgs.mkShell {
            inputsFrom = builtins.attrValues self'.packages;
            packages = with pkgs; [
              # (rust-bin.selectLatestNightlyWith
              # (toolchain: toolchain.default))
              rust-bin.nightly."2024-05-10".default
              rust-analyzer
              clippy
            ];
          };

          packages =
            let
              lockFile = ./Cargo.lock;
            in
            rec {
              ReSet = pkgs.callPackage ./nix/default.nix { inherit inputs lockFile; };
              default = ReSet;
            };
        };
      flake = _: rec {
        nixosModules.home-manager = homeManagerModules.default;
        homeManagerModules = rec {
          ReSet = import ./nix/hm.nix inputs.self;
          default = ReSet;
        };
      };
    };
}