[Nix-dev] Managing private Nix packages outside the Nixpkgs tree

Matthias Beyer mail at beyermatthias.de
Sun Jan 18 13:17:10 CET 2015

Hi Eike,

Thanks for your suggestions. I managed to build my own setup, which
works but is a bit bulky by now.

What I do:

    * define what vim-plugins I want to use from upstream (list)
    * define own vim plugins (list, lets call it ownPlugins)
    * Append the lists (lets call it vimPlugins)
    * Override vim
        * Append all plugins to the runtimepath, which means
            * "ownPlugins" is one package, so just append the
              appropriate RTP here
            * Append the appropriate path for each non-ownPlugins vim
              plugin package to the RTP
    * Append vimPlugins list to the systemPackages
    * Append my customized vim to the list of systempackages

I don't know whether the idea "append to the vim runtimepath" is the
thing that slows down vim at startup, but it seems so. It is a
slow machine, thought.

I will post a blog article about my vim setup maybe next week, I'll
notify you as soon as it is online!

On 17-01-2015 18:49:56, Eike wrote:
> AFAICS, its enough to specify your own definitions in
> `nixpkgs.packageOverrides'. This takes the original package collection
> and returns a map with new/overriden packages. I have this setup:
> common.nix (imported in all machine configs):
> nixpkgs = {
>   config = {
>     allowUnfree = true;
>     packageOverrides = import ./pkgs;
>   };
> };
> then ./pkgs/default.nix looks like this:
> pkgs:
> let
>   callPackage = pkgs.lib.callPackageWith(pkgs // custom);
>   custom = {
>     cdparanoiax = callPackage ./cdparanoiax {};
>     ...other packages...
>   };
> in custom

Looks sane to me.

As far as I can see, your `custom` is a Set here. But
`environment.systemPackages` must be a list, so how do you convert
it into a list?

> Since the callPackage function is redefined that way, you can have
> dependencies between your own packages. Then each directory in pkgs is a
> package definition just like it is done in nixpkgs. I can then add
> `pkgs.cdparanoiax' to `environment.systemPackages'.

Awesome! Having dependencies between own packages sounds good to me, I
will try this out! Thanks for pointing out how it works!

Mit freundlichen Grüßen,
Kind regards,
Matthias Beyer

Proudly sent with mutt.
Happily signed with gnupg.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
Url : http://lists.science.uu.nl/pipermail/nix-dev/attachments/20150118/de28df28/attachment.bin 

More information about the nix-dev mailing list