Skip to content

[Feature]: Provide official Nix flake packages for stable and nightly releases #15278

Description

@SINGH-RAJVEER

Request

Please provide a flake in this repository that exposes installable T3 Code desktop packages for NixOS users:

Output under packages.${system} Version
default Alias of stable
t3code Alias of stable
stable Latest published stable release
nightly Latest published nightly release

Matching apps outputs would also make nix run work for each channel.

I want to add github:pingdotgg/t3code directly to my system's flake inputs, choose a release channel, and get the newest published version when I update that input and rebuild.

Current situation

There is currently no root flake.nix on main. For a declarative desktop installation through a flake, one existing option is Sawrz/t3code-nix, linked in #347.

For example, a user can add this input to their existing system flake:

inputs.t3code-nix.url = "github:Sawrz/t3code-nix";

Then, in a NixOS module that receives inputs through specialArgs:

{ inputs, pkgs, ... }:
{
  environment.systemPackages = [
    inputs.t3code-nix.packages.${pkgs.stdenv.hostPlatform.system}.t3code
  ];
}

Or try the desktop app directly:

nix run github:Sawrz/t3code-nix#t3code

That community package is useful, but it adds a separate packaging repository to the update path. Its README describes checks every six hours followed by an update PR. Users depend on that repository publishing its packaging update before updating their own input picks up a new T3 Code release.

Proposed usage

With official outputs, the same installation could use this repository directly. For example:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    t3code.url = "github:pingdotgg/t3code";
  };

  outputs = { nixpkgs, ... }@inputs: {
    nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = { inherit inputs; };
      modules = [
        ./configuration.nix
        ({ pkgs, inputs, ... }: {
          environment.systemPackages = [
            inputs.t3code.packages.${pkgs.stdenv.hostPlatform.system}.stable
          ];
        })
      ];
    };
  };
}

This assumes an existing configuration.nix. To use nightly, change the package selection from .stable to .nightly. Users who want the default stable release can select .default or .t3code.

From the system configuration directory, updating would be:

nix flake update t3code
sudo nixos-rebuild switch --flake .#my-host

For a quick launch without adding a system package, the proposed interface would be:

nix run --refresh github:pingdotgg/t3code#stable
nix run --refresh github:pingdotgg/t3code#nightly

These official-input examples describe the requested interface; they do not work today.

Keeping releases current

Please update the flake's package versions and hashes as part of publishing stable and nightly releases, so the corresponding package is available as soon as the release is published. This would let NixOS users update directly from upstream without waiting for a downstream packaging update.

The user's flake.lock should still pin the selected revision for reproducibility and rollback. “Latest” means the newest published version after an explicit input update and rebuild; a locked configuration should remain pinned.

Starting with the existing x86_64-linux desktop release would be enough. Packaging the published AppImage with the required NixOS runtime wrapper is a reasonable first implementation. A development shell alone would not satisfy this installation use case.

Related work

This request focuses on a small, documented installation interface with stable and nightly packages kept in sync with upstream releases.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementRequested improvement or new capability.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions