pkgs.nix-gitignore
pkgs.nix-gitignore is a function that acts similarly to
builtins.filterSource but also allows filtering with the
help of the gitignore format.
Usage
pkgs.nix-gitignore exports a number of functions, but
you'll most likely need either gitignoreSource or
gitignoreSourcePure. As their first argument, they both
accept either 1. a file with gitignore lines or 2. a string with gitignore
lines, or 3. a list of either of the two. They will be concatenated into a
single big string.
{} }:
nix-gitignore.gitignoreSource [] ./source
# Simplest version
nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source
# This one reads the ./source/.gitignore and concats the auxiliary ignores
nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source
# Use this string as gitignore, don't read ./source/.gitignore.
nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n", ~/.gitignore] ./source
# It also accepts a list (of strings and paths) that will be concatenated
# once the paths are turned to strings via readFile.
]]>
These functions are derived from the Filter functions by
setting the first filter argument to (_: _: true):
Those filter functions accept the same arguments the
builtins.filterSource function would pass to its filters,
thus fn: gitignoreFilterSourcePure fn "" should be
extensionally equivalent to filterSource. The file is
blacklisted iff it's blacklisted by either your filter or the
gitignoreFilter.
If you want to make your own filter from scratch, you may use
gitignore files in subdirectories
If you wish to use a filter that would search for .gitignore files in
subdirectories, just like git does by default, use this function: