{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    maxfetch.url = "github:jobcmax/maxfetch";
    orcaslicer.url = "github:ovlach/nix-orca-slicer";
    hyprland.url = "github:hyprwm/Hyprland";
    sops-nix = {
      url = "github:mic92/sops-nix";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.nixpkgs-stable.follows = "";
    };
    nur.url = "github:nix-community/NUR";
    arrpc.url = "github:notashelf/arrpc-flake";
  };

  outputs = { self, nixpkgs, home-manager, nur, ...}@inputs:
  let 
    system = "x86_64-linux";
    username = "nicolaivds";
    home_profile = "nicolaivds";
    pkgs = nixpkgs.legacyPackages.${system};
    # The path to this very repo
    flake_path =  "~/.dotfiles";
  in
  {
    homeConfigurations = {
      "${username}" = home-manager.lib.homeManagerConfiguration {
        inherit pkgs;
        extraSpecialArgs = { inherit username flake_path inputs; };
        modules = [
          ./nix/users/${home_profile}
          # Pin registry to flake
          { nix.registry.nixpkgs.flake = nixpkgs; }
          # Pin channel to flake
          # { home.sessionVariables.NIX_PATH = "nixpkgs=nixpkgs=flake:nixpkgs$\{NIX_PATH:+:$NIX_PATH}"; }
          { home.sessionVariables.NIX_PATH = "nixpkgs=flake:nixpkgs$\{NIX_PATH:+:$NIX_PATH}"; }
        ];
      };
    };

    nixosConfigurations = {
      desktop = nixpkgs.lib.nixosSystem {
        inherit system;
        specialArgs = { inherit username flake_path inputs; };
        modules = [
          ./nix/systems/main/desktop
          { nix.registry.nixpkgs.flake = nixpkgs; }
          # { nix.nixPath = [ "nixpkgs=configflake:nixpkgs" ]; }
          { nix.nixPath = [ "nixpkgs=flake:nixpkgs" ]; }
        ];
      };
    };
  };
}