# Getting started {#sec-contrib-getting-started}

If you have not previously forked Home Manager then you need to do that
first. Have a look at GitHub's [Fork a
repo](https://help.github.com/articles/fork-a-repo/) for instructions on
how to do this.

Once you have a fork of Home Manager you should create a branch starting
at the most recent `master` branch. Give your branch a reasonably
descriptive name. Commit your changes to this branch and when you are
happy with the result and it fulfills [Guidelines](guidelines.md#sec-guidelines) then
push the branch to GitHub and [create a pull
request](https://help.github.com/articles/creating-a-pull-request/).

Assuming your clone is at `$HOME/devel/home-manager` then you can make
the `home-manager` command use it by either

1.  overriding the default path by using the `-I` command line option:

    ``` shell
    $ home-manager -I home-manager=$HOME/devel/home-manager
    ```

    or, if using [flakes](../nix-flakes/standalone.md#sec-flakes-standalone):

    ``` shell
    $ home-manager --override-input home-manager ~/devel/home-manager
    ```

    or

2.  changing the default path by ensuring your configuration includes

    ``` nix
    programs.home-manager.enable = true;
    programs.home-manager.path = "$HOME/devel/home-manager";
    ```

    and running `home-manager switch` to activate the change.
    Afterwards, `home-manager build` and `home-manager switch` will use
    your cloned repository.

The first option is good if you only temporarily want to use your clone.
