Tup: Difference between revisions

imported>Sheenobu
Add page about using Tup.
 
imported>Ehmry
Add flake note
 
(3 intermediate revisions by 2 users not shown)
Line 2: Line 2:


== Known Issues ==
== Known Issues ==
=== tup rebuilds too often ===
When using <code>updater.full_dep</code>, tup rebuilds the full project every time you reboot due to
mtime changes in /run/current-system.
The solution is to always use tup via <code>nix-shell --pure</code> so that /run/current-system is not in PATH
Github issue: [https://github.com/gittup/tup/issues/397 tup/#397]
Another method that minimizes changes to PATH is to create symlinks to tools with Tup:
<syntaxhighlight lang="tup">
# Tuprules.tup - export a bang-rule that calls the Dhall interpreter
DHALL_LINK = $(TUP_CWD)/dhall
!dhall = | $(DHALL_LINK) |> $(DHALL_LINK)/bin/dhall |>
</syntaxhighlight>
<syntaxhighlight lang="tup">
# Tupfile - build a symlink to the nixpkgs#dhall package
include_rules
: |> nix build nixpkgs#dhall --out-link %o |> $(DHALL_LINK)
</syntaxhighlight>


=== mount does not unmount ===
=== mount does not unmount ===


Tup can either not find fusermount OR the fusermount that
Tup can either not find fusermount OR the fusermount that tup finds is not setuid when using --pure.  
tup finds is not setuid. Github issue: (107516)[https://github.com/NixOS/nixpkgs/issues/107516].
 
Github issue: [https://github.com/NixOS/nixpkgs/issues/107516 nixpkgs/#107516]
 
There is no real solution to this other than 1. patching tup to use setuid fusermount 2. (maybe) setting tup as setuid.


=== pkg-config can not find my packages ===
=== pkg-config can not find my packages ===
Line 24: Line 50:


You can verify this by adding <code>: |> pkg-config --list-all > %o |> pkg-list.txt</code> into your Tupfile and seeing which libraries are available via pkg-config.
You can verify this by adding <code>: |> pkg-config --list-all > %o |> pkg-list.txt</code> into your Tupfile and seeing which libraries are available via pkg-config.
=== Flakes ===
A Tup rule must not use a flake that resides in the same tup project as the rule because the nix command can aggressively access files in the vicinity of flake.nix. The flake should be external to the tup project or it can be stored within the same repository but only on a different branch, which would then then be registered in the local nix flake registry.
[[Category:Applications]]