Skip to content

Enable pipe-operators experimental feature by default#17

Open
surma wants to merge 1 commit intotecnix-gcsfrom
enable-pipe-operators-by-default
Open

Enable pipe-operators experimental feature by default#17
surma wants to merge 1 commit intotecnix-gcsfrom
enable-pipe-operators-by-default

Conversation

@surma
Copy link
Copy Markdown
Member

@surma surma commented Mar 19, 2026

The pipe operator (|> and <|) is used heavily in Tecnix/Tectonix Nix expressions at Shopify. This change makes it enabled by default, similar to how flakes and nix-command were enabled by default before being stabilized.

This sets PipeOperators in the default value of the experimental-features setting, so users no longer need to explicitly opt in.

Motivation

Context


Add 👍 to pull requests you find important.

The Nix maintainer team uses a GitHub project board to schedule and track reviews.

Uses extra-experimental-features to append pipe-operators after config
loading, so it's always enabled regardless of any user-configured
experimental-features setting.

The pipe operator (`|>` and `<|`) is used heavily in Tecnix/Tectonix
Nix expressions at Shopify.

Co-authored-by: Surma Surma <surma@shopify.com>
@shopify-river shopify-river bot force-pushed the enable-pipe-operators-by-default branch from f69130e to 0bdab8e Compare March 19, 2026 15:20
Copy link
Copy Markdown

@lilyinstarlight lilyinstarlight left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like you also need to remove tests/functional/lang/eval-fail-pipe-operators.nix and tests/functional/lang/eval-fail-pipe-operators.err.exp as well (otherwise functional tests fail, since apparently experimental feature eval failures are included in language tests?)

Otherwise this should be good on a technical level (even if I am still mildly worried about carrying divergence like this when we can keep these sorts of things in the global config (and I'm more worried about things that can't be global, e.g. keeping the machinery on our side to inject --lazy-trees and --extra-experimental-features parallel-eval etc only for tecnix/detnix, until we have tecnix nix-daemon anyway))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants