Compare commits
4 Commits
6c37e18206
...
3b908a7d9c
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b908a7d9c | |||
| bbb8cae22d | |||
| 08bbe87cc5 | |||
| c459e69000 |
0
.sidecar/shells.json.lock
Normal file
0
.sidecar/shells.json.lock
Normal file
@@ -7,7 +7,7 @@
|
||||
@define-color overlay0 #6e738d;
|
||||
|
||||
* {
|
||||
font-family: "JetBrainsMono Nerd Font", "Font Awesome 6 Free", sans-serif;
|
||||
font-family: "JetBrainsMono Nerd Font", "Symbols Nerd Font","Font Awesome 6 Free", "Font Awesome 6 Brands", sans-serif;
|
||||
font-size: 14px;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
|
||||
@@ -24,6 +24,45 @@ home.homeDirectory = "/home/sam";
|
||||
home.stateVersion = "25.11";
|
||||
|
||||
|
||||
systemd.user.services.kdeconnect-indicator = {
|
||||
Unit = {
|
||||
Description = "KDE Connect indicator";
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.kdePackages.kdeconnect-kde}/bin/kdeconnect-indicator";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "2s";
|
||||
};
|
||||
|
||||
Install = {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
systemd.user.services.vorta = {
|
||||
Unit = {
|
||||
Description = "Vorta (BorgBackup GUI)";
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = ''
|
||||
${pkgs.bash}/bin/bash -lc 'for i in $(seq 1 100); do for s in "$XDG_RUNTIME_DIR"/wayland-*; do if [ -S "$s" ]; then exec ${pkgs.vorta}/bin/vorta; fi; done; sleep 0.2; done; exit 1'
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = "2s";
|
||||
};
|
||||
|
||||
Install = {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
|
||||
@@ -93,22 +132,26 @@ dconf.settings."org/gnome/desktop/interface" = {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
extraPackages = with pkgs; [ tree-sitter gcc gnumake];
|
||||
};
|
||||
|
||||
# ---
|
||||
# Packages (NOW list + a few safe essentials)
|
||||
# ---
|
||||
home.packages = with pkgs; [
|
||||
tmux
|
||||
vorta
|
||||
borgbackup
|
||||
carapace
|
||||
aider-chat
|
||||
opencode
|
||||
goose-cli
|
||||
gemini-cli-bin
|
||||
|
||||
lua-language-server
|
||||
marksman
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
aider-chat
|
||||
opencode
|
||||
goose-cli
|
||||
gemini-cli-bin
|
||||
|
||||
lua-language-server
|
||||
marksman
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
|
||||
|
||||
nodejs
|
||||
|
||||
@@ -1,36 +1,50 @@
|
||||
return {
|
||||
{
|
||||
"nvim-orgmode/orgmode",
|
||||
ft = { "org" },
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
config = function()
|
||||
-- Ensure *.org files are treated as "org" filetype
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
org = "org",
|
||||
},
|
||||
})
|
||||
|
||||
-- Treesitter grammar for org (required for good highlighting)
|
||||
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
|
||||
if ok then
|
||||
local parser_config = parsers.get_parser_configs()
|
||||
parser_config.org = {
|
||||
install_info = {
|
||||
url = "https://github.com/milisims/tree-sitter-org",
|
||||
revision = "main",
|
||||
files = { "src/parser.c", "src/scanner.c" },
|
||||
},
|
||||
filetype = "org",
|
||||
}
|
||||
end
|
||||
|
||||
require("orgmode").setup({
|
||||
org_agenda_files = { "~/organizer/agenda/**/*", "~/organizer/*.org" },
|
||||
org_default_notes_file = "~/organizer/inbox.org",
|
||||
})
|
||||
end,
|
||||
"nvim-orgmode/orgmode",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
|
||||
-- Load at startup so the parser definition exists before you run TSInstall.
|
||||
lazy = false,
|
||||
|
||||
init = function()
|
||||
-- Register the org parser with nvim-treesitter (API-compatible fallback).
|
||||
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
|
||||
local parser_configs = nil
|
||||
|
||||
if type(parsers.get_parser_configs) == "function" then
|
||||
parser_configs = parsers.get_parser_configs()
|
||||
elseif type(parsers.get_parser_configs) == "table" then
|
||||
parser_configs = parsers.get_parser_configs
|
||||
elseif type(parsers.parser_configs) == "table" then
|
||||
parser_configs = parsers.parser_configs
|
||||
end
|
||||
|
||||
if not parser_configs then
|
||||
return
|
||||
end
|
||||
|
||||
-- Don’t overwrite if it already exists.
|
||||
if not parser_configs.org then
|
||||
parser_configs.org = {
|
||||
install_info = {
|
||||
url = "https://github.com/milisims/tree-sitter-org",
|
||||
revision = "main",
|
||||
files = { "src/parser.c", "src/scanner.c" },
|
||||
},
|
||||
filetype = "org",
|
||||
}
|
||||
end
|
||||
end,
|
||||
|
||||
config = function()
|
||||
require("orgmode").setup({
|
||||
org_agenda_files = { "~/organizer/agenda/**/*", "~/organizer/*.org" },
|
||||
org_default_notes_file = "~/organizer/inbox.org",
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -120,6 +120,11 @@ home-manager.backupFileExtension = "hm-bak";
|
||||
# ---
|
||||
# Users
|
||||
# ---
|
||||
|
||||
|
||||
programs.kdeconnect.enable = true;
|
||||
services.gvfs.enable = true;
|
||||
services.tumbler.enable = true;
|
||||
programs.zsh.enable = true;
|
||||
|
||||
users.users.sam = {
|
||||
@@ -322,7 +327,14 @@ fonts.packages = with pkgs; [
|
||||
|
||||
# Minimal system packages needed for the session and core usability
|
||||
environment.systemPackages = with pkgs; [
|
||||
uv
|
||||
(pkgs.callPackage ../../pkgs/agentpipe.nix { })
|
||||
(pkgs.callPackage ../../pkgs/sidecar-bin.nix { })
|
||||
xfce.thunar
|
||||
xfce.tumbler
|
||||
ffmpegthumbnailer
|
||||
poppler-utils
|
||||
kdePackages.kdeconnect-kde
|
||||
tmux
|
||||
brave
|
||||
vorta
|
||||
|
||||
55
pkgs/agentpipe-bin.nix
Normal file
55
pkgs/agentpipe-bin.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{ lib, stdenvNoCC, fetchurl }:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "agentpipe";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://github.com/kevinelliott/agentpipe/releases/download/v${finalAttrs.version}/agentpipe_linux_amd64.tar.gz";
|
||||
sha256 ="sha256-3ofsrInUlcY1UN6LszOZGYJY0SgNB8FTwlyOXx/cznk=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
unpackPhase = ''
|
||||
tar -xzf "$src"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
|
||||
if [ -f ./agentpipe ]; then
|
||||
install -m0755 ./agentpipe "$out/bin/agentpipe"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -f ./agentpipe_linux_amd64 ]; then
|
||||
install -m0755 ./agentpipe_linux_amd64 "$out/bin/agentpipe"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Fallback: try to locate it if the archive layout changes.
|
||||
bin="$(find . -maxdepth 5 -type f \
|
||||
\( -name agentpipe -o -name 'agentpipe_linux_amd64' -o -name 'agentpipe_*' \) \
|
||||
! -name env-vars \
|
||||
-print -quit)"
|
||||
|
||||
if [ -z "$bin" ]; then
|
||||
echo "agentpipe binary not found after unpack. Contents:" >&2
|
||||
find . -maxdepth 5 -print >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -m0755 "$bin" "$out/bin/agentpipe"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "AgentPipe multi-agent orchestrator CLI/TUI";
|
||||
homepage = "https://github.com/kevinelliott/agentpipe";
|
||||
license = licenses.mit;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "agentpipe";
|
||||
};
|
||||
})
|
||||
36
pkgs/agentpipe.nix
Normal file
36
pkgs/agentpipe.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "agentpipe";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kevinelliott";
|
||||
repo = "agentpipe";
|
||||
rev = "v${version}";
|
||||
hash ="sha256-sLnlgXG4Qy1nTbLyx2ci2492kwi8NNaue/4Xpdx7LQw=";
|
||||
};
|
||||
|
||||
vendorHash ="sha256-ZvJ4N2SVVBbxL2qyz/FyXUvrmTGyoojwitf5p1xSUo0=";
|
||||
subPackages = [ "." ];
|
||||
|
||||
# Avoid dynamic linking surprises.
|
||||
|
||||
env = {
|
||||
CGO_ENABLED = "0";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description =
|
||||
"CLI/TUI orchestrator for multi-agent conversations between AI CLI tools";
|
||||
homepage = "https://github.com/kevinelliott/agentpipe";
|
||||
license = licenses.mit;
|
||||
mainProgram = "agentpipe";
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -7,7 +7,7 @@ stdenvNoCC.mkDerivation {
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://github.com/marcus/sidecar/releases/download/v0.71.1/sidecar_0.71.1_linux_amd64.tar.gz";
|
||||
sha256 = lib.fakeSha256;
|
||||
sha256 = "sha256-FFisAM3oHZL8lp35/shvYPj/jmfNohoTiTuVrtePeCU=";
|
||||
};
|
||||
|
||||
dontUnpack = false;
|
||||
|
||||
Reference in New Issue
Block a user