Jump to content

Nixpkgs/Contributing: Difference between revisions

no edit summary
imported>Milahu
m (lint nix)
No edit summary
 
(5 intermediate revisions by 2 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 100: Line 74:
* utillinux &rarr; util-linux
* utillinux &rarr; util-linux
* double_conversion &rarr; double-conversion
* double_conversion &rarr; double-conversion
===== Use wrapper =====
Solution 2: Replace real packages with wrapper packages. For example:
* xlibs &rarr; xlibsWrapper


===== Make optional =====
===== Make optional =====


Solution 3: Make it an optional dependency:
Solution 2: Make it an optional dependency:


<pre>
<pre>
Line 126: 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 152: 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 191: 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]]
trusted
602

edits