feat: update opencode to v1.1.60 and re-enable opencode-desktop
Some checks failed
Update Nix Packages with nix-update / nix-update (push) Failing after 1s
Some checks failed
Update Nix Packages with nix-update / nix-update (push) Failing after 1s
- Update opencode flake input to v1.1.60 - Add nixpkgs-master input for opencode (needs newer bun) - Re-enable opencode-desktop with workaround for upstream issue #11755 - Add specta/tauri outputHashes for git dependencies - Add .todos/ to gitignore - Update AGENTS.md with td task management instructions
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -31,3 +31,4 @@ test-result/
|
|||||||
# Local configuration (if you want to keep local overrides)
|
# Local configuration (if you want to keep local overrides)
|
||||||
local.nix
|
local.nix
|
||||||
flake.lock.bak
|
flake.lock.bak
|
||||||
|
.todos/
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
# m3ta-nixpkgs Knowledge Base
|
# m3ta-nixpkgs Knowledge Base
|
||||||
|
|
||||||
|
## MANDATORY: Use td for Task Management
|
||||||
|
|
||||||
|
You must run td usage --new-session at conversation start (or after /clear) to see current work.
|
||||||
|
Use td usage -q for subsequent reads.
|
||||||
|
|
||||||
**Generated:** 2026-01-13
|
**Generated:** 2026-01-13
|
||||||
**Commit:** 366af12
|
**Commit:** 366af12
|
||||||
**Branch:** master
|
**Branch:** master
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ nix run git+https://code.m3ta.dev/m3tam3re/nixpkgs#zellij-ps
|
|||||||
| `msty-studio` | Msty Studio application |
|
| `msty-studio` | Msty Studio application |
|
||||||
| `n8n` | Free and source-available fair-code licensed workflow automation tool |
|
| `n8n` | Free and source-available fair-code licensed workflow automation tool |
|
||||||
| `opencode` | AI coding agent built for the terminal |
|
| `opencode` | AI coding agent built for the terminal |
|
||||||
|
| `opencode-desktop` | OpenCode Desktop App with Wayland support (includes workaround for upstream issue #11755) |
|
||||||
| `pomodoro-timer` | Pomodoro timer utility |
|
| `pomodoro-timer` | Pomodoro timer utility |
|
||||||
| `rofi-project-opener` | Rofi-based project launcher |
|
| `rofi-project-opener` | Rofi-based project launcher |
|
||||||
| `stt-ptt` | Push to Talk Speech to Text |
|
| `stt-ptt` | Push to Talk Speech to Text |
|
||||||
@@ -76,8 +77,6 @@ Go to **Actions → Update Nix Packages with nix-update → Run workflow** in Gi
|
|||||||
2. Token scopes needed: `user`, `repo`, `write:issue`
|
2. Token scopes needed: `user`, `repo`, `write:issue`
|
||||||
3. Add token as secret: Settings → Secrets → New → `NIX_UPDATE_TOKEN`
|
3. Add token as secret: Settings → Secrets → New → `NIX_UPDATE_TOKEN`
|
||||||
|
|
||||||
**Note:** The `opencode-desktop` package is currently disabled due to an upstream issue with missing specta dependency hashes. See [issue #11755](https://github.com/anomalyco/opencode/issues/11755) for details. This is a temporary workaround until the upstream issue is resolved.
|
|
||||||
|
|
||||||
For detailed usage, module documentation, package references, and contribution guidelines, see the [full documentation](./docs).
|
For detailed usage, module documentation, package references, and contribution guidelines, see the [full documentation](./docs).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|||||||
23
flake.lock
generated
23
flake.lock
generated
@@ -16,37 +16,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770073757,
|
"lastModified": 1770917518,
|
||||||
"narHash": "sha256-Vy+G+F+3E/Tl+GMNgiHl9Pah2DgShmIUBJXmbiQPHbI=",
|
"narHash": "sha256-XSwv/tVrNo/L8SPH8Lx9xZH1PrZd/3Z3J/0SH7Xertg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "47472570b1e607482890801aeaf29bfb749884f6",
|
"rev": "3f4a3c08f2f318ee29fc8a2689f390071a94aaf0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "master",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"opencode": {
|
"opencode": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": [
|
||||||
|
"nixpkgs-master"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770817534,
|
"lastModified": 1770875904,
|
||||||
"narHash": "sha256-AcLT70Gjt78nDd13ACUDavE+QI+ouEBwyZq8hIDDAf8=",
|
"narHash": "sha256-8ZEVlGe1saA/2KtDTKgkwWfpLCbxfwFip+m+3FlQQK0=",
|
||||||
"owner": "anomalyco",
|
"owner": "anomalyco",
|
||||||
"repo": "opencode",
|
"repo": "opencode",
|
||||||
"rev": "edcfd562af6ea5fdc1ade9f46259a676d7663801",
|
"rev": "03de51bd3cf9e05bd92c9f51763b74a3cdfbe61a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "anomalyco",
|
"owner": "anomalyco",
|
||||||
"ref": "v1.1.57",
|
"ref": "v1.1.60",
|
||||||
"repo": "opencode",
|
"repo": "opencode",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -54,6 +56,7 @@
|
|||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"opencode": "opencode"
|
"opencode": "opencode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
62
flake.nix
62
flake.nix
@@ -1,26 +1,23 @@
|
|||||||
{
|
{
|
||||||
description = "m3ta's personal Nix repository - Custom packages, overlays, and modules";
|
description =
|
||||||
|
"m3ta's personal Nix repository - Custom packages, overlays, and modules";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
opencode.url = "github:anomalyco/opencode/v1.1.59";
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
|
|
||||||
# Optional: Add stable channel if needed
|
# opencode needs newer bun from master
|
||||||
# nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05";
|
opencode = {
|
||||||
|
url = "github:anomalyco/opencode/v1.1.60";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-master";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = { self, nixpkgs, ... }@inputs:
|
||||||
self,
|
let
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
# Supported systems
|
# Supported systems
|
||||||
systems = [
|
systems =
|
||||||
"x86_64-linux"
|
[ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||||
"aarch64-linux"
|
|
||||||
"x86_64-darwin"
|
|
||||||
"aarch64-darwin"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Helper function to generate an attrset for each of the systems
|
# Helper function to generate an attrset for each of the systems
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
@@ -33,12 +30,9 @@
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
# Custom packages - accessible via 'nix build .#package-name'
|
# Custom packages - accessible via 'nix build .#package-name'
|
||||||
packages = forAllSystems (
|
packages = forAllSystems (system:
|
||||||
system: let
|
let pkgs = pkgsFor system;
|
||||||
pkgs = pkgsFor system;
|
in import ./pkgs { inherit pkgs inputs; });
|
||||||
in
|
|
||||||
import ./pkgs {inherit pkgs inputs;}
|
|
||||||
);
|
|
||||||
|
|
||||||
# Overlays - can be imported in your system configuration
|
# Overlays - can be imported in your system configuration
|
||||||
overlays = {
|
overlays = {
|
||||||
@@ -56,8 +50,7 @@
|
|||||||
inputs = inputs;
|
inputs = inputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
modifications = final: prev:
|
modifications = final: prev: import ./overlays/mods { inherit prev; };
|
||||||
import ./overlays/mods {inherit prev;};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# NixOS modules - for system-level configuration
|
# NixOS modules - for system-level configuration
|
||||||
@@ -76,28 +69,19 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Library functions - helper utilities for your configuration
|
# Library functions - helper utilities for your configuration
|
||||||
lib = forAllSystems (
|
lib = forAllSystems (system:
|
||||||
system: let
|
let pkgs = pkgsFor system;
|
||||||
pkgs = pkgsFor system;
|
in import ./lib { lib = pkgs.lib; });
|
||||||
in
|
|
||||||
import ./lib {lib = pkgs.lib;}
|
|
||||||
);
|
|
||||||
|
|
||||||
# Development shells for various programming environments
|
# Development shells for various programming environments
|
||||||
# Usage: nix develop .#<shell-name>
|
# Usage: nix develop .#<shell-name>
|
||||||
# Available shells: default, python, devops
|
# Available shells: default, python, devops
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (system:
|
||||||
system: let
|
let pkgs = pkgsFor system;
|
||||||
pkgs = pkgsFor system;
|
in import ./shells { inherit pkgs; });
|
||||||
in
|
|
||||||
import ./shells {inherit pkgs;}
|
|
||||||
);
|
|
||||||
|
|
||||||
# Formatter for 'nix fmt'
|
# Formatter for 'nix fmt'
|
||||||
formatter = forAllSystems (
|
formatter = forAllSystems (system: (pkgsFor system).alejandra);
|
||||||
system:
|
|
||||||
(pkgsFor system).alejandra
|
|
||||||
);
|
|
||||||
|
|
||||||
# Templates for creating new packages/modules
|
# Templates for creating new packages/modules
|
||||||
templates = {
|
templates = {
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
{
|
{ pkgs, inputs ? null, ... }: {
|
||||||
pkgs,
|
|
||||||
inputs ? null,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Custom packages registry
|
# Custom packages registry
|
||||||
# Each package is defined in its own directory under pkgs/
|
# Each package is defined in its own directory under pkgs/
|
||||||
beads = pkgs.callPackage ./beads { };
|
beads = pkgs.callPackage ./beads { };
|
||||||
@@ -22,5 +18,5 @@
|
|||||||
|
|
||||||
# Imported from flake inputs
|
# Imported from flake inputs
|
||||||
opencode = inputs.opencode.packages.${pkgs.system}.opencode;
|
opencode = inputs.opencode.packages.${pkgs.system}.opencode;
|
||||||
# opencode-desktop = pkgs.callPackage ./opencode-desktop { inherit inputs; };
|
opencode-desktop = pkgs.callPackage ./opencode-desktop { inherit inputs; };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,91 @@
|
|||||||
{ lib, stdenv, symlinkJoin, makeWrapper, inputs ? null, }:
|
{
|
||||||
let
|
lib,
|
||||||
opencode-desktop =
|
stdenv,
|
||||||
inputs.opencode.packages.${stdenv.hostPlatform.system}.desktop;
|
symlinkJoin,
|
||||||
in symlinkJoin {
|
makeWrapper,
|
||||||
|
rustPlatform,
|
||||||
|
pkg-config,
|
||||||
|
cargo-tauri,
|
||||||
|
bun,
|
||||||
|
nodejs,
|
||||||
|
cargo,
|
||||||
|
rustc,
|
||||||
|
jq,
|
||||||
|
wrapGAppsHook4,
|
||||||
|
dbus,
|
||||||
|
glib,
|
||||||
|
gtk4,
|
||||||
|
libsoup_3,
|
||||||
|
librsvg,
|
||||||
|
libappindicator,
|
||||||
|
glib-networking,
|
||||||
|
openssl,
|
||||||
|
webkitgtk_4_1,
|
||||||
|
gst_all_1,
|
||||||
|
inputs ? null,
|
||||||
|
}: let
|
||||||
|
# Get upstream opencode package for shared attributes
|
||||||
|
opencode = inputs.opencode.packages.${stdenv.hostPlatform.system}.default;
|
||||||
|
|
||||||
|
# Workaround for https://github.com/anomalyco/opencode/issues/11755
|
||||||
|
# Upstream is missing outputHashes for git dependencies
|
||||||
|
opencode-desktop = rustPlatform.buildRustPackage (finalAttrs: {
|
||||||
|
pname = "opencode-desktop";
|
||||||
|
inherit (opencode) version src node_modules patches;
|
||||||
|
|
||||||
|
cargoRoot = "packages/desktop/src-tauri";
|
||||||
|
cargoLock = {
|
||||||
|
lockFile = finalAttrs.src + "/packages/desktop/src-tauri/Cargo.lock";
|
||||||
|
outputHashes = {
|
||||||
|
"specta-2.0.0-rc.22" = "sha256-YsyOAnXELLKzhNlJ35dHA6KGbs0wTAX/nlQoW8wWyJQ=";
|
||||||
|
"tauri-2.9.5" = "sha256-dv5E/+A49ZBvnUQUkCGGJ21iHrVvrhHKNcpUctivJ8M=";
|
||||||
|
"tauri-specta-2.0.0-rc.21" = "sha256-n2VJ+B1nVrh6zQoZyfMoctqP+Csh7eVHRXwUQuiQjaQ=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||||
|
|
||||||
|
nativeBuildInputs =
|
||||||
|
[pkg-config cargo-tauri.hook bun nodejs cargo rustc jq makeWrapper]
|
||||||
|
++ lib.optionals stdenv.hostPlatform.isLinux [wrapGAppsHook4];
|
||||||
|
|
||||||
|
buildInputs = lib.optionals stdenv.isLinux [
|
||||||
|
dbus
|
||||||
|
glib
|
||||||
|
gtk4
|
||||||
|
libsoup_3
|
||||||
|
librsvg
|
||||||
|
libappindicator
|
||||||
|
glib-networking
|
||||||
|
openssl
|
||||||
|
webkitgtk_4_1
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-good
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
cp -a ${finalAttrs.node_modules}/{node_modules,packages} .
|
||||||
|
chmod -R u+w node_modules packages
|
||||||
|
patchShebangs node_modules
|
||||||
|
patchShebangs packages/desktop/node_modules
|
||||||
|
|
||||||
|
mkdir -p packages/desktop/src-tauri/sidecars
|
||||||
|
cp ${opencode}/bin/opencode packages/desktop/src-tauri/sidecars/opencode-cli-${stdenv.hostPlatform.rust.rustcTarget}
|
||||||
|
'';
|
||||||
|
|
||||||
|
tauriBuildFlags = ["--config" "tauri.prod.conf.json" "--no-sign"];
|
||||||
|
|
||||||
|
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
|
mv $out/bin/OpenCode $out/bin/opencode-desktop
|
||||||
|
sed -i 's|^Exec=OpenCode$|Exec=opencode-desktop|' $out/share/applications/OpenCode.desktop
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
# Wrapper for Wayland support
|
||||||
|
in
|
||||||
|
symlinkJoin {
|
||||||
name = "opencode-desktop";
|
name = "opencode-desktop";
|
||||||
paths = [opencode-desktop];
|
paths = [opencode-desktop];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user