Compare commits

..

6 Commits

7 changed files with 188 additions and 77 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/result

153
flake.lock generated
View File

@@ -65,11 +65,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1774106245,
"narHash": "sha256-gB3XhG900wWKDa/dbqgK0wFGRf8u9PQhqN/SvnTZlIM=",
"lastModified": 1774488690,
"narHash": "sha256-r5yQpoa4AqDOkwKflMMFOviC39XzpqrG1D+1xejn77c=",
"owner": "sadjow",
"repo": "claude-code-nix",
"rev": "0b01bf3b7cb403ef11f502183b6de55e2aaccf88",
"rev": "61d07ce0f48f63f098ed7d4e23018c416ed37b90",
"type": "github"
},
"original": {
@@ -80,11 +80,11 @@
},
"crane": {
"locked": {
"lastModified": 1772080396,
"narHash": "sha256-84W9UNtSk9DNMh43WBkOjpkbfODlmg+RDi854PnNgLE=",
"lastModified": 1773189535,
"narHash": "sha256-E1G/Or6MWeP+L6mpQ0iTFLpzSzlpGrITfU2220Gq47g=",
"owner": "ipetkov",
"repo": "crane",
"rev": "8525580bc0316c39dbfa18bd09a1331e98c9e463",
"rev": "6fa2fb4cf4a89ba49fc9dd5a3eb6cde99d388269",
"type": "github"
},
"original": {
@@ -139,11 +139,11 @@
"doomemacs": {
"flake": false,
"locked": {
"lastModified": 1773987920,
"narHash": "sha256-iO4svl8iB3zo1GArQpiFg+IBi/mENxn+AOCgOlMuO4Q=",
"lastModified": 1774080407,
"narHash": "sha256-FYbalilgDFjIVwK+D6DjDos1IMmMGA20lRf8k6Ykm1Y=",
"owner": "doomemacs",
"repo": "doomemacs",
"rev": "ebf77f71c43cf4ff2cef5fb7f29cb3e189f17647",
"rev": "d8d75443d39d95f3c5256504eb838e0acc62ef44",
"type": "github"
},
"original": {
@@ -162,11 +162,11 @@
]
},
"locked": {
"lastModified": 1774110692,
"narHash": "sha256-0JPH7CPdBCxx5IWNXZuqeiTwK8jS5ClT3xIO5brPNhI=",
"lastModified": 1774496997,
"narHash": "sha256-8QxqyYSKbkWXtYjI8EGemmdDc3JKAOe5pk9As0NrGC8=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "e7876ebeff5bd7dcb1fcec5222f9f3a6f2ec7d89",
"rev": "aedc3813aa6452f5bc466bdbef7daa60ecae2bc5",
"type": "github"
},
"original": {
@@ -183,11 +183,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1774065775,
"narHash": "sha256-anJXbdfZMhXWjHSfB5v6e8+yv1ASTHM4TwikH8tloMI=",
"lastModified": 1774497795,
"narHash": "sha256-tzgxKaCEMcU6XT0fjV/vEqDCM9yij6wBgPPBKiK8Dfk=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "4b3bbb9dc3c80d1b62228c9a2ca0bef74a24a192",
"rev": "11af6f465a038233b8123022dcb7e293f3229f11",
"type": "gitlab"
},
"original": {
@@ -315,11 +315,11 @@
]
},
"locked": {
"lastModified": 1774007980,
"narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=",
"lastModified": 1774379316,
"narHash": "sha256-0nGNxWDUH2Hzlj/R3Zf4FEK6fsFNB/dvewuboSRZqiI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "9670de2921812bc4e0452f6e3efd8c859696c183",
"rev": "1eb0549a1ab3fe3f5acf86668249be15fa0e64f7",
"type": "github"
},
"original": {
@@ -374,11 +374,11 @@
]
},
"locked": {
"lastModified": 1773949806,
"narHash": "sha256-W25eg57cTQSwey9nEf1AhHy895Yiwq74PgyJl2EuY3Q=",
"lastModified": 1774333446,
"narHash": "sha256-jeAUd4mfLle7Zw8F3lDdXvw2cmeP3FgVphHq2XuEKbs=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "425b357e190632600ca2b2daea3bdf28d57e3047",
"rev": "79b45622eff2ae0437d7a712610044bbc7b87fa2",
"type": "github"
},
"original": {
@@ -420,11 +420,11 @@
]
},
"locked": {
"lastModified": 1773344150,
"narHash": "sha256-JSsXufJy2zdg5XS5pRGlkwF1dqN+sWPmCgrvJsnhEzg=",
"lastModified": 1774433292,
"narHash": "sha256-wFeQPKZfSSVv7BAYpRK31UBy1V9/pPJ9/hLaLJIgIp0=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "d21013305ef39e1d9d2d06b161c3785ffad82281",
"rev": "1e7ee8915a87c0675aa4532d70eb1a26e9b94cd8",
"type": "github"
},
"original": {
@@ -445,11 +445,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1774104280,
"narHash": "sha256-kQeR1qqTFleJzMWsOttJMWUxMsykcKrUA2ttPIg2O4k=",
"lastModified": 1774495900,
"narHash": "sha256-3nR7HKulLSib37PWcWrfELuSrikFLiTqAqX2HQ9dV7g=",
"owner": "numtide",
"repo": "llm-agents.nix",
"rev": "4f6fca6b05c5b59b6bbb442a262596ddf86661e8",
"rev": "3e06fd5f99381f8101c8e7b5a1473154dd0095cd",
"type": "github"
},
"original": {
@@ -472,11 +472,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1774113359,
"narHash": "sha256-b7/LsPn5uZoFNjGVQ26q+6QPf8Q9IHHmRx+rGLZ8oyY=",
"lastModified": 1774489385,
"narHash": "sha256-xGyog2cPoxTo8O6vW0CiCCUhkt866qpI3PN2su9XjV0=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "1c4a800bbe0c4cbcf99529fd88286a14450261a8",
"rev": "11fe033ac3d0a97c1e62ffb33f9a6a1852fedab1",
"type": "github"
},
"original": {
@@ -530,11 +530,11 @@
"systems": "systems_5"
},
"locked": {
"lastModified": 1773997252,
"narHash": "sha256-Yb3E25nkGye4YLc3in90mZp+qT5TgXWq3z5KQduAmoQ=",
"lastModified": 1774265710,
"narHash": "sha256-ar8pFUSAxXhV7DpVRjNvgviWuqOqWPAImb4MM7lSh5Y=",
"owner": "marienz",
"repo": "nix-doom-emacs-unstraightened",
"rev": "f0ce2c9e437124550d7e138b49dceef12a3a3001",
"rev": "f6022b9192e034a817373692ede18a9319cf9730",
"type": "github"
},
"original": {
@@ -582,11 +582,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1774018263,
"narHash": "sha256-HHYEwK1A22aSaxv2ibhMMkKvrDGKGlA/qObG4smrSqc=",
"lastModified": 1774465523,
"narHash": "sha256-4v7HPm63Q90nNn4fgkgKsjW1AH2Klw7XzPtHJr562nM=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "2d4b4717b2534fad5c715968c1cece04a172b365",
"rev": "de895be946ad1d8aafa0bb6dfc7e7e0e9e466a29",
"type": "github"
},
"original": {
@@ -598,11 +598,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1773628058,
"narHash": "sha256-hpXH0z3K9xv0fHaje136KY872VT2T5uwxtezlAskQgY=",
"lastModified": 1774273680,
"narHash": "sha256-a++tZ1RQsDb1I0NHrFwdGuRlR5TORvCEUksM459wKUA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f8573b9c935cfaa162dd62cc9e75ae2db86f85df",
"rev": "fdc7b8f7b30fdbedec91b71ed82f36e1637483ed",
"type": "github"
},
"original": {
@@ -614,11 +614,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1773821835,
"narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=",
"lastModified": 1774386573,
"narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0",
"rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
"type": "github"
},
"original": {
@@ -628,22 +628,6 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1770107345,
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"noctalia": {
"inputs": {
"nixpkgs": [
@@ -652,11 +636,11 @@
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1774121595,
"narHash": "sha256-+NlTqaXbEwvL23RSCRiWn5jpRPeQPKWoPs753V3+WL4=",
"lastModified": 1774487699,
"narHash": "sha256-iML1zRJOue/KYoeChmgNBkzh24UMAT0PgIEEgcI/140=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "6b30925fb400c493e21494fb82af92d5b0f6d210",
"rev": "df62bb3212d474276e66c17986f2032362c0991d",
"type": "github"
},
"original": {
@@ -675,11 +659,11 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1774059741,
"narHash": "sha256-ObYsrf7XLJDqWVbJ+GWH5JYV/EUc7SVdhGx5r5wWKno=",
"lastModified": 1774351986,
"narHash": "sha256-N131zILQ06ZNEvtgtjjFZ0N5qEI70rKKhCZsBcZoDH8=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "c9beee5c634ec784af128b8e7c56db14012ab17f",
"rev": "066835ebd5daeabc86df1e62fb5fe82a51407cc0",
"type": "github"
},
"original": {
@@ -688,6 +672,22 @@
"type": "github"
}
},
"opencode-claude-bridge": {
"flake": false,
"locked": {
"lastModified": 1774295363,
"narHash": "sha256-l8IQjPA/TUdxN1O/qcLVIeZ2ev2PfEBOS5pQQIGZIW8=",
"owner": "dotCipher",
"repo": "opencode-claude-bridge",
"rev": "fc3f8b1f11074fb0023d5a8c31223100e6f1b848",
"type": "github"
},
"original": {
"owner": "dotCipher",
"repo": "opencode-claude-bridge",
"type": "github"
}
},
"pre-commit": {
"inputs": {
"flake-compat": "flake-compat_2",
@@ -698,11 +698,11 @@
]
},
"locked": {
"lastModified": 1772024342,
"narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=",
"lastModified": 1772893680,
"narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476",
"rev": "8baab586afc9c9b57645a734c820e4ac0a604af9",
"type": "github"
},
"original": {
@@ -730,6 +730,7 @@
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"noctalia": "noctalia",
"opencode-claude-bridge": "opencode-claude-bridge",
"rust-overlay": "rust-overlay",
"zen-browser": "zen-browser"
}
@@ -741,11 +742,11 @@
]
},
"locked": {
"lastModified": 1774062094,
"narHash": "sha256-ba3c+hS7KzEiwtZRGHagIAYdcmdY3rCSWVCyn64rx7s=",
"lastModified": 1774494762,
"narHash": "sha256-lt22GCJZ6qBQLgNZZl3S/RUjTLXTlEy0Fn0sqMttLxQ=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "c807e83cc2e32adc35f51138b3bdef722c0812ab",
"rev": "ce3b3a61ebf28670dfc8b97eb35ed9e24474a2cf",
"type": "github"
},
"original": {
@@ -867,7 +868,11 @@
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_3"
"nixpkgs": [
"noctalia",
"noctalia-qs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1772660329,
@@ -944,11 +949,11 @@
]
},
"locked": {
"lastModified": 1774103303,
"narHash": "sha256-ZKsQGY0D4DLe3071/RZSQHLqqmFvsA38PudjEvnPbZI=",
"lastModified": 1774478219,
"narHash": "sha256-WyPQoYBde7TSCR45ZgofzBqvVo/MpH3Vkh8YMj9OZC0=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "ae52b215dd66f73cb131106b7588f3a983617cee",
"rev": "2e49c5278af6ef5f1e17e0fd27c2e22b1a7edc38",
"type": "github"
},
"original": {

View File

@@ -92,6 +92,11 @@
claude-code = {
url = "github:sadjow/claude-code-nix";
};
opencode-claude-bridge = {
url = "github:dotCipher/opencode-claude-bridge";
flake = false;
};
};
outputs =

View File

@@ -11,6 +11,25 @@ let
opus-model = "anthropic/claude-opus-4-6";
opencode-claude-bridge = pkgs.buildNpmPackage {
pname = "opencode-claude-bridge";
version = "1.4.2";
src = inputs.opencode-claude-bridge;
npmDepsHash = "sha256-fPk1WuJsRjGp3J4oUeXSz5BV6ePAWOYNeDAYQDUQd2Y=";
buildPhase = ''
runHook preBuild
npx tsc
runHook postBuild
'';
# the plugin entry point is dist/index.js
installPhase = ''
runHook preInstall
mkdir -p $out/lib/opencode-claude-bridge
cp -r dist $out/lib/opencode-claude-bridge/
runHook postInstall
'';
};
ohMyOpencodeConfig = {
"$schema" =
"https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
@@ -60,6 +79,9 @@ in
xdg.configFile."opencode/plugins/oh-my-opencode.js".source =
"${oh-my-opencode-pkg}/lib/oh-my-opencode/dist/index.js";
xdg.configFile."opencode/plugins/opencode-claude-bridge.js".source =
"${opencode-claude-bridge}/lib/opencode-claude-bridge/dist/index.js";
xdg.configFile."opencode/skills/playwright.md".text =
let
browsers = pkgs.playwright-driver.browsers;
@@ -175,7 +197,7 @@ in
autoshare = false;
autoupdate = false;
agent = { };
plugin = [ "opencode-claude-auth" ];
plugin = [ ];
provider = {
openrouter = {
models = {

View File

@@ -26,6 +26,7 @@ let
ublockSettings = import ./ublock.nix { inherit lib; };
darkReaderSettings = import ./dark-reader.nix { inherit lib; };
redirectorSettings = import ./redirector.nix { inherit lib; };
in
{
programs.zen-browser = {
@@ -44,6 +45,7 @@ in
darkreader
fastforwardteam
localcdn
redirector
refined-github
return-youtube-dislikes
search-by-image # reverse image search
@@ -57,6 +59,7 @@ in
settings = {
"uBlock0@raymondhill.net" = ublockSettings;
"addon@darkreader.org" = darkReaderSettings;
"redirector@einaregilsson.com" = redirectorSettings;
};
};

View File

@@ -0,0 +1,75 @@
# Redirector extension settings
# Addon ID: redirector@einaregilsson.com
#
# To add a new redirect, just add another mkRedirect call to the list:
# (mkRedirect { from = "youtube.com"; to = "invidious.example.com"; description = "YouTube to Invidious"; })
{ lib }:
let
# helper to create a redirect rule from a simple domain mapping.
# handles www. subdomains automatically. for other subdomains
# (like old.reddit.com), create a separate rule with the full domain.
mkRedirect =
{
from,
to,
description,
}:
let
escapedFrom = builtins.replaceStrings [ "." ] [ "\\." ] from;
in
{
inherit description;
exampleUrl = "https://${from}/example";
exampleResult = "https://${to}/example";
error = null;
includePattern = "^https?://(www\\.)?${escapedFrom}(.*)$";
excludePattern = "";
patternDesc = "";
redirectUrl = "https://${to}$2";
patternType = "R";
processMatches = "noProcessing";
disabled = false;
grouped = false;
appliesTo = [ "main_frame" ];
};
in
{
force = true;
settings = {
redirects = [
(mkRedirect {
from = "x.com";
to = "xcancel.com";
description = "X to xcancel";
})
(mkRedirect {
from = "twitter.com";
to = "xcancel.com";
description = "Twitter to xcancel";
})
(mkRedirect {
from = "reddit.com";
to = "safereddit.com";
description = "Reddit to Redlib";
})
(mkRedirect {
from = "old.reddit.com";
to = "safereddit.com";
description = "Old Reddit to Redlib";
})
(mkRedirect {
from = "new.reddit.com";
to = "safereddit.com";
description = "New Reddit to Redlib";
})
(mkRedirect {
from = "np.reddit.com";
to = "safereddit.com";
description = "NP Reddit to Redlib";
})
];
disabled = false;
logging = false;
enableNotifications = false;
};
}

View File

@@ -188,8 +188,8 @@
};
};
# EST
time.timeZone = "America/New_York";
# PST
time.timeZone = "America/Los_Angeles";
security = {
# lets use doas and not sudo!