|
|
(8 intermediate revisions by 3 users not shown) |
Line 7: |
Line 7: |
| == Create pull requests == | | == Create pull requests == |
|
| |
|
| If you want to see your package being provided by a channel, creating an issue will most likely not enough. It is up to you to create a [[Contributing to Nixpkgs|nix package description]] in Nixpkgs and create a pull request in the Nixpkgs repository. Pull requests are a way to tell a GitHub project that you've created some changes, which maintainers can easily review, comment on and, and finally merge into the repository. | | If you want to see your package being provided by a channel, creating an issue will most likely not enough. It is up to you to create a nix package description in Nixpkgs and create a pull request in the Nixpkgs repository. Pull requests are a way to tell a GitHub project that you've created some changes, which maintainers can easily review, comment on and, and finally merge into the repository. |
|
| |
|
| Here's how to create a pull request on GitHub:
| | See [https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#how-to-create-pull-requests How to create pull requests] in nixpkgs CONTRIBUTING.md. |
| | |
| === Fork Nixpkgs on Github ===
| |
| | |
| Create a GitHub account and fork the [https://github.com/NixOS/nixpkgs nixpkgs repository].
| |
| | |
| === Add a remote ===
| |
| | |
| On your host, create a new remote location:
| |
| <syntaxhighlight lang="bash">
| |
| # add your github clone as remote location:
| |
| YOUR_GITHUB_NAME=fill-in
| |
| git remote add $YOUR_GITHUB_NAME git@github.com:$YOUR_GITHUB_NAME/nixpkgs.git
| |
| </syntaxhighlight>
| |
|
| |
|
| === Hack Nixpkgs === | | === Hack Nixpkgs === |
Line 34: |
Line 21: |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| sudo nixos-rebuild switch -I nixpkgs=/path/to/local/nixpkgs | | sudo nixos-rebuild switch -I nixpkgs=/path/to/local/nixpkgs |
| </syntaxhighlight>
| |
|
| |
| === Commit your change locally ===
| |
|
| |
| Commit your change to your local clone of the repository:
| |
| <syntaxhighlight lang="bash">
| |
| git add FILE_LIST # use git add --patch as needed
| |
| git commit
| |
|
| |
| === Check status ===
| |
|
| |
| Verify everything is ok - no unexpected dangling files git does not know about yet:
| |
| git status
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
Line 86: |
Line 60: |
| for example on <code>aarch64-darwin</code> | | for example on <code>aarch64-darwin</code> |
|
| |
|
| Solution: Make it an optional dependency: | | To see how other packages handle this dependency: |
| | |
| | <pre> |
| | cd nixpkgs/pkgs |
| | grep -r some-dependency |
| | # -r = --recursive |
| | </pre> |
| | |
| | ===== Avoid alias ===== |
| | |
| | Solution 1: Replace alias names with the real package names. For example: |
| | |
| | * utillinux → util-linux |
| | * double_conversion → double-conversion |
| | |
| | ===== Make optional ===== |
| | |
| | Solution 2: Make it an optional dependency: |
|
| |
|
| <pre> | | <pre> |
Line 94: |
Line 85: |
| , another-dependency | | , another-dependency |
| }: | | }: |
| | |
| stdenv.mkDerivation { | | stdenv.mkDerivation { |
| buildInputs = | | buildInputs = |
Line 102: |
Line 94: |
| } | | } |
| </pre> | | </pre> |
|
| |
| === Push to your remote repository ===
| |
|
| |
| Submitting your change, push to your repository:
| |
|
| |
| <syntaxhighlight lang="bash">
| |
| # recommended: create a topic branch, so that this change
| |
| # can be submitted independently from other patches:
| |
| git checkout -tb submit/your-topic-name
| |
| git push $YOUR_GITHUB_NAME submit/your-topic-name
| |
| </syntaxhighlight>
| |
|
| |
| Why create your own branch? You can follow upstream (master) by running <code>git merge master</code>.
| |
| You can <code>git commit --amend</code> fixes and <code>git push -f</code> your branch.
| |
| You can always switch back to master by <code>git checkout master</code>.
| |
|
| |
| === Create a pull request on GitHub ===
| |
|
| |
| Go to [https://github.com/nixos/nixpkgs the Nixpkgs repository] and push the ''create pull request'' button. Add a description of your work and submit.
| |
|
| |
|
| === Manage your local repository === | | === Manage your local repository === |
Line 128: |
Line 101: |
| == Becoming a Nixpkgs maintainer == | | == Becoming a Nixpkgs maintainer == |
|
| |
|
| There are two types of maintainer: Members of the NixOS organization and package/module maintainer.
| | See [https://github.com/NixOS/nixpkgs/tree/master/maintainers maintainers] in nixpkgs |
| | |
| Members of the NixOS organization have direct access to the [https://github.com/Nixos/nixpkgs nixpkgs] and therefore can merge [[Create-pull-requests|pull requests]].
| |
| | |
| Everybody can become a package maintainer by adding to <code>maintainers</code> attribute in the meta section of a package. First add your nick handle (preferable your GitHub username) to [https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix maintainer-list.nix] and reference the said handle within the package:
| |
| | |
| <syntaxhighlight lang="nix">{ stdenv, lib, fetchurl }:
| |
| stdenv.mkDerivation rec {
| |
| name = "hello-2.10";
| |
| # ....
| |
| meta = with lib; {
| |
| # ...
| |
| maintainers = with maintainers; [ eelco your-nick ]; # replace your-nick with your real nick
| |
| platforms = platforms.all;
| |
| };
| |
| }</syntaxhighlight>
| |
| There can be multiple maintainers per package. Maintainers will receive emails from [[Hydra|Hydra]] when package builds enters a failed state. They do not have special privileges as everybody can suggest updates and modifications to any package. However they might be consulted by NixOS members for testing and as a domain experts, when somebody else make a change to a package.
| |
|
| |
|
| === Building all of the packages you maintain === | | === Building all of the packages you maintain === |
Line 167: |
Line 124: |
| git checkout master #1 | | git checkout master #1 |
| git fetch upstream | | git fetch upstream |
| git rebase upstream/master | | git branch -u upstream/master |
| </syntaxhighlight> | | </syntaxhighlight> |
| 1. make sure you're on the master branch | | 1. make sure you're on the master branch |
| | |
| | after the above steps you only have to <code>git pull</code> to update the master branch |
|
| |
|
| [https://stackoverflow.com/a/7244456 source] | | [https://stackoverflow.com/a/7244456 source] |
| | [[Category:Community]] |