feat(github): add auto-conventional-commit hook with opencode integration
- Add prepare-commit-msg git hook that generates conventional commit messages - Modularize fish configuration with separate conf.d files - Convert configuration files from .text to .source format for structured data - Add sops-nix SOPS configuration with explicit secret definitions - Upgrade age identity to single key file management approach - Add system activation script for age key management - Generate .sops.yaml for SOPS creation rules - Restructure README.md with improved table and cleaner formatting - Refactor config files to use pkgs.formats.json/toml generators - Implement YAML format for ashell and walker service configurations - Update SSH config source to use sops secrets - Convert zed and other config files to use structured .source format
This commit is contained in:
@@ -5,7 +5,8 @@
|
||||
}: let
|
||||
configFile = "zed/settings.json";
|
||||
languageConfig = import ./_settings.nix {inherit pkgs lib;};
|
||||
settingsJSON = builtins.toJSON ({
|
||||
toJSON = (pkgs.formats.json {}).generate;
|
||||
settingsJSON = toJSON "settings.json" ({
|
||||
node = {
|
||||
path = "${pkgs.nodejs}/bin/node";
|
||||
npm_path = "${pkgs.nodejs}/bin/npm";
|
||||
@@ -145,7 +146,7 @@ in {
|
||||
zedWithLSP
|
||||
];
|
||||
xdg.configFile."${configFile}" = {
|
||||
text = settingsJSON;
|
||||
source = settingsJSON;
|
||||
mutable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
{pkgs, ...}: let
|
||||
configFile = "pipewire/pipewire.conf.d/99-input-denoising.conf";
|
||||
toJSON = (pkgs.formats.json {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = with pkgs; [
|
||||
rnnoise
|
||||
rnnoise-plugin
|
||||
];
|
||||
|
||||
xdg.configFile."${configFile}".text = builtins.toJSON {
|
||||
xdg.configFile."${configFile}".source = toJSON "99-input-denoising.conf" {
|
||||
"context.modules" = [
|
||||
{
|
||||
"name" = "libpipewire-module-filter-chain";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{}: {
|
||||
{...}: {
|
||||
"XF86AudioPlay" = {
|
||||
_props.allow-when-locked = true;
|
||||
spawn._args = ["playerctl" "play-pause"];
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
{pkgs, ...}: {
|
||||
{pkgs, ...}: let
|
||||
toTOML = (pkgs.formats.toml {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = [pkgs.ashell];
|
||||
|
||||
xdg.configFile."ashell/config.toml".text = ''
|
||||
[modules]
|
||||
left = [ [ "appLauncher", "Updates", "Workspaces", "ScreenMirror" ], "MediaPlayer" ]
|
||||
center = [ "WindowTitle" ]
|
||||
right = [ "SystemInfo", [ "Tray", "Clock", "Privacy", "Settings" ] ]
|
||||
|
||||
|
||||
[system_info]
|
||||
indicators = [ "Cpu", "Memory", "Temperature" ]
|
||||
|
||||
[system_info.cpu]
|
||||
warn_threshold = 60
|
||||
alert_threshold = 80
|
||||
|
||||
[system_info.memory]
|
||||
warn_threshold = 70
|
||||
alert_threshold = 85
|
||||
|
||||
[system_info.temperature]
|
||||
warn_threshold = 60
|
||||
alert_threshold = 80
|
||||
|
||||
[tempo]
|
||||
clock_format = "%a %d %b %R"
|
||||
weather_location = { City = "Amsterdam" }
|
||||
|
||||
[appearance]
|
||||
style = "Islands"
|
||||
|
||||
[[ScreenMirror]]
|
||||
name = "ScreenMirror"
|
||||
icon = ""
|
||||
command = "bash /etc/nixos/scripts/screen-mirror.sh"
|
||||
|
||||
|
||||
'';
|
||||
xdg.configFile."ashell/config.toml".source = toTOML "config.toml" {
|
||||
modules = {
|
||||
left = [["appLauncher" "Updates" "Workspaces" "ScreenMirror"] "MediaPlayer"];
|
||||
center = ["WindowTitle"];
|
||||
right = ["SystemInfo" ["Tray" "Clock" "Privacy" "Settings"]];
|
||||
};
|
||||
system_info = {
|
||||
indicators = ["Cpu" "Memory" "Temperature"];
|
||||
cpu = {
|
||||
warn_threshold = 60;
|
||||
alert_threshold = 80;
|
||||
};
|
||||
memory = {
|
||||
warn_threshold = 70;
|
||||
alert_threshold = 85;
|
||||
};
|
||||
temperature = {
|
||||
warn_threshold = 60;
|
||||
alert_threshold = 80;
|
||||
};
|
||||
};
|
||||
tempo = {
|
||||
clock_format = "%a %d %b %R";
|
||||
weather_location = {City = "Amsterdam";};
|
||||
};
|
||||
appearance.style = "Islands";
|
||||
ScreenMirror = [
|
||||
{
|
||||
name = "ScreenMirror";
|
||||
icon = "";
|
||||
command = "bash /etc/nixos/scripts/screen-mirror.sh";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,29 +1,32 @@
|
||||
{pkgs, ...}: {
|
||||
{pkgs, ...}: let
|
||||
toTOML = (pkgs.formats.toml {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = [pkgs.walker pkgs.elephant];
|
||||
|
||||
xdg.configFile."walker/config.toml".text = ''
|
||||
[keys]
|
||||
launcher = "Mod+Space"
|
||||
|
||||
[keys.quit]
|
||||
quit = "Mod+Shift+Q"
|
||||
reload = "Mod+Shift+R"
|
||||
|
||||
[look]
|
||||
all_monitors = true
|
||||
background = "#1f1d2e"
|
||||
foreground = "#cdd6f4"
|
||||
selection = "#45475a"
|
||||
active = "#89b4fa"
|
||||
urgent = "#f38ba8"
|
||||
alt_background = "#181825"
|
||||
icon_theme = "Papirus-Dark"
|
||||
terminal = "alacritty"
|
||||
|
||||
[look.font]
|
||||
name = "Source Code Pro"
|
||||
size = 14
|
||||
'';
|
||||
xdg.configFile."walker/config.toml".source = toTOML "config.toml" {
|
||||
keys = {
|
||||
launcher = "Mod+Space";
|
||||
quit = {
|
||||
quit = "Mod+Shift+Q";
|
||||
reload = "Mod+Shift+R";
|
||||
};
|
||||
};
|
||||
look = {
|
||||
all_monitors = true;
|
||||
background = "#1f1d2e";
|
||||
foreground = "#cdd6f4";
|
||||
selection = "#45475a";
|
||||
active = "#89b4fa";
|
||||
urgent = "#f38ba8";
|
||||
alt_background = "#181825";
|
||||
icon_theme = "Papirus-Dark";
|
||||
terminal = "alacritty";
|
||||
font = {
|
||||
name = "Source Code Pro";
|
||||
size = 14;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.elephant = {
|
||||
wantedBy = ["graphical-session.target"];
|
||||
|
||||
@@ -5,56 +5,56 @@
|
||||
export XDG_SESSION_TYPE="wayland"
|
||||
exec ${pkgs.alacritty}/bin/alacritty "$@"
|
||||
'';
|
||||
toTOML = (pkgs.formats.toml {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = with pkgs; [
|
||||
alacritty
|
||||
alacritty-wrapped
|
||||
];
|
||||
|
||||
xdg.configFile."alacritty/alacritty.toml".text = ''
|
||||
[colors.bright]
|
||||
black = "0x928374"
|
||||
blue = "0x7daea3"
|
||||
cyan = "0x89b482"
|
||||
green = "0xa9b665"
|
||||
magenta = "0xd3869b"
|
||||
red = "0xea6962"
|
||||
white = "0xdfbf8e"
|
||||
yellow = "0xe3a84e"
|
||||
|
||||
[colors.normal]
|
||||
black = "0x665c54"
|
||||
blue = "0x7daea3"
|
||||
cyan = "0x89b482"
|
||||
green = "0xa9b665"
|
||||
magenta = "0xd3869b"
|
||||
red = "0xea6962"
|
||||
white = "0xdfbf8e"
|
||||
yellow = "0xe78a4e"
|
||||
|
||||
[colors.primary]
|
||||
background = "0x1f0d00"
|
||||
foreground = "0xdfbf8e"
|
||||
|
||||
[env]
|
||||
EDITOR = "nvim"
|
||||
XDG_CURRENT_DESKTOP = "Niri"
|
||||
XDG_SESSION_TYPE = "wayland"
|
||||
|
||||
[font]
|
||||
size = 13
|
||||
|
||||
[font.normal]
|
||||
family = "SauceCodePro Nerd Font"
|
||||
|
||||
[window]
|
||||
decorations = "full"
|
||||
opacity = 1.0
|
||||
|
||||
[terminal.shell]
|
||||
program = "fish"
|
||||
|
||||
[scrolling]
|
||||
history = 5000
|
||||
'';
|
||||
xdg.configFile."alacritty/alacritty.toml".source = toTOML "alacritty.toml" {
|
||||
colors = {
|
||||
bright = {
|
||||
black = "0x928374";
|
||||
blue = "0x7daea3";
|
||||
cyan = "0x89b482";
|
||||
green = "0xa9b665";
|
||||
magenta = "0xd3869b";
|
||||
red = "0xea6962";
|
||||
white = "0xdfbf8e";
|
||||
yellow = "0xe3a84e";
|
||||
};
|
||||
normal = {
|
||||
black = "0x665c54";
|
||||
blue = "0x7daea3";
|
||||
cyan = "0x89b482";
|
||||
green = "0xa9b665";
|
||||
magenta = "0xd3869b";
|
||||
red = "0xea6962";
|
||||
white = "0xdfbf8e";
|
||||
yellow = "0xe78a4e";
|
||||
};
|
||||
primary = {
|
||||
background = "0x1f0d00";
|
||||
foreground = "0xdfbf8e";
|
||||
};
|
||||
};
|
||||
env = {
|
||||
EDITOR = "nvim";
|
||||
XDG_CURRENT_DESKTOP = "Niri";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
};
|
||||
font = {
|
||||
size = 13;
|
||||
normal = {
|
||||
family = "SauceCodePro Nerd Font";
|
||||
};
|
||||
};
|
||||
window = {
|
||||
decorations = "full";
|
||||
opacity = 1.0;
|
||||
};
|
||||
terminal.shell.program = "fish";
|
||||
scrolling.history = 5000;
|
||||
};
|
||||
}
|
||||
|
||||
+110
-97
@@ -7,64 +7,78 @@
|
||||
'')
|
||||
];
|
||||
xdg.configFile = {
|
||||
"fish/config.fish" = {
|
||||
text = ''
|
||||
for secret in discordo openrouter github twt gemini context7 exa
|
||||
if test -f /run/agenix/$secret
|
||||
set -l val (cat /run/agenix/$secret)
|
||||
set -l up (string upper $secret)
|
||||
switch $secret
|
||||
case discordo
|
||||
set -gx DISCORDO_TOKEN $val
|
||||
set -gx OXICORD_TOKEN $val
|
||||
case openrouter gemini context7 exa
|
||||
set -gx "$up"_API_KEY $val
|
||||
case '*'
|
||||
set -gx "$up"_TOKEN $val
|
||||
end
|
||||
# ── Modular fish conf.d ──────────────────────────────────────────────────
|
||||
# Each file under fish/conf.d/ is sourced automatically by fish at startup,
|
||||
# sorted lexicographically. We use numeric prefixes for ordering.
|
||||
|
||||
# 00: Environment variables
|
||||
"fish/conf.d/00-env.fish".text = ''
|
||||
set -gx GNUPGHOME $HOME/.config/gnupg
|
||||
set -gx NIXPKGS_ALLOW_UNFREE 1
|
||||
set -gx NIXPKGS_ALLOW_INSECURE 1
|
||||
set -gx EDITOR nvim
|
||||
set -gx VISUAL nvim
|
||||
set -g fish_greeting
|
||||
'';
|
||||
|
||||
# 01: SOPS secret loader
|
||||
"fish/conf.d/01-secrets.fish".text = ''
|
||||
for secret in discordo openrouter github twt gemini context7 exa
|
||||
if test -f /run/secrets/$secret
|
||||
set -l val (cat /run/secrets/$secret)
|
||||
set -l up (string upper $secret)
|
||||
switch $secret
|
||||
case discordo
|
||||
set -gx DISCORDO_TOKEN $val
|
||||
set -gx OXICORD_TOKEN $val
|
||||
case openrouter gemini context7 exa
|
||||
set -gx "$up"_API_KEY $val
|
||||
case '*'
|
||||
set -gx "$up"_TOKEN $val
|
||||
end
|
||||
end
|
||||
set -gx GNUPGHOME $HOME/.config/gnupg
|
||||
set -gx NIXPKGS_ALLOW_UNFREE 1
|
||||
set -gx NIXPKGS_ALLOW_INSECURE 1
|
||||
set -gx EDITOR nvim
|
||||
set -gx VISUAL nvim
|
||||
set -g fish_greeting
|
||||
# Vi keybindings
|
||||
fish_vi_key_bindings
|
||||
# Custom key bindings function (REQUIRED to properly unbind keys)
|
||||
function fish_user_key_bindings
|
||||
# Custom bindings
|
||||
for mode in insert default
|
||||
bind -M $mode ctrl-backspace backward-kill-word
|
||||
bind -M $mode ctrl-delete kill-word
|
||||
bind -M $mode alt-backspace backward-kill-token
|
||||
bind -M $mode alt-delete kill-token
|
||||
bind -M $mode ctrl-z undo
|
||||
end
|
||||
bind -M insert \cx\ce edit_command_buffer
|
||||
bind -M default \cx\ce edit_command_buffer
|
||||
bind -M default up history-prefix-search-backward
|
||||
bind -M default down history-prefix-search-forward
|
||||
end
|
||||
'';
|
||||
|
||||
# 02: Vi key bindings and cursor shapes
|
||||
"fish/conf.d/02-key-bindings.fish".text = ''
|
||||
fish_vi_key_bindings
|
||||
|
||||
function fish_user_key_bindings
|
||||
for mode in insert default
|
||||
bind -M $mode ctrl-backspace backward-kill-word
|
||||
bind -M $mode ctrl-delete kill-word
|
||||
bind -M $mode alt-backspace backward-kill-token
|
||||
bind -M $mode alt-delete kill-token
|
||||
bind -M $mode ctrl-z undo
|
||||
end
|
||||
# Cursor shapes per mode
|
||||
set fish_cursor_default block
|
||||
set fish_cursor_insert line
|
||||
set fish_cursor_replace_one underscore
|
||||
set fish_cursor_visual block
|
||||
# Syntax colors
|
||||
set -g fish_color_autosuggestion brblack
|
||||
set -g fish_color_command blue
|
||||
set -g fish_color_error red
|
||||
set -g fish_color_param normal
|
||||
# Search highlight
|
||||
set -g fish_color_search_match --background=normal
|
||||
# Plugin settings
|
||||
set -Ux fifc_editor nvim
|
||||
set -U fifc_keybinding \cv
|
||||
set -g __done_min_cmd_duration 10000
|
||||
'';
|
||||
};
|
||||
bind -M insert \cx\ce edit_command_buffer
|
||||
bind -M default \cx\ce edit_command_buffer
|
||||
bind -M default up history-prefix-search-backward
|
||||
bind -M default down history-prefix-search-forward
|
||||
end
|
||||
|
||||
set fish_cursor_default block
|
||||
set fish_cursor_insert line
|
||||
set fish_cursor_replace_one underscore
|
||||
set fish_cursor_visual block
|
||||
'';
|
||||
|
||||
# 03: Syntax highlighting colors
|
||||
"fish/conf.d/03-syntax.fish".text = ''
|
||||
set -g fish_color_autosuggestion brblack
|
||||
set -g fish_color_command blue
|
||||
set -g fish_color_error red
|
||||
set -g fish_color_param normal
|
||||
set -g fish_color_search_match --background=normal
|
||||
'';
|
||||
|
||||
# 04: Plugin settings
|
||||
"fish/conf.d/04-plugins.fish".text = ''
|
||||
set -Ux fifc_editor nvim
|
||||
set -U fifc_keybinding \cv
|
||||
set -g __done_min_cmd_duration 10000
|
||||
'';
|
||||
"fish/functions/extract.fish" = {
|
||||
text = ''
|
||||
function extract
|
||||
@@ -166,47 +180,46 @@
|
||||
end
|
||||
'';
|
||||
};
|
||||
"fish/conf.d/aliases.fish" = {
|
||||
text = ''
|
||||
alias cleanup="sudo nix-collect-garbage --delete-older-than 1d"
|
||||
alias listgen="sudo nix-env -p /nix/var/nix/profiles/system --list-generations"
|
||||
alias nixremove="nix-store --gc"
|
||||
alias bloat="nix path-info -Sh /run/current-system"
|
||||
alias cleanram="sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'"
|
||||
alias trimall="sudo fstrim -va"
|
||||
alias c="clear"
|
||||
alias add="git add ."
|
||||
alias commit="git commit"
|
||||
alias push="git push"
|
||||
alias pull="git pull"
|
||||
alias diff="git diff --staged"
|
||||
alias gcld="git clone --depth 1"
|
||||
alias koji="meteor"
|
||||
alias gitui="lazygit"
|
||||
alias ls="eza -lah --grid -s modified --smart-group --group-directories-first --icons"
|
||||
alias l="eza -ah --grid -s modified --smart-group --group-directories-first --icons"
|
||||
alias tree="eza --tree --icons --tree"
|
||||
alias cat="${pkgs.bat}/bin/bat --paging=never --theme gruvbox-dark"
|
||||
alias us="systemctl --user"
|
||||
alias rs="sudo systemctl"
|
||||
alias zed="zeditor"
|
||||
alias nl="nl -ba"
|
||||
alias cp="cp -riv"
|
||||
alias mv="mv -iv"
|
||||
alias mkdir="mkdir -pv"
|
||||
alias less="bat -p --theme gruvbox-dark"
|
||||
alias myip="curl ip.severijnse.eu"
|
||||
alias pscpu="ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%cpu | head -n 21"
|
||||
alias psmem="ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%mem | head -n 21"
|
||||
alias weer="weather"
|
||||
alias v="nvim"
|
||||
alias copy="wl-copy"
|
||||
alias send="croc"
|
||||
alias img="loupe"
|
||||
alias cat-md="glow"
|
||||
alias du="dust"
|
||||
alias df="duf"
|
||||
'';
|
||||
};
|
||||
# 05: Aliases
|
||||
"fish/conf.d/05-aliases.fish".text = ''
|
||||
alias cleanup="sudo nix-collect-garbage --delete-older-than 1d"
|
||||
alias listgen="sudo nix-env -p /nix/var/nix/profiles/system --list-generations"
|
||||
alias nixremove="nix-store --gc"
|
||||
alias bloat="nix path-info -Sh /run/current-system"
|
||||
alias cleanram="sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'"
|
||||
alias trimall="sudo fstrim -va"
|
||||
alias c="clear"
|
||||
alias add="git add ."
|
||||
alias commit="git commit"
|
||||
alias push="git push"
|
||||
alias pull="git pull"
|
||||
alias diff="git diff --staged"
|
||||
alias gcld="git clone --depth 1"
|
||||
alias koji="meteor"
|
||||
alias gitui="lazygit"
|
||||
alias ls="eza -lah --grid -s modified --smart-group --group-directories-first --icons"
|
||||
alias l="eza -ah --grid -s modified --smart-group --group-directories-first --icons"
|
||||
alias tree="eza --tree --icons --tree"
|
||||
alias cat="${pkgs.bat}/bin/bat --paging=never --theme gruvbox-dark"
|
||||
alias us="systemctl --user"
|
||||
alias rs="sudo systemctl"
|
||||
alias zed="zeditor"
|
||||
alias nl="nl -ba"
|
||||
alias cp="cp -riv"
|
||||
alias mv="mv -iv"
|
||||
alias mkdir="mkdir -pv"
|
||||
alias less="bat -p --theme gruvbox-dark"
|
||||
alias myip="curl ip.severijnse.eu"
|
||||
alias pscpu="ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%cpu | head -n 21"
|
||||
alias psmem="ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%mem | head -n 21"
|
||||
alias weer="weather"
|
||||
alias v="nvim"
|
||||
alias copy="wl-copy"
|
||||
alias send="croc"
|
||||
alias img="loupe"
|
||||
alias cat-md="glow"
|
||||
alias du="dust"
|
||||
alias df="duf"
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,7 +5,40 @@
|
||||
}: let
|
||||
configFile = "git/config";
|
||||
ignoreFile = "git/ignore";
|
||||
hooksDir = "git/hooks";
|
||||
toINI = (pkgs.formats.ini {}).generate;
|
||||
|
||||
# Hook that auto-generates a Conventional Commit message from staged diff
|
||||
prepareCommitMsg = pkgs.writeShellScript "prepare-commit-msg" ''
|
||||
# Only run if there are staged changes
|
||||
if git diff --cached --quiet 2>/dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Generating commit message from staged changes..." >&2
|
||||
|
||||
# Generate Conventional Commit message using opencode run
|
||||
git diff --cached | timeout 30 ${pkgs.opencode}/bin/opencode run \
|
||||
-m opencode/north-mini-code-free \
|
||||
"You are an expert software engineer writing professional Git commit messages.
|
||||
|
||||
Create a clean Conventional Commit for the provided diff.
|
||||
|
||||
Rules:
|
||||
- Format: type(optional scope): imperative description
|
||||
- Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore
|
||||
- First line: maximum 72 characters, starts with capital letter, imperative present tense
|
||||
- If relevant, add a blank line followed by a short body explaining the motivation and key changes
|
||||
- Be concise and professional. No emojis, no markdown.
|
||||
|
||||
Output ONLY the commit message. Do not add any extra text, quotes, or explanations." \
|
||||
2>/dev/null > "$1"
|
||||
|
||||
# Fallback if generation failed or timed out
|
||||
if [ ! -s "$1" ]; then
|
||||
echo "chore: auto-generated commit message" > "$1"
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
users.users.someone.packages = with pkgs; [
|
||||
git
|
||||
@@ -36,6 +69,7 @@ in {
|
||||
};
|
||||
core = {
|
||||
editor = "nvim";
|
||||
hooksPath = "${config.xdg.configHome}/git/hooks";
|
||||
pager = "${pkgs.delta}/bin/delta";
|
||||
whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
|
||||
excludesFile = "${config.xdg.configHome}/${ignoreFile}";
|
||||
@@ -124,4 +158,6 @@ in {
|
||||
AGENTS.md
|
||||
.sisyphus
|
||||
'';
|
||||
|
||||
xdg.configFile."${hooksDir}/prepare-commit-msg".source = prepareCommitMsg;
|
||||
}
|
||||
|
||||
@@ -31,12 +31,13 @@
|
||||
'';
|
||||
configFile = "opencode/config.json";
|
||||
tuiFile = "opencode/tui.json";
|
||||
toJSON = (pkgs.formats.json {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = [
|
||||
opencodeWrapped
|
||||
];
|
||||
xdg.configFile = {
|
||||
"${configFile}".text = builtins.toJSON {
|
||||
"${configFile}".source = toJSON "config.json" {
|
||||
"$schema" = "https://opencode.ai/config.json";
|
||||
plugin = [
|
||||
"opencode-antigravity-auth@latest"
|
||||
@@ -118,7 +119,7 @@ in {
|
||||
provider = providers.config;
|
||||
};
|
||||
|
||||
"opencode/oh-my-openagent.json".text = builtins.toJSON {
|
||||
"opencode/oh-my-openagent.json".source = toJSON "oh-my-openagent.json" {
|
||||
"$schema" = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/master/assets/oh-my-opencode.schema.json";
|
||||
agents = {
|
||||
"sisyphus-junior" = {model = "opencode/nemotron-3-super-free";};
|
||||
@@ -134,7 +135,7 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
"${tuiFile}".text = builtins.toJSON {
|
||||
"${tuiFile}".source = toJSON "tui.json" {
|
||||
"$schema" = "https://opencode.ai/tui.json";
|
||||
theme = "gruvbox";
|
||||
};
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
];
|
||||
|
||||
xdg.configFile."ssh/config" = {
|
||||
source = config.age.secrets.ssh_config.path;
|
||||
source = config.sops.secrets.ssh_config.path;
|
||||
};
|
||||
|
||||
home.file.".ssh/config" = {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{pkgs, ...}: {
|
||||
{pkgs, ...}: let
|
||||
toJSON = (pkgs.formats.json {}).generate;
|
||||
in {
|
||||
users.users.someone.packages = with pkgs; [
|
||||
television
|
||||
nix-search-tv
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"nix-search-tv/config.json".text = builtins.toJSON {
|
||||
"nix-search-tv/config.json".source = toJSON "config.json" {
|
||||
indexes = ["nixos" "nixpkgs" "nur"];
|
||||
};
|
||||
"fish/completions/tv.fish".source = "${pkgs.television}/share/fish/vendor_completions.d/tv.fish";
|
||||
|
||||
Reference in New Issue
Block a user