added lots
This commit is contained in:
parent
14205e371f
commit
1dd4440047
14 changed files with 595 additions and 224 deletions
|
|
@ -82,41 +82,90 @@ in
|
|||
fzfOpts = catppuccinFzfOptions.${config.fish.theme};
|
||||
in
|
||||
''
|
||||
fish_vi_key_bindings
|
||||
set fish_greeting
|
||||
set FLAKE_DIR "/home/fw/nix"
|
||||
if test -r /run/secrets/jira_token
|
||||
set -gx JIRA_API_TOKEN (string trim (cat /run/secrets/jira_token))
|
||||
end
|
||||
if test -r /run/secrets/google_oauth_client_id
|
||||
set -gx GOOGLE_OAUTH_CLIENT_ID (string trim (cat /run/secrets/google_oauth_client_id))
|
||||
end
|
||||
if test -r /run/secrets/google_oauth_client_secret
|
||||
set -gx GOOGLE_OAUTH_CLIENT_SECRET (string trim (cat /run/secrets/google_oauth_client_secret))
|
||||
end
|
||||
if test -r /run/secrets/user_google_email
|
||||
set -gx USER_GOOGLE_EMAIL (string trim (cat /run/secrets/user_google_email))
|
||||
end
|
||||
set -gx GITHUB_PERSONAL_ACCESS_TOKEN (cat /run/secrets/github_token)
|
||||
set -gx GITHUB_HOST "https://github.com"
|
||||
set -gx GRAFANA_SERVICE_ACCOUNT_TOKEN (cat /run/secrets/grafana_token)
|
||||
fish_vi_key_bindings
|
||||
set fish_greeting
|
||||
set FLAKE_DIR "/home/fw/nix"
|
||||
set -l host_name (hostname)
|
||||
|
||||
function load_secret --argument-names env_name preferred_secret fallback_secret
|
||||
if test -r "/run/secrets/$preferred_secret"
|
||||
set -gx $env_name (string trim (cat "/run/secrets/$preferred_secret"))
|
||||
else if test -r "/run/secrets/$fallback_secret"
|
||||
set -gx $env_name (string trim (cat "/run/secrets/$fallback_secret"))
|
||||
end
|
||||
end
|
||||
|
||||
if test -r /run/secrets/jira_token
|
||||
set -gx JIRA_API_TOKEN (string trim (cat /run/secrets/jira_token))
|
||||
end
|
||||
load_secret GOOGLE_OAUTH_CLIENT_ID "google_oauth_client_id_$host_name" google_oauth_client_id
|
||||
load_secret GOOGLE_OAUTH_CLIENT_SECRET "google_oauth_client_secret_$host_name" google_oauth_client_secret
|
||||
load_secret USER_GOOGLE_EMAIL "user_google_email_$host_name" user_google_email
|
||||
load_secret MSSQL_SERVER "mssql_server_$host_name" mssql_server
|
||||
load_secret MSSQL_DATABASE "mssql_database_$host_name" mssql_database
|
||||
load_secret MSSQL_USER "mssql_user_$host_name" mssql_user
|
||||
load_secret MSSQL_PASSWORD "mssql_password_$host_name" mssql_password
|
||||
load_secret MSSQL_PORT "mssql_port_$host_name" mssql_port
|
||||
load_secret MSSQL_ENCRYPT "mssql_encrypt_$host_name" mssql_encrypt
|
||||
load_secret MSSQL_WINDOWS_AUTH "mssql_windows_auth_$host_name" mssql_windows_auth
|
||||
load_secret VAULT_ADDR "vault_addr_$host_name" vault_addr
|
||||
load_secret VAULT_TOKEN "vault_token_$host_name" vault_token
|
||||
load_secret VAULT_NAMESPACE "vault_namespace_$host_name" vault_namespace
|
||||
set -gx GITHUB_PERSONAL_ACCESS_TOKEN (cat /run/secrets/github_token)
|
||||
set -gx GITHUB_HOST "https://github.com"
|
||||
set -gx GRAFANA_SERVICE_ACCOUNT_TOKEN (cat /run/secrets/grafana_token)
|
||||
set -gx GRAFANA_URL "https://monitoring.internalifacts.se"
|
||||
set -Ux FZF_CTRL_R_OPTS "--reverse"
|
||||
set -Ux FZF_TMUX_OPTS "-p"
|
||||
set -e GOROOT
|
||||
set -x -U GOPATH $HOME/.go
|
||||
gh completion -s fish > ~/.config/fish/completions/gh.fish
|
||||
set -gx PATH $PATH $HOME/scripts
|
||||
set -gx PATH $PATH $HOME/.krew/bin
|
||||
set -gx PATH $PATH $HOME/scripts
|
||||
set -gx PATH $PATH $HOME/.krew/bin
|
||||
set -gx OPENCODE_DEFAULT_PROMPT_FILE "$HOME/.config/opencode/session-prompt.txt"
|
||||
|
||||
function oc
|
||||
set -l passthrough_subcommands completion acp mcp attach debug providers auth agent upgrade uninstall serve web models stats export import github pr session plugin plug db
|
||||
|
||||
if test (count $argv) -gt 0
|
||||
if string match -qr '^-' -- "$argv[1]"
|
||||
command opencode $argv
|
||||
return $status
|
||||
end
|
||||
|
||||
for arg in $argv
|
||||
if test "$arg" = "--prompt"
|
||||
command opencode $argv
|
||||
return $status
|
||||
end
|
||||
end
|
||||
|
||||
if contains -- "$argv[1]" $passthrough_subcommands
|
||||
command opencode $argv
|
||||
return $status
|
||||
end
|
||||
end
|
||||
|
||||
if test -r "$OPENCODE_DEFAULT_PROMPT_FILE"
|
||||
set -l session_prompt (string collect < "$OPENCODE_DEFAULT_PROMPT_FILE")
|
||||
command opencode --prompt "$session_prompt" $argv
|
||||
else
|
||||
command opencode $argv
|
||||
end
|
||||
end
|
||||
|
||||
complete -e -c oc
|
||||
complete -c oc -w opencode
|
||||
|
||||
|
||||
if not set -q SSH_AUTH_SOCK
|
||||
eval (ssh-agent -c)
|
||||
ssh-add ~/.ssh/id_ed25519 >/dev/null 2>&1
|
||||
if not set -q SSH_AUTH_SOCK
|
||||
eval (ssh-agent -c)
|
||||
ssh-add ~/.ssh/id_ed25519 >/dev/null 2>&1
|
||||
set SSH_AUTH_SOCK /home/fw/.bitwarden-ssh-agent.sock
|
||||
end
|
||||
|
||||
set -Ux FZF_DEFAULT_OPTS "${fzfOpts}"
|
||||
set -Ux FZF_DEFAULT_OPTS "${fzfOpts}"
|
||||
functions -e load_secret
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
googleWorkspaceStateDir = "/home/fw/.local/share/google-workspace-mcp/${myhostname}";
|
||||
in
|
||||
{
|
||||
options.opencode.mcpEnabled = mkOption {
|
||||
|
|
@ -18,6 +19,8 @@ in
|
|||
github = true;
|
||||
jira = true;
|
||||
google = false;
|
||||
mssql = false;
|
||||
vault = false;
|
||||
};
|
||||
description = "Per-host MCP enablement flags for OpenCode servers.";
|
||||
};
|
||||
|
|
@ -48,6 +51,22 @@ in
|
|||
"$schema" = "https://opencode.ai/config.json";
|
||||
theme = lib.mkForce "catppuccin";
|
||||
plugin = [ "@ex-machina/opencode-anthropic-auth" ];
|
||||
provider = {
|
||||
ollama = {
|
||||
npm = "@ai-sdk/openai-compatible";
|
||||
options = {
|
||||
baseURL = "http://localhost:11434/v1";
|
||||
};
|
||||
models = {
|
||||
# Only include models that support function calling (tools)
|
||||
"gemma2:latest" = {};
|
||||
"llama3.1:8b" = {};
|
||||
"qwen2.5-coder:14b" = {};
|
||||
"qwen2.5-coder:32b" = {};
|
||||
# Note: deepseek-coder models and codellama:13b don't support tools
|
||||
};
|
||||
};
|
||||
};
|
||||
mcp = {
|
||||
az = {
|
||||
type = "local";
|
||||
|
|
@ -112,12 +131,12 @@ in
|
|||
"run"
|
||||
"-i"
|
||||
"--rm"
|
||||
"--network"
|
||||
"host"
|
||||
"--network"
|
||||
"host"
|
||||
"--user"
|
||||
"1000:100"
|
||||
"-v"
|
||||
"/home/fw/.local/share/google-workspace-mcp:/home/app/.google_workspace_mcp"
|
||||
"${googleWorkspaceStateDir}:/home/app/.google_workspace_mcp"
|
||||
"-e"
|
||||
"GOOGLE_OAUTH_CLIENT_ID"
|
||||
"-e"
|
||||
|
|
@ -134,6 +153,38 @@ in
|
|||
];
|
||||
enabled = config.opencode.mcpEnabled.google or false;
|
||||
};
|
||||
mssql = {
|
||||
type = "local";
|
||||
command = [
|
||||
"nix"
|
||||
"shell"
|
||||
"nixpkgs#uv"
|
||||
"nixpkgs#freetds"
|
||||
"-c"
|
||||
"uvx"
|
||||
"--from"
|
||||
"git+https://github.com/RichardHan/mssql_mcp_server.git@77b0c6a9771e3f83a54c03dad42f1a53e0a20d0e"
|
||||
"mssql_mcp_server"
|
||||
];
|
||||
enabled = config.opencode.mcpEnabled.mssql or false;
|
||||
};
|
||||
vault = {
|
||||
type = "local";
|
||||
command = [
|
||||
"docker"
|
||||
"run"
|
||||
"-i"
|
||||
"--rm"
|
||||
"-e"
|
||||
"VAULT_ADDR"
|
||||
"-e"
|
||||
"VAULT_TOKEN"
|
||||
"-e"
|
||||
"VAULT_NAMESPACE"
|
||||
"hashicorp/vault-mcp-server"
|
||||
];
|
||||
enabled = config.opencode.mcpEnabled.vault or false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -145,6 +196,33 @@ in
|
|||
fi
|
||||
'';
|
||||
|
||||
home.activation.googleWorkspaceMcpState = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
mkdir -p "${googleWorkspaceStateDir}"
|
||||
'';
|
||||
|
||||
home.file.".config/opencode/session-prompt.txt".text = ''
|
||||
Session instructions for this entire chat:
|
||||
|
||||
1) Tooling / binaries
|
||||
- Always use Nix for binaries and tool execution.
|
||||
- Prefer `nix shell nixpkgs#<tool> -c <command>` (or `nix develop -c <command>` if the repo already defines a dev shell).
|
||||
- Do not run tools directly from global/system installs unless I explicitly ask.
|
||||
|
||||
2) Daily note logging
|
||||
- Track general work notes in: /home/fw/knowledge/notes/daily
|
||||
- Use today's daily note file (create it if missing) and keep it updated as work progresses.
|
||||
- Add short, timestamped entries for meaningful actions/decisions.
|
||||
|
||||
3) Schedule updates
|
||||
- In today's daily note, maintain a "Schedule" section/tab and keep it current with what we are actively doing.
|
||||
- When tasks change, update Schedule first, then continue implementation.
|
||||
- Keep Schedule concise and action-oriented.
|
||||
|
||||
4) Working style
|
||||
- Don't ask for confirmation on normal steps; proceed with sensible defaults.
|
||||
- Only ask when blocked, destructive, or security-sensitive.
|
||||
'';
|
||||
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
# theme = "catppuccin_${theme}";
|
||||
|
|
|
|||
|
|
@ -83,8 +83,9 @@
|
|||
slurp
|
||||
bitwarden-desktop
|
||||
jira-cli-go
|
||||
|
||||
dbeaver-bin
|
||||
chromium
|
||||
vault
|
||||
dbeaver-bin
|
||||
(
|
||||
let
|
||||
base = pkgs.appimageTools.defaultFhsEnvArgs;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ let
|
|||
move: yes
|
||||
write: yes
|
||||
|
||||
paths:
|
||||
default: $albumartist/$album ($year)/$track $title
|
||||
|
||||
fetchart:
|
||||
auto: yes
|
||||
|
||||
|
|
@ -60,7 +63,8 @@ in
|
|||
"BEETSCONFIG=${config.xdg.configHome}/beets/config.yaml"
|
||||
];
|
||||
};
|
||||
Install = { WantedBy = [ "default.target" ]; };
|
||||
Install = {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -285,10 +285,12 @@ with lib;
|
|||
"$mod, l, movefocus, r"
|
||||
"$mod, k, movefocus, u"
|
||||
"$mod, j, movefocus, d"
|
||||
"$mod, b, exec, pkill -INT .waybar-wrapped"
|
||||
|
||||
# Applications
|
||||
"$mod, q, exec, ${pkgs.librewolf}/bin/librewolf"
|
||||
"$mod, d, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '"
|
||||
", F19, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '"
|
||||
|
||||
# Screencapture
|
||||
"$mod SHIFT, s, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png"
|
||||
|
|
|
|||
|
|
@ -263,25 +263,25 @@ with lib;
|
|||
# };
|
||||
# };
|
||||
|
||||
treesitter = {
|
||||
enable = true;
|
||||
|
||||
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||
bash
|
||||
json
|
||||
lua
|
||||
make
|
||||
markdown
|
||||
helm
|
||||
nix
|
||||
regex
|
||||
toml
|
||||
vim
|
||||
vimdoc
|
||||
xml
|
||||
yaml
|
||||
];
|
||||
};
|
||||
# treesitter = {
|
||||
# enable = true;
|
||||
#
|
||||
# grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||
# bash
|
||||
# json
|
||||
# lua
|
||||
# make
|
||||
# markdown
|
||||
# helm
|
||||
# nix
|
||||
# regex
|
||||
# toml
|
||||
# vim
|
||||
# vimdoc
|
||||
# xml
|
||||
# yaml
|
||||
# ];
|
||||
# };
|
||||
oil = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ let
|
|||
"upower"
|
||||
"custom/tailscale"
|
||||
"custom/netbird"
|
||||
"custom/bitwarden"
|
||||
"network"
|
||||
"clock"
|
||||
]
|
||||
|
|
@ -69,6 +70,7 @@ let
|
|||
"bluetooth"
|
||||
"custom/tailscale"
|
||||
"custom/netbird"
|
||||
"custom/bitwarden"
|
||||
"network"
|
||||
"clock"
|
||||
];
|
||||
|
|
@ -189,6 +191,20 @@ let
|
|||
return-type = "json";
|
||||
interval = 5;
|
||||
};
|
||||
|
||||
"custom/bitwarden" = {
|
||||
exec = "/home/fw/.config/waybar/scripts/bitwarden.sh --status";
|
||||
on-click = "/home/fw/.config/waybar/scripts/bitwarden.sh --toggle";
|
||||
exec-on-event = true;
|
||||
format = "BW {icon} {text}";
|
||||
format-icons = {
|
||||
connected = "";
|
||||
stopped = "";
|
||||
};
|
||||
tooltip = true;
|
||||
return-type = "json";
|
||||
interval = 5;
|
||||
};
|
||||
};
|
||||
|
||||
waybarStyle = ''
|
||||
|
|
@ -238,7 +254,8 @@ let
|
|||
#upower,
|
||||
#network,
|
||||
#custom-tailscale,
|
||||
#custom-netbird {
|
||||
#custom-netbird,
|
||||
#custom-bitwarden {
|
||||
background: @base;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
|
|
@ -305,6 +322,7 @@ let
|
|||
#upower,
|
||||
#custom-tailscale,
|
||||
#custom-netbird,
|
||||
#custom-bitwarden,
|
||||
#network {
|
||||
background: @peach;
|
||||
color: @base;
|
||||
|
|
@ -755,6 +773,68 @@ with lib;
|
|||
'';
|
||||
executable = true;
|
||||
};
|
||||
xdg.configFile."waybar/scripts/bitwarden.sh" = {
|
||||
text = ''
|
||||
#!${pkgs.bash}/bin/bash
|
||||
|
||||
PATH=${
|
||||
lib.makeBinPath [
|
||||
pkgs.coreutils
|
||||
pkgs.procps
|
||||
pkgs.bitwarden-desktop
|
||||
]
|
||||
}
|
||||
|
||||
BITWARDEN_SSH_SOCK="''${HOME}/.bitwarden-ssh-agent.sock"
|
||||
|
||||
is_socket_active() {
|
||||
[[ -S "$BITWARDEN_SSH_SOCK" ]]
|
||||
}
|
||||
|
||||
show_status() {
|
||||
if is_socket_active; then
|
||||
echo "{\"text\":\"\",\"class\":\"connected\",\"alt\":\"connected\",\"tooltip\":\"Bitwarden SSH agent socket is active: $BITWARDEN_SSH_SOCK\"}"
|
||||
else
|
||||
echo "{\"text\":\"\",\"class\":\"stopped\",\"alt\":\"stopped\",\"tooltip\":\"Bitwarden SSH agent socket is inactive: $BITWARDEN_SSH_SOCK\"}"
|
||||
fi
|
||||
}
|
||||
|
||||
open_bitwarden() {
|
||||
bitwarden >/dev/null 2>&1 &
|
||||
show_status
|
||||
}
|
||||
|
||||
stop_bitwarden() {
|
||||
pkill -x bitwarden >/dev/null 2>&1 || true
|
||||
show_status
|
||||
}
|
||||
|
||||
toggle_bitwarden() {
|
||||
if is_socket_active; then
|
||||
stop_bitwarden
|
||||
else
|
||||
open_bitwarden
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
--status)
|
||||
show_status
|
||||
;;
|
||||
--open)
|
||||
open_bitwarden
|
||||
;;
|
||||
--toggle)
|
||||
toggle_bitwarden
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {--status|--open|--toggle}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
executable = true;
|
||||
};
|
||||
};
|
||||
# catppuccin.waybar = {
|
||||
# enable = true;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ let
|
|||
src = inputs.wedding;
|
||||
subPackages = [ "internal/cmd/app" ];
|
||||
#vendorHash = "sha256-rxaikaR4UGXu2hIuR9ZbOnITBsCq5zEDAlwrhhRudoo=";
|
||||
vendorHash = lib.fakeHash;
|
||||
vendorHash = "sha256-9TAVoYShxqzeo2BUWEFmZ6PO4p9Q/BG4207ZEBmhq9I=";
|
||||
env = {
|
||||
CGO_ENABLED = 0;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue