Provide `pixi` Out-of-the-Box

pixi provides the capabilities of brew and more.

It would be helpful to add pixi global sync to ujust update.

The following is copied from this link

Yes, pixi does exactly that. When you globally install a tool, you create individual environments for each tool, and we only expose the executables from the package that you are interested in. This is completely controllable via the “global manifest file”.

version = 1
[envs.coreutils]
channels = ["conda-forge"]
dependencies = { coreutils = "*" }
exposed = { tee = "tee", md5sum = "md5sum", split = "split", cat = "cat", shuf = "shuf", mkfifo = "mkfifo", pathchk = "pathchk", runcon = "runcon", expand = "expand", tty = "tty", basename = "basename", install = "install", nice = "nice", truncate = "truncate", echo = "echo", du = "du", ptx = "ptx", join = "join", pwd = "pwd", test = "test", csplit = "csplit", sort = "sort", whoami = "whoami", touch = "touch", unlink = "unlink", b2sum = "b2sum", sleep = "sleep", fmt = "fmt", stty = "stty", logname = "logname", chgrp = "chgrp", printenv = "printenv", seq = "seq", uname = "uname", sha224sum = "sha224sum", od = "od", date = "date", base64 = "base64", realpath = "realpath", readlink = "readlink", dircolors = "dircolors", timeout = "timeout", tac = "tac", numfmt = "numfmt", wc = "wc", basenc = "basenc", comm = "comm", nproc = "nproc", expr = "expr", cksum = "cksum", printf = "printf", groups = "groups", chcon = "chcon", factor = "factor", tail = "tail", env = "env", pr = "pr", head = "head", kill = "kill", uniq = "uniq", stat = "stat", link = "link", sum = "sum", tsort = "tsort", mknod = "mknod", users = "users", dd = "dd", who = "who", sha1sum = "sha1sum", mktemp = "mktemp", cut = "cut", sha256sum = "sha256sum", dir = "dir", mkdir = "mkdir", nl = "nl", shred = "shred", fold = "fold", rmdir = "rmdir", sha384sum = "sha384sum", mv = "mv", dirname = "dirname", id = "id", base32 = "base32", pinky = "pinky", ln = "ln", hostid = "hostid", chroot = "chroot", ls = "ls", true = "true", cp = "cp", sync = "sync", yes = "yes", unexpand = "unexpand", chown = "chown", chmod = "chmod", uptime = "uptime", rm = "rm", vdir = "vdir", false = "false", sha512sum = "sha512sum", "[" = "[", tr = "tr", paste = "paste", nohup = "nohup" }

[envs.git-lfs]
channels = ["conda-forge"]
dependencies = { git-lfs = "*" }
exposed = { git-lfs = "git-lfs" }

You can modify the file by hand pixi global edit or use pixi global install foobar.

The exposed binaries can also be renamed - which allows you to install multiple versions side by side (for example, you could type exposed = { git-lfs-old = "git-lfs" }).

Unlike Homebrew, pixi (or really the conda ecosystem) also comes with a SAT solver and old versions are never deleted. That means you can still install python=3.5 or whatever.

Pixi also does not care where you put it on the PATH.

3 Likes

The only issue I can see is that it muddies the water for new uses.
"Should I use brew or pixi global?
"Should I use devcontainer or pixi project?

It does address some issues mentioned in…

  • “But no Linux ARM”
  • " Caveats"

In general, pixi global should be preferred. At present the brew repositories are more extensive, but conda-forge is growing fast. pixi also installs from pypi and cargo is in the works.

In project mode pixi provides environments which can serve as a lighter-weight (to the already light-weight) devcontainer.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.