Compare commits
No commits in common. "main" and "integration" have entirely different histories.
main
...
integratio
806
flake.lock
806
flake.lock
File diff suppressed because it is too large
Load diff
17
flake.nix
17
flake.nix
|
@ -65,12 +65,6 @@
|
|||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
# Tangled (atproto tools)
|
||||
tangled = {
|
||||
url = "git+https://tangled.org/@tangled.org/core";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# Others
|
||||
nur.url = "github:nix-community/NUR";
|
||||
rust-overlay = {
|
||||
|
@ -79,10 +73,6 @@
|
|||
};
|
||||
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
|
||||
tidalcycles.inputs.nixpkgs.follows = "unstable";
|
||||
autohide-tdrop = {
|
||||
url = "github:I-Want-ToBelieve/autohide-tdrop";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# TODO hundred rabbits software
|
||||
# TODO needs secrets
|
||||
# dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main";
|
||||
|
@ -94,8 +84,8 @@
|
|||
|
||||
outputs = { self, nixpkgs, unstable, nixos-hardware, home-manager, deploy-rs
|
||||
, agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles
|
||||
, rust-overlay, vimwikicli, autohide-tdrop, darwin, nix-homebrew, homebrew-bundle
|
||||
, homebrew-core, homebrew-cask, jovian, tangled, ... }@inputs:
|
||||
, rust-overlay, vimwikicli, darwin, nix-homebrew, homebrew-bundle
|
||||
, homebrew-core, homebrew-cask, jovian, ... }@inputs:
|
||||
let
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"aarch64-linux"
|
||||
|
@ -111,7 +101,6 @@
|
|||
};
|
||||
vimwikiOverlay = final: prev: {
|
||||
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
|
||||
autohide-tdrop = autohide-tdrop.packages.${prev.system}.default;
|
||||
};
|
||||
|
||||
nixpkgsFor = forAllSystems (system:
|
||||
|
@ -127,7 +116,6 @@
|
|||
"vcv-rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
"bitwig-studio-unwrapped"
|
||||
];
|
||||
};
|
||||
overlays = [
|
||||
|
@ -153,7 +141,6 @@
|
|||
# ];
|
||||
overlays = [
|
||||
agenix.overlays.default
|
||||
tangled.overlays.default # atproto tools only on lite deployments
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
|
||||
|
|
|
@ -301,12 +301,11 @@
|
|||
nepl = "n repl '<nixpkgs>'";
|
||||
srch = "ns nixpkgs";
|
||||
orch = "ns override";
|
||||
# Impure for bitwig on linux, not sure what it's for in darwin
|
||||
nrb = ''
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD
|
||||
else
|
||||
cd /tmp && sudo nixos-rebuild switch --flake --impure '/home/anish/usr/helm#curve' && cd $OLDPWD
|
||||
cd /tmp && sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve' && cd $OLDPWD
|
||||
fi
|
||||
'';
|
||||
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
|
||||
|
|
|
@ -9,8 +9,9 @@ mouse_map left click ungrabbed mouse_click_url_or_select
|
|||
confirm_os_window_close 0
|
||||
enable_audio_bell no
|
||||
|
||||
|
||||
|
||||
# Ctrl+V for paste
|
||||
map ctrl+v paste_from_clipboard
|
||||
mouse_map middle release ungrabbed paste_from_clipboard
|
||||
|
||||
-- Allows zen-mode.nvim to increase font size
|
||||
-- allow_remote_control socket-only
|
||||
-- listen_on unix:/tmp/kitty
|
||||
|
|
|
@ -2,35 +2,12 @@
|
|||
|
||||
@import "config.rasi"
|
||||
|
||||
textbox {
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
|
||||
listview {
|
||||
columns: 9;
|
||||
lines: 7;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
layout: vertical;
|
||||
flow: horizontal;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
}
|
||||
|
||||
element {
|
||||
orientation: vertical;
|
||||
}
|
||||
|
||||
element-text {
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
font: "FiraCode Nerd Font 24";
|
||||
columns: 4;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: "❇️ ";
|
||||
str: "🎑";
|
||||
}
|
||||
|
||||
prompt {
|
||||
|
|
|
@ -16,7 +16,7 @@ super + Return
|
|||
kitty
|
||||
|
||||
ctrl + super + Return
|
||||
tdrop -n tdrop_kitty --post-create-hook "autohide-tdrop &" -ma -h 60% -w 70% -x 15% -y 32 kitty --class=tdrop_kitty
|
||||
xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux"
|
||||
|
||||
super + space
|
||||
rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi
|
||||
|
@ -25,7 +25,7 @@ super + Tab
|
|||
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
||||
|
||||
super + e
|
||||
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy --hidden-descriptions
|
||||
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy
|
||||
|
||||
super + a
|
||||
paste
|
||||
|
|
8
home/profiles/nvim/amp-plugin.nix
Normal file
8
home/profiles/nvim/amp-plugin.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ pkgs }:
|
||||
|
||||
# Remove the conditional entirely for now to test
|
||||
pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "amp-nvim";
|
||||
version = "unstable";
|
||||
src = /Users/anishlakhwara/usr/amp.nvim;
|
||||
}
|
5
home/profiles/nvim/amp.lua
Normal file
5
home/profiles/nvim/amp.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
-- amp.nvim configuration
|
||||
require('amp').setup({
|
||||
auto_start = true,
|
||||
log_level = "info"
|
||||
})
|
|
@ -11,16 +11,6 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
amp-nvim = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "amp-nvim";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "sourcegraph";
|
||||
repo = "amp.nvim";
|
||||
rev = "main";
|
||||
sha256 = "Sm/SQEIZlnqu/sD+MhZzgGm3bf+HnADOOimZ2Q++MXU=";
|
||||
};
|
||||
};
|
||||
|
||||
my-lspsaga = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "lspsaga.nvim";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
@ -113,6 +103,7 @@ let
|
|||
doInstallCheck = false;
|
||||
nvimRequireCheck = "none";
|
||||
};
|
||||
amp-nvim = import ./amp-plugin.nix { inherit pkgs; };
|
||||
};
|
||||
|
||||
my-python-packages = python-packages: with python-packages; [
|
||||
|
@ -233,7 +224,6 @@ in
|
|||
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
||||
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
||||
nnoremap <leader>ft <cmd>Telescope tags<cr>
|
||||
nnoremap <leader>fr <cmd>lua KitaabRecent()<cr>
|
||||
|
||||
" exit normal mode in terminal
|
||||
:tnoremap <C-n> <C-\><C-n>
|
||||
|
@ -327,10 +317,10 @@ in
|
|||
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
|
||||
|
||||
" lsp commands
|
||||
nnoremap gd :lua vim.lsp.buf.definition()<CR>
|
||||
nnoremap gI :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||
nnoremap gK :lua vim.lsp.buf.signature_help()<CR>
|
||||
nnoremap gr :lua require('telescope.builtin').lsp_references()<CR>
|
||||
nnoremap <leader>vgd :lua vim.lsp.buf.definition()<CR>
|
||||
nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
|
||||
nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR>
|
||||
" nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
||||
" nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
||||
" nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
|
||||
|
@ -339,9 +329,9 @@ in
|
|||
" nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
|
||||
" lspsaga stuff doesn't work
|
||||
nnoremap <leader>vd :Lspsaga peek_definition<CR>
|
||||
nnoremap <leader>cr :Lspsaga rename<CR><CR>
|
||||
nnoremap K :Lspsaga hover_doc<CR>
|
||||
nnoremap <leader>ca :Lspsaga code_action<CR>
|
||||
nnoremap <leader>vrn :Lspsaga rename<CR><CR>
|
||||
nnoremap <leader>vh :Lspsaga hover_doc<CR>
|
||||
nnoremap <leader>vca :Lspsaga code_action<CR>
|
||||
nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
|
||||
nnoremap <leader>vs :Dasht<Space>
|
||||
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
|
||||
|
@ -929,7 +919,7 @@ in
|
|||
map("n", "<leader>zl", "<Cmd>ZkLinks<CR>", opts)
|
||||
|
||||
-- Preview a linked note.
|
||||
map("n", "<leader>ck", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||
map("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||
-- Open the code actions for a visual selection.
|
||||
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>", opts)
|
||||
|
||||
|
@ -1031,110 +1021,6 @@ in
|
|||
vim.keymap.set('n', '<M-S-k>', '<Cmd>resize +2<CR>', {silent = true})
|
||||
vim.keymap.set('n', '<M-S-l>', '<Cmd>vertical resize +2<CR>', {silent = true})
|
||||
|
||||
-- Kitaab recent files (only date-based files, sorted reverse)
|
||||
function KitaabRecent()
|
||||
local pickers = require('telescope.pickers')
|
||||
local finders = require('telescope.finders')
|
||||
local conf = require('telescope.config').values
|
||||
|
||||
-- Use current working directory
|
||||
local kitaab_path = vim.fn.getcwd()
|
||||
|
||||
-- Get all files (depth 1, exclude directories)
|
||||
local files = vim.fn.readdir(kitaab_path, function(name)
|
||||
return vim.fn.isdirectory(kitaab_path .. '/' .. name) == 0
|
||||
end)
|
||||
|
||||
-- Filter to only date-based files (starting with digit)
|
||||
local date_files = {}
|
||||
for _, filename in ipairs(files) do
|
||||
if filename:match('^%d') then
|
||||
table.insert(date_files, filename)
|
||||
end
|
||||
end
|
||||
|
||||
-- Sort in reverse (most recent first)
|
||||
table.sort(date_files, function(a, b) return a > b end)
|
||||
|
||||
pickers.new({}, {
|
||||
prompt_title = 'Kitaab Recent',
|
||||
finder = finders.new_table({
|
||||
results = date_files,
|
||||
entry_maker = function(entry)
|
||||
return {
|
||||
value = kitaab_path .. '/' .. entry,
|
||||
display = entry,
|
||||
ordinal = entry,
|
||||
path = kitaab_path .. '/' .. entry,
|
||||
}
|
||||
end
|
||||
}),
|
||||
previewer = conf.file_previewer({}),
|
||||
sorter = conf.generic_sorter({}),
|
||||
}):find()
|
||||
end
|
||||
|
||||
-- Setup amp.nvim
|
||||
require('amp').setup({
|
||||
auto_start = true,
|
||||
log_level = "info"
|
||||
})
|
||||
|
||||
-- Amp commands
|
||||
vim.api.nvim_create_user_command("AmpSend", function(opts)
|
||||
local message = opts.args
|
||||
if message == "" then
|
||||
print("Please provide a message to send")
|
||||
return
|
||||
end
|
||||
local amp_message = require("amp.message")
|
||||
amp_message.send_message(message)
|
||||
end, {
|
||||
nargs = "*",
|
||||
desc = "Send a message to Amp",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("AmpSendBuffer", function(opts)
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||
local content = table.concat(lines, "\n")
|
||||
local amp_message = require("amp.message")
|
||||
amp_message.send_message(content)
|
||||
end, {
|
||||
nargs = "?",
|
||||
desc = "Send current buffer contents to Amp",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("AmpPromptSelection", function(opts)
|
||||
local lines = vim.api.nvim_buf_get_lines(0, opts.line1 - 1, opts.line2, false)
|
||||
local text = table.concat(lines, "\n")
|
||||
local amp_message = require("amp.message")
|
||||
amp_message.send_to_prompt(text)
|
||||
end, {
|
||||
range = true,
|
||||
desc = "Add selected text to Amp prompt",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("AmpPromptRef", function(opts)
|
||||
local bufname = vim.api.nvim_buf_get_name(0)
|
||||
if bufname == "" then
|
||||
print("Current buffer has no filename")
|
||||
return
|
||||
end
|
||||
local relative_path = vim.fn.fnamemodify(bufname, ":.")
|
||||
local ref = "@" .. relative_path
|
||||
if opts.line1 ~= opts.line2 then
|
||||
ref = ref .. "#L" .. opts.line1 .. "-" .. opts.line2
|
||||
elseif opts.line1 > 1 then
|
||||
ref = ref .. "#L" .. opts.line1
|
||||
end
|
||||
local amp_message = require("amp.message")
|
||||
amp_message.send_to_prompt(ref)
|
||||
end, {
|
||||
range = true,
|
||||
desc = "Add file reference (with selection) to Amp prompt",
|
||||
})
|
||||
|
||||
EOF
|
||||
|
||||
'';
|
||||
|
@ -1253,11 +1139,12 @@ in
|
|||
# custom
|
||||
yuck-vim
|
||||
nvim-parinfer
|
||||
amp-nvim
|
||||
# vim-processing
|
||||
] ++ lib.optionals pkgs.stdenv.isLinux [
|
||||
# Linux-only plugins
|
||||
vim-tidal # requires SuperCollider which is Linux-only
|
||||
] ++ lib.optionals (customPlugins.amp-nvim != null) [
|
||||
customPlugins.amp-nvim
|
||||
];
|
||||
withPython3 = true;
|
||||
extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ];
|
||||
|
@ -1265,4 +1152,3 @@ in
|
|||
};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
../profiles/wallabag
|
||||
../profiles/finance
|
||||
../profiles/sync/website
|
||||
../profiles/sync/music
|
||||
../profiles/grasp
|
||||
# ../profiles/archivebox
|
||||
# ../profiles/woodpecker-agent
|
||||
|
|
|
@ -23,15 +23,12 @@
|
|||
settings.PermitRootLogin = "no";
|
||||
};
|
||||
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.packages = with pkgs; [ via ];
|
||||
|
||||
# import profiling tools
|
||||
programs.systemtap.enable = true;
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.storageDriver = "btrfs";
|
||||
environment.systemPackages = with pkgs; [ docker-compose via ];
|
||||
environment.systemPackages = with pkgs; [ docker-compose ];
|
||||
|
||||
# Speed up boot by removing dependency on network
|
||||
systemd = {
|
||||
|
@ -72,7 +69,7 @@
|
|||
|
||||
# lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?)
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 22 4173 3000 ]; # allow ssh and vibekanban
|
||||
allowedTCPPorts = [ 22 4173 ]; # allow ssh
|
||||
allowedTCPPortRanges = [{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
|
|
|
@ -98,7 +98,6 @@ in {
|
|||
# tic-80
|
||||
ytfzf
|
||||
yt-dlp
|
||||
# autohide-tdrop
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.ffmpeg ];
|
||||
mossnet.gonic.enable = true;
|
||||
mossnet.gonic.settings = ''
|
||||
music-path /mnt/two/music/
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
# ardour
|
||||
# reaper
|
||||
# renoise
|
||||
bitwig-studio
|
||||
];
|
||||
|
||||
services.pulseaudio.enable = false;
|
||||
|
|
|
@ -5,19 +5,16 @@
|
|||
serviceConfig.Type = "oneshot";
|
||||
path = [
|
||||
pkgs.coreutils
|
||||
pkgs.openssh
|
||||
pkgs.gawk
|
||||
pkgs.rsync
|
||||
pkgs.beets
|
||||
];
|
||||
script = builtins.readFile ./get-music.sh;
|
||||
serviceConfig = {
|
||||
User = "anish";
|
||||
};
|
||||
};
|
||||
systemd.timers.get-music-sync = {
|
||||
systemd.timers.get-music-timer = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
partOf = [ "get-music-sync.service" ];
|
||||
timerConfig.OnCalendar = [ "hourly" ];
|
||||
timerConfig.OnCalendar = [ "daily" ];
|
||||
};
|
||||
}
|
||||
|
|
64
hosts/profiles/sync/music/get-music.sh
Executable file → Normal file
64
hosts/profiles/sync/music/get-music.sh
Executable file → Normal file
|
@ -1,61 +1,9 @@
|
|||
#!/usr/bin/env bash
|
||||
rsync -r --ignore-existing --log-file=/data/incoming/download-log hypercube@talos.feralhosting.com:private/transmission/data/* /data/incoming
|
||||
|
||||
set -euo pipefail
|
||||
# you need to set defaults for beets
|
||||
# if already imported -> Skip
|
||||
# Auto accept changes
|
||||
# also install it lmao
|
||||
#beet import /data/incoming
|
||||
|
||||
REMOTE_HOST="aynish@talos.feralhosting.com"
|
||||
REMOTE_PATH="private/transmission/data/"
|
||||
LOCAL_PATH="/mnt/two/incoming"
|
||||
TRACKING_FILE="/mnt/two/incoming/.downloaded_albums"
|
||||
LOG_FILE="/mnt/two/incoming/download-log"
|
||||
|
||||
# Create tracking file if it doesn't exist
|
||||
touch "$TRACKING_FILE"
|
||||
|
||||
# Get list of albums on remote server
|
||||
echo "$(date): Checking for new albums on seedbox..." >>"$LOG_FILE"
|
||||
REMOTE_ALBUMS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{$1=$2=$3=$4=""; sub(/^ +/, ""); print}' | grep -v '^\.') || true
|
||||
|
||||
if [ -z "$REMOTE_ALBUMS" ]; then
|
||||
echo "$(date): No albums found on remote server" >>"$LOG_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check each album against tracking file
|
||||
NEW_ALBUMS=""
|
||||
while IFS= read -r album; do
|
||||
if [ -n "$album" ] && ! grep -qF "$album" "$TRACKING_FILE"; then
|
||||
NEW_ALBUMS="$NEW_ALBUMS$album\n"
|
||||
echo "$(date): Found new album: $album" >>"$LOG_FILE"
|
||||
fi
|
||||
done <<<"$REMOTE_ALBUMS"
|
||||
|
||||
if [ -z "$NEW_ALBUMS" ]; then
|
||||
echo "$(date): No new albums to download" >>"$LOG_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Download new albums only
|
||||
echo "$(date): Starting download of new albums..." >>"$LOG_FILE"
|
||||
while IFS= read -r album; do
|
||||
if [ -n "$album" ]; then
|
||||
echo "$(date): Downloading $album" >>"$LOG_FILE"
|
||||
if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$album/" "$LOCAL_PATH/$album/"; then
|
||||
echo "$album" >>"$TRACKING_FILE"
|
||||
echo "$(date): Successfully downloaded $album" >>"$LOG_FILE"
|
||||
|
||||
# Import to beets
|
||||
echo "$(date): Importing $album to beets..." >>"$LOG_FILE"
|
||||
# Set umask to allow group read/write access
|
||||
umask 002
|
||||
if beet -p fetchart import -m -l /home/anish/music.log -q -g "$LOCAL_PATH/$album"; then
|
||||
echo "$(date): Successfully imported $album to beets" >>"$LOG_FILE"
|
||||
else
|
||||
echo "$(date): Failed to import $album to beets" >>"$LOG_FILE"
|
||||
fi
|
||||
else
|
||||
echo "$(date): Failed to download $album" >>"$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
done <<<"$(echo -e "$NEW_ALBUMS")"
|
||||
|
||||
echo "$(date): Music sync completed" >>"$LOG_FILE"
|
||||
|
|
Loading…
Reference in a new issue