ワンクリックで
nix-packaging
Flake structure, Home Manager module, nixGL wrapper. Load when touching flake.nix, packaging, or NixOS integration.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Flake structure, Home Manager module, nixGL wrapper. Load when touching flake.nix, packaging, or NixOS integration.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
AI layer embeds the Pi SDK. Load when touching AI module, harness integration, providers, MCP decision, or chat UI.
Overall stack and module shape for nyxterm. Load when touching Tauri commands, PTY wiring, frontend↔backend IPC, or xterm rendering.
Conventional Commits, work-unit commits, NO Co-Authored-By. Load before creating any commit.
Project philosophy and decision-making heuristics. Load before scope debates, feature proposals, or refactors.
Engram embedded + MCP fallback. Topic key conventions. Load when touching anything memory-related or starting/closing a session.
Native windows/splits/panes (absorb tmux). Load when touching multiplex module, keybinds, or session persistence.
SOC 職業分類に基づく
| name | nix-packaging |
| description | Flake structure, Home Manager module, nixGL wrapper. Load when touching flake.nix, packaging, or NixOS integration. |
| triggers | ["nix","flake","home-manager","nixos","nixGL","packaging","derivation"] |
Target: nyxterm available as a Nix flake. Linux first. Reproducible. Works on NixOS and on non-NixOS via nixGL for GPU drivers (same pattern Ghostty uses).
{
outputs = { self, nixpkgs, ... }: {
packages.${system}.default = nyxterm-bin;
packages.${system}.nyxterm = nyxterm-bin;
homeManagerModules.default = ./nix/hm-module.nix;
nixosModules.default = ./nix/nixos-module.nix; # optional, for system-level install
devShells.${system}.default = ...; # rust + node + tauri toolchain
formatter.${system} = pkgs.nixfmt;
};
}
Two-stage:
dist/. Vendor pnpm-lock.yaml with pnpm fetch for reproducibility. Use pnpm.fetchDeps (nixpkgs helper).cargo tauri build --no-bundle (or specific bundle target).Pin everything: Rust toolchain via rust-overlay, Node version, pnpm version, Tauri CLI version.
On non-NixOS distros, OpenGL/Vulkan drivers come from the host. Without wrapping, Tauri (which uses WebKitGTK with GPU acceleration) fails to find Mesa.
Wrapper pattern (from Ghostty's overlay):
nyxterm-wrapped = pkgs.runCommand "nyxterm" {} ''
mkdir -p $out/bin
cat > $out/bin/nyxterm <<EOF
#!/usr/bin/env bash
exec ${nixGL.nixGLMesa}/bin/nixGLMesa ${nyxterm}/bin/nyxterm "\$@"
EOF
chmod +x $out/bin/nyxterm
'';
User opts in via flake input. On NixOS, the wrapper is a no-op (drivers found via standard FHS).
nix/hm-module.nix exposes declarative config:
{ config, lib, ... }: {
options.programs.nyxterm = with lib; {
enable = mkEnableOption "nyxterm";
theme = mkOption {
type = types.str;
default = "tokyo-night-night";
};
keybinds = mkOption {
type = types.attrsOf types.str;
default = {};
};
aiProviders = mkOption {
type = types.attrsOf (types.submodule { ... });
default = {};
};
# ... more
};
config = mkIf config.programs.nyxterm.enable {
home.packages = [ pkgs.nyxterm ];
xdg.configFile."nyxterm/config.toml".source = ...; # generated from options
};
}
User writes:
programs.nyxterm = {
enable = true;
theme = "tokyo-night-night";
keybinds.prefix = "Ctrl+Space";
};
For non-Nix users, ship an AppImage with bundled webview runtime where possible. Linux only initially.
Phase 2.5 or later. Tauri makes this technically free, but signing/notarization is a chore. Worth tracking under epic #22.
nix flake check in GitHub Actions on every PR.nix build .#default builds the package.nix run github:FullFran/nyxterm that downloads on every run — too slow. Recommend nix profile install or HM install.unstable channel without pinning a specific rev in flake.lock.