Compare commits

...

4 Commits

8 changed files with 204 additions and 44 deletions

View File

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

View File

@@ -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
aider-chat
opencode
goose-cli
gemini-cli-bin
lua-language-server
marksman
nodePackages.typescript
nodePackages.typescript-language-server
lua-language-server
marksman
nodePackages.typescript
nodePackages.typescript-language-server
nodejs

View File

@@ -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
-- Dont 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,
}

View File

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

View File

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