added lots

This commit is contained in:
fwastring 2026-04-27 14:46:44 +02:00
parent 14205e371f
commit 1dd4440047
14 changed files with 595 additions and 224 deletions

View file

@ -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
'';
};
};

View file

@ -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}";

View file

@ -83,8 +83,9 @@
slurp
bitwarden-desktop
jira-cli-go
dbeaver-bin
chromium
vault
dbeaver-bin
(
let
base = pkgs.appimageTools.defaultFhsEnvArgs;

View file

@ -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" ];
};
};
}

View file

@ -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"

View file

@ -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 = {

View file

@ -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;

View file

@ -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;
};