before we get too crazy
This commit is contained in:
parent
fe668b5b9e
commit
453d780695
21 changed files with 612 additions and 291 deletions
|
|
@ -54,21 +54,11 @@ scope "user.desktops.niri.binds"
|
|||
"toggle-tag"
|
||||
"99"
|
||||
];
|
||||
"Mod+Shift+Minus".spawn = [
|
||||
"tagctl"
|
||||
"toggle"
|
||||
"99"
|
||||
];
|
||||
"Mod+Equal".spawn = [
|
||||
"tagctl"
|
||||
"toggle-tag"
|
||||
"101"
|
||||
];
|
||||
"Mod+Shift+Equal".spawn = [
|
||||
"tagctl"
|
||||
"toggle"
|
||||
"101"
|
||||
];
|
||||
"Mod+D".spawn = [
|
||||
"qs"
|
||||
"ipc"
|
||||
|
|
@ -86,7 +76,6 @@ scope "user.desktops.niri.binds"
|
|||
"logout"
|
||||
"toggle"
|
||||
];
|
||||
# "Mod+Equal".spawn = (getAppName "passwordManager"); # niri-tag needs proper scratchpads smh
|
||||
"Mod+Shift+Q".action = "close-window";
|
||||
"Mod+Shift+S".action = "screenshot";
|
||||
"Mod+R".action = "switch-preset-column-width";
|
||||
|
|
|
|||
|
|
@ -2,93 +2,97 @@
|
|||
lib,
|
||||
pkgs,
|
||||
scope,
|
||||
inputs,
|
||||
getFlakePkg,
|
||||
...
|
||||
}:
|
||||
let
|
||||
officialAddon = name: {
|
||||
install_url = lib.strings.concatStrings [
|
||||
"https://addons.mozilla.org/firefox/downloads/latest/"
|
||||
name
|
||||
"/latest.xpi"
|
||||
];
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
lock-false = {
|
||||
Value = false;
|
||||
Status = "locked";
|
||||
};
|
||||
lock-true = {
|
||||
Value = true;
|
||||
Status = "locked";
|
||||
};
|
||||
in
|
||||
scope "programs.firefox" {
|
||||
enable = true;
|
||||
scope "apps.browser" <| getFlakePkg inputs.helium
|
||||
# let
|
||||
# officialAddon = name: {
|
||||
# install_url = lib.strings.concatStrings [
|
||||
# "https://addons.mozilla.org/firefox/downloads/latest/"
|
||||
# name
|
||||
# "/latest.xpi"
|
||||
# ];
|
||||
# installation_mode = "force_installed";
|
||||
# };
|
||||
# lock-false = {
|
||||
# Value = false;
|
||||
# Status = "locked";
|
||||
# };
|
||||
# lock-true = {
|
||||
# Value = true;
|
||||
# Status = "locked";
|
||||
# };
|
||||
# in
|
||||
# scope "programs.firefox" {
|
||||
# enable = true;
|
||||
|
||||
policies = {
|
||||
DisableTelemetry = true;
|
||||
DisableFirefoxStudies = true;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
DisablePocket = true;
|
||||
DisableFirefoxAccounts = true;
|
||||
DisableAccounts = true;
|
||||
DisableFirefoxScreenshots = true;
|
||||
DisableAppUpdate = true;
|
||||
DisablePrivateBrowsing = true;
|
||||
DontCheckDefaultBrowser = true;
|
||||
# policies = {
|
||||
# DisableTelemetry = true;
|
||||
# DisableFirefoxStudies = true;
|
||||
# EnableTrackingProtection = {
|
||||
# Value = true;
|
||||
# Locked = true;
|
||||
# Cryptomining = true;
|
||||
# Fingerprinting = true;
|
||||
# };
|
||||
# DisablePocket = true;
|
||||
# DisableFirefoxAccounts = true;
|
||||
# DisableAccounts = true;
|
||||
# DisableFirefoxScreenshots = true;
|
||||
# DisableAppUpdate = true;
|
||||
# DisablePrivateBrowsing = true;
|
||||
# DontCheckDefaultBrowser = true;
|
||||
|
||||
OverrideFirstRunPage = "";
|
||||
OverridePostUpdatePage = "";
|
||||
DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab"
|
||||
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||
SearchBar = "unified"; # alternative: "separate"
|
||||
# OverrideFirstRunPage = "";
|
||||
# OverridePostUpdatePage = "";
|
||||
# DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab"
|
||||
# DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||
# SearchBar = "unified"; # alternative: "separate"
|
||||
|
||||
ExtensionSettings = {
|
||||
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
|
||||
"uBlock0@raymondhill.net" = officialAddon "ublock-origin";
|
||||
"addon@darkreader.org" = officialAddon "darkreader";
|
||||
"vimium-c@gdh1995.cn" = officialAddon "vimium-c";
|
||||
"{b86e4813-687a-43e6-ab65-0bde4ab75758}" = officialAddon "localcdn-fork-of-decentraleyes";
|
||||
"jid1-5Fs7iTLscUaZBgwr@jetpack" = officialAddon "happy-bonobo-disable-webrtc";
|
||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = officialAddon "bitwarden-password-mananger";
|
||||
};
|
||||
# ExtensionSettings = {
|
||||
# "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
|
||||
# "uBlock0@raymondhill.net" = officialAddon "ublock-origin";
|
||||
# "addon@darkreader.org" = officialAddon "darkreader";
|
||||
# "vimium-c@gdh1995.cn" = officialAddon "vimium-c";
|
||||
# "{b86e4813-687a-43e6-ab65-0bde4ab75758}" = officialAddon "localcdn-fork-of-decentraleyes";
|
||||
# "jid1-5Fs7iTLscUaZBgwr@jetpack" = officialAddon "happy-bonobo-disable-webrtc";
|
||||
# "{446900e4-71c2-419f-a6a7-df9c091e268b}" = officialAddon "bitwarden-password-mananger";
|
||||
# };
|
||||
|
||||
Preferences = {
|
||||
"extensions.pocket.enabled" = lock-false;
|
||||
"extensions.screenshots.disabled" = lock-true;
|
||||
"browser.topsites.contile.enabled" = lock-false;
|
||||
"browser.formfill.enable" = lock-false;
|
||||
"browser.search.suggest.enabled" = lock-false;
|
||||
"browser.search.suggest.enabled.private" = lock-false;
|
||||
"browser.urlbar.suggest.searches" = lock-false;
|
||||
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
|
||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
|
||||
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
|
||||
};
|
||||
};
|
||||
# Preferences = {
|
||||
# "extensions.pocket.enabled" = lock-false;
|
||||
# "extensions.screenshots.disabled" = lock-true;
|
||||
# "browser.topsites.contile.enabled" = lock-false;
|
||||
# "browser.formfill.enable" = lock-false;
|
||||
# "browser.search.suggest.enabled" = lock-false;
|
||||
# "browser.search.suggest.enabled.private" = lock-false;
|
||||
# "browser.urlbar.suggest.searches" = lock-false;
|
||||
# "browser.urlbar.showSearchSuggestionsFirst" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.showSponsored" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
|
||||
# "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
|
||||
# };
|
||||
# };
|
||||
|
||||
# profiles.default = {
|
||||
# id = 0;
|
||||
# name = "Default";
|
||||
# settings = {
|
||||
# "browser.startup.homepage" = "about:blank";
|
||||
# "browser.shell.didSkipDefaultBrowserCheckOnFirstRun" = true;
|
||||
# "browser.policies.applied" = true;
|
||||
# "widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||
# "widget.use-xdg-desktop-portal.mime-handler" = 1;
|
||||
# };
|
||||
# };
|
||||
}
|
||||
// (scope "apps.browser" <| pkgs.firefox)
|
||||
# # profiles.default = {
|
||||
# # id = 0;
|
||||
# # name = "Default";
|
||||
# # settings = {
|
||||
# # "browser.startup.homepage" = "about:blank";
|
||||
# # "browser.shell.didSkipDefaultBrowserCheckOnFirstRun" = true;
|
||||
# # "browser.policies.applied" = true;
|
||||
# # "widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||
# # "widget.use-xdg-desktop-portal.mime-handler" = 1;
|
||||
# # };
|
||||
# # };
|
||||
# }
|
||||
# // (scope "apps.browser" <| pkgs.firefox)
|
||||
# TODO switch to helium
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
user.packages = [ pkgs.element-desktop ];
|
||||
user.packages = [
|
||||
];
|
||||
# hm.programs.firefox.webapps = {
|
||||
# "Microsoft-Teams" = {
|
||||
# url = "https://teams.microsoft.com";
|
||||
|
|
|
|||
|
|
@ -53,3 +53,4 @@ window-rule {
|
|||
clip-to-geometry true
|
||||
}
|
||||
xwayland-satellite { path "%SATELLITE%"; }
|
||||
spawn-at-startup "systemctl" "--user" "start" "startup-sound.service"
|
||||
|
|
|
|||
|
|
@ -4,13 +4,12 @@ import "launcher" as Launcher
|
|||
import "logout" as Logout
|
||||
// singletons
|
||||
import "title"
|
||||
import "tags"
|
||||
import "tags"
|
||||
import "rice"
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
|
||||
ShellRoot {
|
||||
|
||||
|
|
@ -18,9 +17,10 @@ ShellRoot {
|
|||
Variants {
|
||||
model: Quickshell.screens
|
||||
Scope {
|
||||
id: screenScope
|
||||
property var modelData
|
||||
PanelWindow {
|
||||
screen: modelData
|
||||
screen: screenScope.modelData
|
||||
id: bg
|
||||
anchors {
|
||||
top: true
|
||||
|
|
@ -163,7 +163,6 @@ ShellRoot {
|
|||
|
||||
implicitHeight: 22
|
||||
implicitWidth: (Tags.keys.length !== undefined) ? Tags.keys.length * 13 + 24 : 37;
|
||||
// implicitWidth:.width + 24
|
||||
color: "transparent"
|
||||
|
||||
Rectangle {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ Singleton {
|
|||
id: data
|
||||
property var tags: ({})
|
||||
property var keys: []
|
||||
Timer {
|
||||
|
||||
Timer {
|
||||
id: reconnectTimer
|
||||
running: false
|
||||
repeat: true
|
||||
|
|
@ -43,37 +44,41 @@ Singleton {
|
|||
return d;
|
||||
};
|
||||
|
||||
let t = {};
|
||||
for (const k of Object.keys(data.tags)) {
|
||||
t[k] = Object.assign({}, data.tags[k]);
|
||||
}
|
||||
|
||||
if (event.TagEmpty) {
|
||||
data.tags = ensure(data.tags, event.TagEmpty);
|
||||
data.tags[event.TagEmpty].occupied = false;
|
||||
t = ensure(t, event.TagEmpty);
|
||||
t[event.TagEmpty].occupied = false;
|
||||
} else if (event.TagOccupied) {
|
||||
data.tags = ensure(data.tags, event.TagOccupied);
|
||||
data.tags[event.TagOccupied].occupied = true;
|
||||
t = ensure(t, event.TagOccupied);
|
||||
t[event.TagOccupied].occupied = true;
|
||||
} else if (event.TagUrgent) {
|
||||
data.tags = ensure(data.tags, event.TagUrgent);
|
||||
data.tags[event.TagUrgent].urgent = true;
|
||||
t = ensure(t, event.TagUrgent);
|
||||
t[event.TagUrgent].urgent = true;
|
||||
} else if (event.TagEnabled) {
|
||||
data.tags = ensure(data.tags, event.TagEnabled);
|
||||
data.tags[event.TagEnabled].enabled = true;
|
||||
t = ensure(t, event.TagEnabled);
|
||||
t[event.TagEnabled].enabled = true;
|
||||
} else if (event.TagDisabled) {
|
||||
data.tags = ensure(data.tags, event.TagDisabled);
|
||||
data.tags[event.TagDisabled].enabled = false;
|
||||
t = ensure(t, event.TagDisabled);
|
||||
t[event.TagDisabled].enabled = false;
|
||||
} else if (event.TagExclusive) {
|
||||
data.tags = ensure(data.tags, event.TagExclusive);
|
||||
for (const [k] of Object.keys(data.tags)) {
|
||||
data.tags[k].enabled = false;
|
||||
t = ensure(t, event.TagExclusive);
|
||||
for (const k of Object.keys(t)) {
|
||||
t[k].enabled = false;
|
||||
}
|
||||
data.tags[event.TagExclusive].enabled = true;
|
||||
t[event.TagExclusive].enabled = true;
|
||||
} else if (event.TagFullState) {
|
||||
data["tags"] = event.TagFullState;
|
||||
for (const [k, v] of Object.entries(data.tags)) {
|
||||
data.tags[k].id = k;
|
||||
t = event.TagFullState;
|
||||
for (const k of Object.keys(t)) {
|
||||
t[k].id = k;
|
||||
}
|
||||
}
|
||||
|
||||
data.keys = Object.keys(data.tags);
|
||||
data.tagsChanged();
|
||||
data.keysChanged();
|
||||
data.tags = t;
|
||||
data.keys = Object.keys(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
inputs,
|
||||
mainUser,
|
||||
getPkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
|
@ -20,8 +21,10 @@ in
|
|||
services.stasis.enable = true;
|
||||
|
||||
quick.services = {
|
||||
swaync = "${getExe pkgs.swaynotificationcenter}";
|
||||
quickshell = "${getExe pkgs.quickshell}";
|
||||
noti = "${getExe pkgs.swaynotificationcenter}";
|
||||
shell = "${getExe pkgs.quickshell}";
|
||||
pwManager = "${getExe config.apps.passwordManager}";
|
||||
music = "${getExe config.apps.streamPlayer}";
|
||||
};
|
||||
|
||||
environment.files."/home/${mainUser}/.config/quickshell" = {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ let
|
|||
inherit (config) rice;
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
inputs.niri.nixosModules.niri
|
||||
inputs.niri-tag.nixosModules.niri-tag
|
||||
|
|
@ -41,17 +42,19 @@ in
|
|||
(toString borders.gaps)
|
||||
(toString borders.thickness)
|
||||
palette.shortHex.bright.yellow
|
||||
palette.shortHex.normal.yellow
|
||||
palette.shortHex.normal.white
|
||||
(lib.getExe xwayland-satellite)
|
||||
]
|
||||
template;
|
||||
in
|
||||
baseConfig;
|
||||
};
|
||||
|
||||
user.packages = [
|
||||
niri
|
||||
xwayland-satellite
|
||||
];
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
restart = false;
|
||||
|
|
@ -67,11 +70,20 @@ in
|
|||
initial_session = session;
|
||||
};
|
||||
};
|
||||
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = niri;
|
||||
};
|
||||
services.niri-tag.enable = true;
|
||||
|
||||
services.niri-tag = {
|
||||
enable = true;
|
||||
# scratchpads = {
|
||||
# "${config.apps.streamPlayer}" = 99;
|
||||
# "${config.apps.passwordManager}" = 101;
|
||||
# };
|
||||
};
|
||||
|
||||
services.niri-s76-bridge.enable = true;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,11 +9,10 @@
|
|||
|
||||
bunker.kernel = {
|
||||
enable = true;
|
||||
hardened = false;
|
||||
cpuArch = "MZEN3";
|
||||
version = "6.18";
|
||||
hardened = false;
|
||||
lto = "none";
|
||||
trimmed = true;
|
||||
};
|
||||
|
||||
services.scx = {
|
||||
|
|
@ -21,17 +20,4 @@
|
|||
scheduler = "scx_bpfland";
|
||||
};
|
||||
|
||||
# nixpkgs.overlays = [
|
||||
# (final: prev: {
|
||||
# nvidia-open = prev.nvidia-open.override {
|
||||
# patches = [
|
||||
# (pkgs.fetchpatch {
|
||||
# url = "https://github.com/CachyOS/CachyOS-PKGBUILDS/raw/refs/heads/master/nvidia/nvidia-utils/kernel-6.19.patch";
|
||||
# hash = "";
|
||||
# })
|
||||
# ];
|
||||
# };
|
||||
# })
|
||||
# ];
|
||||
|
||||
}
|
||||
|
|
|
|||
141
graphical/llm.nix
Normal file
141
graphical/llm.nix
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
let
|
||||
claude-code =
|
||||
let
|
||||
version = "2.1.52";
|
||||
runtimeDeps = lib.makeBinPath (
|
||||
[
|
||||
pkgs.procps
|
||||
pkgs.ripgrep
|
||||
]
|
||||
++ lib.optionals pkgs.stdenv.hostPlatform.isLinux [
|
||||
pkgs.bubblewrap
|
||||
pkgs.socat
|
||||
]
|
||||
);
|
||||
|
||||
patchScript = pkgs.writeScript "patch-claude-src" ''
|
||||
#!${pkgs.python3}/bin/python3
|
||||
import re, sys
|
||||
W = rb"[\w$]+"
|
||||
data = open(sys.argv[1], "rb").read()
|
||||
|
||||
pat = (rb"let (" + W + rb")=(" + W + rb")\((" + W + rb'),"CLAUDE\.md"\);'
|
||||
rb"(" + W + rb")\.push\(\.\.\.(" + W + rb')\(\1,"Project",([^)]+)\)\)')
|
||||
def agents(m):
|
||||
v, pj, d, a, lf, rest = [m.group(i) for i in range(1, 7)]
|
||||
return (b'for(let _f of["CLAUDE.md","AGENTS.md"]){let ' + v + b"=" + pj
|
||||
+ b"(" + d + b",_f);" + a + b".push(..." + lf + b"(" + v
|
||||
+ b',"Project",' + rest + b"))}")
|
||||
data, n = re.subn(pat, agents, data)
|
||||
sys.stderr.write(f"AGENTS.md: {n} site(s)\n")
|
||||
|
||||
data = data.replace(
|
||||
b'case"macos":return"/Library/Application Support/ClaudeCode"',
|
||||
b'case"macos":return"/etc/claude-code"',
|
||||
)
|
||||
|
||||
# Enable hard-disabled slash commands: /btw, /files, /tag
|
||||
for anchor, label in [
|
||||
(b'name:"btw",description:"Ask a quick side question', b"/btw"),
|
||||
(b'name:"files",description:"List all files currently in context"', b"/files"),
|
||||
(b'name:"tag",userFacingName', b"/tag"),
|
||||
]:
|
||||
pos = data.find(anchor)
|
||||
if pos < 0:
|
||||
sys.stderr.write(f"{label.decode()}: NOT FOUND\n"); continue
|
||||
window = data[pos:pos+500]
|
||||
patched = window.replace(b"isEnabled:()=>!1", b"isEnabled:()=>!0", 1)
|
||||
data = data[:pos] + patched + data[pos+500:]
|
||||
sys.stderr.write(f"{label.decode()}: enabled\n")
|
||||
|
||||
# Bypass e2() for thinkback (e2 returns false when DISABLE_TELEMETRY is set)
|
||||
data = data.replace(
|
||||
b'e2("tengu_thinkback")',
|
||||
b'!0||"tengu_thinkback"',
|
||||
)
|
||||
sys.stderr.write("thinkback: force-enabled\n")
|
||||
|
||||
# Enable custom keybindings (qA default is false, flip to true)
|
||||
data = data.replace(
|
||||
b'qA("tengu_keybinding_customization_release",!1)',
|
||||
b'qA("tengu_keybinding_customization_release",!0)',
|
||||
)
|
||||
sys.stderr.write("keybindings: force-enabled\n")
|
||||
|
||||
# Force-enable remote control / bridge feature gate
|
||||
data = data.replace(
|
||||
b'function ek(){return qA("tengu_ccr_bridge",!1)}',
|
||||
b'function ek(){return!0} ',
|
||||
)
|
||||
sys.stderr.write("remote-control: force-enabled\n")
|
||||
|
||||
# Fix Deno-compile bridge spawn: Deno compiled binaries intercept --flags
|
||||
# as V8 flags. Rewrite spawn to go through env(1) which breaks the Deno
|
||||
# runtime's flag parsing.
|
||||
data = data.replace(
|
||||
b'let O=iHz(A.execPath,$,',
|
||||
b'let O=iHz("env",["--",A.execPath,...$],',
|
||||
)
|
||||
sys.stderr.write("bridge-spawn: patched via env(1)\n")
|
||||
|
||||
# Kill claude-developer-platform bundled skill (~400 tokens/turn dead weight)
|
||||
data = data.replace(
|
||||
b'name:"claude-developer-platform",description:`',
|
||||
b'name:"claude-developer-platform",isEnabled:()=>!1,description:`',
|
||||
)
|
||||
sys.stderr.write("claude-developer-platform: killed\n")
|
||||
|
||||
pat = (rb"context_window:\{total_input_tokens:(" + W + rb"\(\)),"
|
||||
rb"total_output_tokens:(" + W + rb"\(\)),"
|
||||
rb"context_window_size:(" + W + rb"),"
|
||||
rb"current_usage:(" + W + rb"),"
|
||||
rb"used_percentage:(" + W + rb")\.used,"
|
||||
rb"remaining_percentage:\5\.remaining\}")
|
||||
rl = re.search(rb"(" + W + rb')=\{status:"allowed",unifiedRateLimitFallbackAvailable:!1,isUsingOverage:!1\}', data)
|
||||
m = re.search(pat, data)
|
||||
if m and rl:
|
||||
ci, co, sz, u, p, r = *[m.group(i) for i in range(1, 6)], rl.group(1)
|
||||
data = data.replace(m[0],
|
||||
b"context_window:{...(" + u + b"||{}),"
|
||||
b"context_window_size:" + sz + b",current_usage:" + u + b","
|
||||
b"used_percentage:" + p + b".used,remaining_percentage:" + p + b".remaining,"
|
||||
b"rate_limit:" + r + b",s_in:" + ci + b",s_out:" + co + b"}")
|
||||
|
||||
open(sys.argv[1], "wb").write(data)
|
||||
'';
|
||||
in
|
||||
pkgs.writeShellScriptBin "claude" ''
|
||||
set -euo pipefail
|
||||
export DISABLE_AUTOUPDATER=1
|
||||
export DISABLE_INSTALLATION_CHECKS=1
|
||||
export USE_BUILTIN_RIPGREP=0
|
||||
export PATH="${runtimeDeps}:${pkgs.deno}/bin:$PATH"
|
||||
|
||||
CACHE="''${XDG_CACHE_HOME:-$HOME/.cache}/claude-code"
|
||||
BIN="$CACHE/claude-${version}"
|
||||
|
||||
if [ ! -x "$BIN" ]; then
|
||||
mkdir -p "$CACHE"
|
||||
DENO_DIR="$CACHE/.deno"
|
||||
export DENO_DIR
|
||||
deno cache "npm:@anthropic-ai/claude-code@${version}"
|
||||
${patchScript} "$DENO_DIR/npm/registry.npmjs.org/@anthropic-ai/claude-code/${version}/cli.js"
|
||||
deno compile --allow-all --output "$BIN" "npm:@anthropic-ai/claude-code@${version}" 2>&1
|
||||
rm -rf "$DENO_DIR"
|
||||
fi
|
||||
|
||||
exec "$BIN" "$@"
|
||||
'';
|
||||
in
|
||||
(scope "apps.slopcode" <| claude-code)
|
||||
// {
|
||||
# required for loaderslop
|
||||
programs.nix-ld.enable = true;
|
||||
}
|
||||
|
|
@ -4,15 +4,14 @@
|
|||
generator = lib.generators.toJSON { };
|
||||
value = {
|
||||
email = "boss@atagen.co";
|
||||
pinentry = lib.getExe pkgs.pinentry-qt; # TODO this is fugly
|
||||
pinentry = lib.getExe pkgs.pinentry-gtk2; # TODO this is fugly
|
||||
base_url = "https://vault.lobotomise.me";
|
||||
};
|
||||
};
|
||||
|
||||
# bitwarden ? element ?
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-36.9.5"
|
||||
];
|
||||
# nixpkgs.config.permittedInsecurePackages = [
|
||||
# "electron-36.9.5"
|
||||
# ];
|
||||
apps = with pkgs; {
|
||||
passwordManager = bitwarden-desktop;
|
||||
passwordCli = rbw;
|
||||
|
|
|
|||
|
|
@ -59,11 +59,10 @@
|
|||
};
|
||||
|
||||
plymouth = {
|
||||
theme = "colorful_loop";
|
||||
theme = "starship";
|
||||
font = "${config.rice.fonts.sans.package}/share/fonts/truetype/MSW98UI-Regular.ttf";
|
||||
themePackages = [
|
||||
pkgs.adi1090x-plymouth-themes
|
||||
# (getFlakePkg inputs.hudcore)
|
||||
(getFlakePkg inputs.hudcore)
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,26 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
quick.services.startup-sound = "${lib.getExe' pkgs.alsa-utils "aplay"} " + ../assets/startup.wav;
|
||||
# FIXME broken , maybe use niri exec-once ..
|
||||
pkgs,
|
||||
lib,
|
||||
scope,
|
||||
...
|
||||
}:
|
||||
scope "user.systemd.services.startup-sound"
|
||||
<| {
|
||||
unitConfig = {
|
||||
Description = "startup sound";
|
||||
Requires = [
|
||||
"graphical-session.target"
|
||||
];
|
||||
After = [
|
||||
"graphical-session.target"
|
||||
"niri.target"
|
||||
"sound.target"
|
||||
];
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe' pkgs.alsa-utils "aplay"} " + ../assets/startup.wav;
|
||||
Type = "oneshot";
|
||||
};
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue