Compare commits
11
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7670683b03 | ||
|
|
d88426eb68 | ||
|
|
cc996f7550 | ||
|
|
f5be95e5c3 | ||
|
|
a40695beaa | ||
|
|
e57c792874 | ||
|
|
984a677327 | ||
|
|
43d4ede188 | ||
|
|
d45e239926 | ||
|
|
17070a9a51 | ||
|
|
483712a34c |
@@ -24,10 +24,7 @@
|
||||
url = "github:zhaofengli-wip/nix-homebrew";
|
||||
inputs.brew-src.follows = "brew-src";
|
||||
};
|
||||
homebrew-bundle = {
|
||||
url = "github:homebrew/homebrew-bundle";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
homebrew-core = {
|
||||
url = "github:homebrew/homebrew-core";
|
||||
flake = false;
|
||||
@@ -60,7 +57,6 @@
|
||||
self,
|
||||
darwin,
|
||||
nix-homebrew,
|
||||
homebrew-bundle,
|
||||
homebrew-core,
|
||||
homebrew-cask,
|
||||
home-manager,
|
||||
@@ -139,10 +135,9 @@
|
||||
taps = {
|
||||
"homebrew/homebrew-core" = homebrew-core;
|
||||
"homebrew/homebrew-cask" = homebrew-cask;
|
||||
"homebrew/homebrew-bundle" = homebrew-bundle;
|
||||
};
|
||||
mutableTaps = false;
|
||||
autoMigrate = true;
|
||||
# autoMigrate = true;
|
||||
};
|
||||
home-manager.sharedModules = [
|
||||
# mac-app-util.homeManagerModules.default
|
||||
|
||||
@@ -24,6 +24,7 @@ in
|
||||
imports = [
|
||||
../../modules/darwin/default.nix
|
||||
../../modules/darwin/home-manager.nix
|
||||
# ../../modules/darwin/ai.nix
|
||||
];
|
||||
|
||||
# Setup user, packages, programs
|
||||
@@ -131,16 +132,6 @@ in
|
||||
StandardOutPath = "/tmp/emacs.out.log";
|
||||
};
|
||||
|
||||
launchd.user.agents.ollama = {
|
||||
command = "${pkgs.ollama}/bin/ollama serve";
|
||||
serviceConfig = {
|
||||
KeepAlive = true;
|
||||
RunAtLoad = true;
|
||||
StandardOutPath = "/tmp/ollama.out.log";
|
||||
StandardErrorPath = "/tmp/ollama.err.log";
|
||||
};
|
||||
};
|
||||
|
||||
system = {
|
||||
stateVersion = 4;
|
||||
primaryUser = "${user}";
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{ pkgs, llm-agents, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = [
|
||||
|
||||
ollama
|
||||
|
||||
|
||||
# CLI coding agent from llm-agents.nix input
|
||||
llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.hermes-agent
|
||||
|
||||
# Hermes desktop GUI
|
||||
llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.hermes-desktop
|
||||
];
|
||||
|
||||
launchd.user.agents.ollama = {
|
||||
command = "${pkgs.ollama}/bin/ollama serve";
|
||||
serviceConfig = {
|
||||
KeepAlive = true;
|
||||
RunAtLoad = true;
|
||||
StandardOutPath = "/tmp/ollama.out.log";
|
||||
StandardErrorPath = "/tmp/ollama.err.log";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
homebrew = {
|
||||
enable = true;
|
||||
global = {
|
||||
brewfile = true;
|
||||
};
|
||||
brews = [ ];
|
||||
|
||||
onActivation = {
|
||||
cleanup = "none";
|
||||
autoUpdate = true;
|
||||
upgrade = true;
|
||||
|
||||
};
|
||||
|
||||
masApps = {
|
||||
# These app IDs are from using the mas CLI app
|
||||
# mas = mac app store
|
||||
# https://github.com/mas-cli/mas
|
||||
#
|
||||
# $ nix shell nixpkgs#mas
|
||||
# $ mas search <app name>
|
||||
#
|
||||
# If you have previously added these apps to your Mac App Store profile (but not installed them on this system),
|
||||
# you may receive an error message "Redownload Unavailable with This Apple ID".
|
||||
# This message is safe to ignore.
|
||||
"1Password for Safari" = 1569813296; # (8.10.82)
|
||||
"Affinity Designer 2" = 1616831348;
|
||||
"Affinity Photo 2: Image Editor" = 1616822987;
|
||||
"Affinity Publisher 2" = 1606941598;
|
||||
# "DaisyDisk" = 409907375; # (4.32) # Don't use this, we need the official version that is not sandboxed
|
||||
"Fantastical - Calendar" = 975937182;
|
||||
"Fedistar" = 6445863996; # (1.13.1)
|
||||
"Home Assistant" = 1099568401; # (2025.7.1)
|
||||
"Ice Cubes for Mastodon" = 6444915884; # (1.11.3)
|
||||
"LibreOffice" = 1630474372;
|
||||
"Monal - XMPP Chatting " = 1637078500;
|
||||
"Microsoft Copilot" = 6738511300; # (25.7.440804001)
|
||||
"Microsoft Outlook" = 985367838; # (16.111.3)
|
||||
"Microsoft Excel" = 462058435; # (16.111.3)
|
||||
"Microsoft Word" = 462054704; # (16.111.3)
|
||||
"Microsoft PowerPoint" = 462062816; # (16.111.3)
|
||||
"OneDrive" = 823766827; # (26.134.0713)
|
||||
"MQTT Explorer" = 1455214828; # (0.3.5)
|
||||
"Night Sky" = 475772902; # 475772902
|
||||
"Native SQLite Manager" = 1416282836; # (1.31.0)
|
||||
"Remarkable Desktop" = 1276493162; # (3.19.0)
|
||||
"Slack for Desktop" = 803453959; # (4.45.60)
|
||||
"WhatsApp Messenger" = 310633997; # (26.30.77)
|
||||
"WiFi Explorer: Scanner" = 494803304; # (3.5.6)
|
||||
"Windows App Installer" = 1295203466; # (1.0.16)
|
||||
"Wireguard" = 1451685025; # (1.0.16)
|
||||
### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta
|
||||
};
|
||||
|
||||
casks = [
|
||||
# Development Tools
|
||||
"arduino-ide"
|
||||
"docker-desktop"
|
||||
"iterm2"
|
||||
"oracle-jdk"
|
||||
"visual-studio-code"
|
||||
|
||||
# Creative tools
|
||||
"blender"
|
||||
"gimp"
|
||||
"inkscape"
|
||||
"vcv-rack"
|
||||
#"affinity-designer"
|
||||
#"affinity-photo"
|
||||
#"affinity-publisher"
|
||||
|
||||
# Communication Tools
|
||||
"adium"
|
||||
"discord"
|
||||
"signal"
|
||||
"webex"
|
||||
"zoom"
|
||||
|
||||
# Utility Tools
|
||||
|
||||
"blackhole-16ch"
|
||||
"blackhole-2ch"
|
||||
"box-drive"
|
||||
"box-tools"
|
||||
"daisydisk"
|
||||
"karabiner-elements"
|
||||
"keybase"
|
||||
"moonlight"
|
||||
"spamsieve"
|
||||
"syncthing-app"
|
||||
"synology-drive"
|
||||
"tigervnc"
|
||||
|
||||
#LLM
|
||||
"ollama-app"
|
||||
"hermes-desktop"
|
||||
"jan"
|
||||
|
||||
# Entertainment Tools
|
||||
"qobuz"
|
||||
"steam"
|
||||
"handbrake-app"
|
||||
"jellyfin-media-player"
|
||||
"mediaelch"
|
||||
"obs"
|
||||
"vimediamanager"
|
||||
"vlc"
|
||||
|
||||
# Productivity Tools
|
||||
"1Password"
|
||||
"bitwarden"
|
||||
"calibre"
|
||||
"dbeaver-community"
|
||||
"element"
|
||||
"gpg-suite"
|
||||
"macdown-3000"
|
||||
"mailmate@beta"
|
||||
"orcaslicer"
|
||||
# "remanager"
|
||||
"qmk-toolbox"
|
||||
"smartsheet"
|
||||
# "sqlitestudio" # Doesn't work without Rosetta
|
||||
|
||||
# "virtualbox" # build error?
|
||||
|
||||
|
||||
# Browsers
|
||||
"brave-browser"
|
||||
"firefox"
|
||||
"google-chrome"
|
||||
|
||||
# x11
|
||||
"xquartz"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
_:
|
||||
|
||||
[
|
||||
# Development Tools
|
||||
"arduino-ide"
|
||||
"homebrew/cask/docker-desktop"
|
||||
"iterm2"
|
||||
"oracle-jdk"
|
||||
"visual-studio-code"
|
||||
|
||||
# Creative tools
|
||||
"blender"
|
||||
"gimp"
|
||||
"inkscape"
|
||||
"vcv-rack"
|
||||
#"affinity-designer"
|
||||
#"affinity-photo"
|
||||
#"affinity-publisher"
|
||||
|
||||
# Communication Tools
|
||||
"adium"
|
||||
"discord"
|
||||
"signal"
|
||||
"webex"
|
||||
"whatsapp"
|
||||
"zoom"
|
||||
|
||||
|
||||
# Utility Tools
|
||||
|
||||
"blackhole-16ch"
|
||||
"blackhole-2ch"
|
||||
"box-drive"
|
||||
"box-tools"
|
||||
"daisydisk"
|
||||
"karabiner-elements"
|
||||
"keybase"
|
||||
"spamsieve"
|
||||
"syncthing-app"
|
||||
"synology-drive"
|
||||
|
||||
# Entertainment Tools
|
||||
"qobuz"
|
||||
"steam"
|
||||
"handbrake-app"
|
||||
"jellyfin-media-player"
|
||||
"mediaelch"
|
||||
"obs"
|
||||
"vimediamanager"
|
||||
"vlc"
|
||||
|
||||
# Productivity Tools
|
||||
"1Password"
|
||||
"bitwarden"
|
||||
"calibre"
|
||||
"dbeaver-community"
|
||||
"element"
|
||||
"gpg-suite"
|
||||
"macdown-3000"
|
||||
"mailmate"
|
||||
"orcaslicer"
|
||||
"remanager"
|
||||
"qmk-toolbox"
|
||||
"smartsheet"
|
||||
"spamsieve"
|
||||
# "sqlitestudio" # Doesn't work without Rosetta
|
||||
"tigervnc"
|
||||
# "virtualbox" # build error?
|
||||
"copilot-cli"
|
||||
|
||||
# Browsers
|
||||
"brave-browser"
|
||||
"firefox"
|
||||
"google-chrome"
|
||||
|
||||
|
||||
|
||||
# x11
|
||||
"xquartz"
|
||||
]
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
emacsOverlaySha256 = "0pqnl05j86pyvrlqh5kk4sximi749xqgiffq47grw7v98nqd2yin";
|
||||
emacsOverlaySha256 = "07i9zb4rw9zwip9a49fv0q60ak025vn92r48vk7ns61was1mzn9s";
|
||||
in
|
||||
{
|
||||
home-manager.backupFileExtension = "nix-backup";
|
||||
|
||||
+245
-57
@@ -20,6 +20,7 @@ in
|
||||
|
||||
imports = [
|
||||
./dock
|
||||
./brewery.nix
|
||||
];
|
||||
|
||||
# It me
|
||||
@@ -28,53 +29,18 @@ in
|
||||
home = "/Users/${user}";
|
||||
isHidden = false;
|
||||
shell = pkgs.zsh;
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCEBZrQ9F3nLhEM9uqdPijut11vhYkdmLtj7gT/zgV3 Key Nov 2024"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA9vrzEHmWEX5sCVsp6J4tVrxEzzqMSRkijHEfVg2WrC cardno:36_431_811"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG5BytZleG7m1926MSNwVXyPJ0QD5Z919cFCp22BN5hV cardno:35_775_013"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAl/jn18uVPJ9Uyv8gqk80gVQaMHrcd1b+B/SB/6RsX8 cardno:36_431_751"
|
||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILVdAx+U1xhcJmh1hRaF0CVB0ivIF/U0oIbAWYPwko4iAAAABHNzaDo= Yubikey 35775013"
|
||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIjnJyJUDnia6ZWPRa5iSBKCb+DMGmFtiFa+9gkeiTwQAAAABHNzaDo= Yubikey 36431751"
|
||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFhuPQUHUHchx8wHVCciMi6etzZStkpECbG/r/1imy+kAAAABHNzaDo= Yubikey 36431881"
|
||||
];
|
||||
};
|
||||
|
||||
homebrew = {
|
||||
enable = true;
|
||||
|
||||
casks = pkgs.callPackage ./casks.nix { };
|
||||
onActivation = {
|
||||
cleanup = "uninstall";
|
||||
autoUpdate = true;
|
||||
upgrade = true;
|
||||
};
|
||||
|
||||
# These app IDs are from using the mas CLI app
|
||||
# mas = mac app store
|
||||
# https://github.com/mas-cli/mas
|
||||
#
|
||||
# $ nix shell nixpkgs#mas
|
||||
# $ mas search <app name>
|
||||
#
|
||||
# If you have previously added these apps to your Mac App Store profile (but not installed them on this system),
|
||||
# you may receive an error message "Redownload Unavailable with This Apple ID".
|
||||
# This message is safe to ignore.
|
||||
|
||||
masApps = {
|
||||
"1Password for Safari" = 1569813296; # (8.10.82)
|
||||
"Affinity Designer 2" = 1616831348;
|
||||
"Affinity Photo 2: Image Editor" = 1616822987;
|
||||
"Affinity Publisher 2" = 1606941598;
|
||||
"Apple Remote Desktop" = 409907375; # (3.11)
|
||||
# "DaisyDisk" = 409907375; # (4.32) # Don't use this, we need the official version that is not sandboxed
|
||||
"Fantastical - Calendar" = 975937182;
|
||||
" Fedistar" = 6445863996; # (1.13.1)
|
||||
"Home Assistant" = 1099568401; # (2025.7.1)
|
||||
"Ice Cubes for Mastodon" = 6444915884; # (1.11.3)
|
||||
"LibreOffice" = 1630474372;
|
||||
"Monal - XMPP Chatting " = 1637078500;
|
||||
"MQTT Explorer" = 1455214828; # (0.3.5)
|
||||
"Night Sky" = 475772902; # 475772902
|
||||
"Native SQLite Manager" = 1416282836; # (1.31.0)
|
||||
"Remarkable Desktop" = 1276493162; # (3.19.0)
|
||||
|
||||
"Slack for Desktop" = 803453959; # (4.45.60)
|
||||
"WiFi Explorer: Scanner" = 494803304; # (3.5.6)
|
||||
"Wireguard" = 1451685025; # (1.0.16)
|
||||
### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta
|
||||
};
|
||||
};
|
||||
|
||||
# Enable home-manager
|
||||
home-manager = {
|
||||
@@ -91,12 +57,123 @@ in
|
||||
home = {
|
||||
enableNixpkgsReleaseCheck = false;
|
||||
packages = pkgs.callPackage ./packages.nix { inherit llm-agents; };
|
||||
file = additionalFiles // { "emacs-launcher.command".source = myEmacsLauncher; };
|
||||
|
||||
file = additionalFiles // {
|
||||
"emacs-launcher.command".source = myEmacsLauncher;
|
||||
};
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
|
||||
home.activation.ensureNpmCliTools = import ./npm.nix { inherit lib pkgs; };
|
||||
|
||||
catppuccin = {
|
||||
autoEnable = true;
|
||||
enable = true;
|
||||
flavor = "mocha";
|
||||
};
|
||||
programs = {
|
||||
gpg.enable = true;
|
||||
alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
cursor = {
|
||||
style = "Block";
|
||||
};
|
||||
|
||||
window = {
|
||||
opacity = 1.0;
|
||||
padding = {
|
||||
x = 24;
|
||||
y = 24;
|
||||
};
|
||||
};
|
||||
|
||||
font = {
|
||||
normal = {
|
||||
family = "MesloLGS NF";
|
||||
style = "Regular";
|
||||
};
|
||||
size = lib.mkMerge [
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux 10)
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin 14)
|
||||
];
|
||||
};
|
||||
|
||||
dynamic_padding = true;
|
||||
decorations = "full";
|
||||
title = "Terminal";
|
||||
class = {
|
||||
instance = "Alacritty";
|
||||
general = "Alacritty";
|
||||
};
|
||||
|
||||
colors = {
|
||||
primary = {
|
||||
background = "0x1f2528";
|
||||
foreground = "0xc0c5ce";
|
||||
};
|
||||
|
||||
normal = {
|
||||
black = "0x1f2528";
|
||||
red = "0xec5f67";
|
||||
green = "0x99c794";
|
||||
yellow = "0xfac863";
|
||||
blue = "0x6699cc";
|
||||
magenta = "0xc594c5";
|
||||
cyan = "0x5fb3b3";
|
||||
white = "0xc0c5ce";
|
||||
};
|
||||
|
||||
bright = {
|
||||
black = "0x65737e";
|
||||
red = "0xec5f67";
|
||||
green = "0x99c794";
|
||||
yellow = "0xfac863";
|
||||
blue = "0x6699cc";
|
||||
magenta = "0xc594c5";
|
||||
cyan = "0x5fb3b3";
|
||||
white = "0xd8dee9";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ssh = {
|
||||
enable = true;
|
||||
|
||||
enableDefaultConfig = false;
|
||||
settings = {
|
||||
"*" = {
|
||||
forwardAgent = false;
|
||||
addKeysToAgent = "no";
|
||||
compression = false;
|
||||
serverAliveInterval = 0;
|
||||
serverAliveCountMax = 3;
|
||||
hashKnownHosts = false;
|
||||
userKnownHostsFile = "~/.ssh/known_hosts";
|
||||
controlMaster = "no";
|
||||
controlPath = "~/.ssh/master-%r@%n:%p";
|
||||
controlPersist = "no";
|
||||
};
|
||||
"moonunit.kolkman.org" = {
|
||||
hostname = "moonunit.kolkman.org";
|
||||
user = "root";
|
||||
port = 2222;
|
||||
};
|
||||
};
|
||||
includes = [
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/config_external")
|
||||
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/config_external")
|
||||
];
|
||||
};
|
||||
|
||||
gpg = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default-key = "01B157D574FEDBB2";
|
||||
no-emit-version = true;
|
||||
auto-key-retrieve = true;
|
||||
personal-digest-preferences = "SHA512 SHA384 SHA256 SHA224";
|
||||
};
|
||||
};
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
@@ -110,15 +187,26 @@ in
|
||||
initContent =
|
||||
let
|
||||
zshConfigEarlyInit = lib.mkOrder 500 ''
|
||||
ulimit -n 524288
|
||||
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
|
||||
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
. /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||
fi
|
||||
|
||||
if [[ "$TERM" == "alacritty" ]]; then
|
||||
export TERMINFO_DIRS="$HOME/.nix-profile/share/terminfo:/run/current-system/sw/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/usr/share/terminfo"
|
||||
if ! infocmp alacritty >/dev/null 2>&1; then
|
||||
export TERM="xterm-256color"
|
||||
fi
|
||||
fi
|
||||
|
||||
# GPGAgent for SSH
|
||||
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||
|
||||
# Define variables for directories
|
||||
|
||||
export PATH=$HOME/.local/bin:$PATH
|
||||
|
||||
export PATH=$HOME/.pnpm-packages/bin:$HOME/.pnpm-packages:$PATH
|
||||
export PATH=$HOME/.npm-packages/bin:$HOME/bin:$PATH
|
||||
export PATH=$HOME/.local/share/bin:$PATH
|
||||
@@ -280,24 +368,124 @@ in
|
||||
nnoremap <C-j> <C-w>j
|
||||
nnoremap <C-k> <C-w>k
|
||||
nnoremap <C-l> <C-w>l
|
||||
|
||||
"" Easier to yank entire line
|
||||
nnoremap Y y$
|
||||
|
||||
"" Move buffers
|
||||
nnoremap <tab> :bnext<cr>
|
||||
nnoremap <S-tab> :bprev<cr>
|
||||
|
||||
"" Like a boss, sudo AFTER opening the file to write
|
||||
cmap w!! w !sudo tee % >/dev/null
|
||||
|
||||
let g:startify_lists = [
|
||||
\ { 'type': 'dir', 'header': [' Current Directory '. getcwd()] },
|
||||
\ { 'type': 'sessions', 'header': [' Sessions'] },
|
||||
\ { 'type': 'bookmarks', 'header': [' Bookmarks'] }
|
||||
\ ]
|
||||
|
||||
let g:startify_bookmarks = [
|
||||
\ '~/.local/share/src',
|
||||
\ ]
|
||||
|
||||
let g:airline_theme='bubblegum'
|
||||
let g:airline_powerline_fonts = 1
|
||||
'';
|
||||
};
|
||||
|
||||
tmux = {
|
||||
enable = true;
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
vim-tmux-navigator
|
||||
sensible
|
||||
yank
|
||||
prefix-highlight
|
||||
{
|
||||
plugin = power-theme;
|
||||
extraConfig = ''
|
||||
set -g @tmux_power_theme 'gold'
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = resurrect; # Used by tmux-continuum
|
||||
|
||||
# Use XDG data directory
|
||||
# https://github.com/tmux-plugins/tmux-resurrect/issues/348
|
||||
extraConfig = ''
|
||||
set -g @resurrect-dir '$HOME/.cache/tmux/resurrect'
|
||||
set -g @resurrect-capture-pane-contents 'on'
|
||||
set -g @resurrect-pane-contents-area 'visible'
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = continuum;
|
||||
extraConfig = ''
|
||||
set -g @continuum-restore 'on'
|
||||
set -g @continuum-save-interval '5' # minutes
|
||||
'';
|
||||
}
|
||||
];
|
||||
terminal = "screen-256color";
|
||||
prefix = "C-x";
|
||||
escapeTime = 10;
|
||||
historyLimit = 50000;
|
||||
extraConfig = ''
|
||||
# Remove Vim mode delays
|
||||
set -g focus-events on
|
||||
|
||||
# Enable full mouse support
|
||||
set -g mouse on
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Key bindings
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# Unbind default keys
|
||||
unbind C-b
|
||||
unbind '"'
|
||||
unbind %
|
||||
|
||||
# Split panes, vertical or horizontal
|
||||
bind-key x split-window -v
|
||||
bind-key v split-window -h
|
||||
|
||||
# Move around panes with vim-like bindings (h,j,k,l)
|
||||
bind-key -n M-k select-pane -U
|
||||
bind-key -n M-h select-pane -L
|
||||
bind-key -n M-j select-pane -D
|
||||
bind-key -n M-l select-pane -R
|
||||
|
||||
# Smart pane switching with awareness of Vim splits.
|
||||
# This is copy paste from https://github.com/christoomey/vim-tmux-navigator
|
||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
|
||||
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
||||
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
||||
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||||
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
||||
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
|
||||
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
|
||||
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
|
||||
|
||||
bind-key -T copy-mode-vi 'C-h' select-pane -L
|
||||
bind-key -T copy-mode-vi 'C-j' select-pane -D
|
||||
bind-key -T copy-mode-vi 'C-k' select-pane -U
|
||||
bind-key -T copy-mode-vi 'C-l' select-pane -R
|
||||
bind-key -T copy-mode-vi 'C-\' select-pane -l
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
catppuccin = {
|
||||
autoEnable = true;
|
||||
enable = true;
|
||||
flavor = "mocha";
|
||||
};
|
||||
|
||||
services = {
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
extraConfig = ''
|
||||
default-cache-ttl 600
|
||||
max-cache-ttl 7200
|
||||
pinentry-program /Users/olaf/.nix-profile/bin/pinentry-mac
|
||||
default-cache-ttl 600
|
||||
max-cache-ttl 7200
|
||||
pinentry-program /Users/olaf/.nix-profile/bin/pinentry-mac
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{ lib, pkgs }:
|
||||
|
||||
let
|
||||
npmPackages = [
|
||||
"@enact/cli"
|
||||
"@webos-tools/cli"
|
||||
"@anthropic-ai/claude-code"
|
||||
"patch-package"
|
||||
];
|
||||
in
|
||||
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
# Ensure required npm CLI tools are installed in the user prefix.
|
||||
NPM_BIN="${pkgs.nodejs}/bin/npm"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-packages"
|
||||
export PATH="${pkgs.nodejs}/bin:$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
|
||||
if [[ ! -x "$NPM_BIN" ]]; then
|
||||
echo "npm not found; skipping npm CLI installation step"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for pkg in ${lib.concatStringsSep " " (map lib.escapeShellArg npmPackages)}; do
|
||||
if "$NPM_BIN" list -g --depth=0 "$pkg" >/dev/null 2>&1; then
|
||||
echo "npm package already installed: $pkg"
|
||||
else
|
||||
echo "installing npm package: $pkg"
|
||||
"$NPM_BIN" install -g "$pkg"
|
||||
fi
|
||||
done
|
||||
''
|
||||
@@ -30,6 +30,7 @@ with pkgs;
|
||||
btop
|
||||
coreutils
|
||||
difftastic
|
||||
freerdp
|
||||
htop
|
||||
killall
|
||||
minicom
|
||||
@@ -80,15 +81,12 @@ with pkgs;
|
||||
imagemagick
|
||||
|
||||
# Text and terminal utilities
|
||||
htop
|
||||
hunspell
|
||||
iftop
|
||||
inetutils # includes Telnet
|
||||
jq
|
||||
ripgrep
|
||||
tmux
|
||||
tree
|
||||
unrar
|
||||
unzip
|
||||
|
||||
# Python packages
|
||||
@@ -115,11 +113,9 @@ with pkgs;
|
||||
numpy
|
||||
pandas
|
||||
pillow
|
||||
pillow
|
||||
python-engineio
|
||||
python-socketio
|
||||
requests
|
||||
requests
|
||||
shapely
|
||||
simple-websocket
|
||||
tkinter
|
||||
@@ -131,8 +127,7 @@ with pkgs;
|
||||
]
|
||||
))
|
||||
|
||||
# LLM
|
||||
ollama # Launchd definition in hosts/darwin/default.nix
|
||||
|
||||
|
||||
# Social
|
||||
pidgin
|
||||
|
||||
Reference in New Issue
Block a user