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;
|
@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;
|
font-size: 14px;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|||||||
@@ -24,6 +24,45 @@ home.homeDirectory = "/home/sam";
|
|||||||
home.stateVersion = "25.11";
|
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;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
|
||||||
@@ -93,19 +132,23 @@ dconf.settings."org/gnome/desktop/interface" = {
|
|||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
extraPackages = with pkgs; [ tree-sitter gcc gnumake];
|
||||||
};
|
};
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
# Packages (NOW list + a few safe essentials)
|
# Packages (NOW list + a few safe essentials)
|
||||||
# ---
|
# ---
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
tmux
|
||||||
|
vorta
|
||||||
|
borgbackup
|
||||||
carapace
|
carapace
|
||||||
aider-chat
|
aider-chat
|
||||||
opencode
|
opencode
|
||||||
goose-cli
|
goose-cli
|
||||||
gemini-cli-bin
|
gemini-cli-bin
|
||||||
|
|
||||||
lua-language-server
|
lua-language-server
|
||||||
marksman
|
marksman
|
||||||
nodePackages.typescript
|
nodePackages.typescript
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
|
|||||||
@@ -1,23 +1,36 @@
|
|||||||
return {
|
return {
|
||||||
{
|
|
||||||
"nvim-orgmode/orgmode",
|
"nvim-orgmode/orgmode",
|
||||||
ft = { "org" },
|
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"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)
|
-- 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")
|
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
|
||||||
if ok then
|
if not ok then
|
||||||
local parser_config = parsers.get_parser_configs()
|
return
|
||||||
parser_config.org = {
|
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 = {
|
install_info = {
|
||||||
url = "https://github.com/milisims/tree-sitter-org",
|
url = "https://github.com/milisims/tree-sitter-org",
|
||||||
revision = "main",
|
revision = "main",
|
||||||
@@ -26,11 +39,12 @@ return {
|
|||||||
filetype = "org",
|
filetype = "org",
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
config = function()
|
||||||
require("orgmode").setup({
|
require("orgmode").setup({
|
||||||
org_agenda_files = { "~/organizer/agenda/**/*", "~/organizer/*.org" },
|
org_agenda_files = { "~/organizer/agenda/**/*", "~/organizer/*.org" },
|
||||||
org_default_notes_file = "~/organizer/inbox.org",
|
org_default_notes_file = "~/organizer/inbox.org",
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,11 @@ home-manager.backupFileExtension = "hm-bak";
|
|||||||
# ---
|
# ---
|
||||||
# Users
|
# Users
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
services.tumbler.enable = true;
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
users.users.sam = {
|
users.users.sam = {
|
||||||
@@ -322,7 +327,14 @@ fonts.packages = with pkgs; [
|
|||||||
|
|
||||||
# Minimal system packages needed for the session and core usability
|
# Minimal system packages needed for the session and core usability
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
uv
|
||||||
|
(pkgs.callPackage ../../pkgs/agentpipe.nix { })
|
||||||
(pkgs.callPackage ../../pkgs/sidecar-bin.nix { })
|
(pkgs.callPackage ../../pkgs/sidecar-bin.nix { })
|
||||||
|
xfce.thunar
|
||||||
|
xfce.tumbler
|
||||||
|
ffmpegthumbnailer
|
||||||
|
poppler-utils
|
||||||
|
kdePackages.kdeconnect-kde
|
||||||
tmux
|
tmux
|
||||||
brave
|
brave
|
||||||
vorta
|
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 {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
"https://github.com/marcus/sidecar/releases/download/v0.71.1/sidecar_0.71.1_linux_amd64.tar.gz";
|
"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;
|
dontUnpack = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user