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";
|
inputs.nixpkgs.follows = "unstable";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Tangled (atproto tools)
|
|
||||||
tangled = {
|
|
||||||
url = "git+https://tangled.org/@tangled.org/core";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Others
|
# Others
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
rust-overlay = {
|
rust-overlay = {
|
||||||
|
@ -79,10 +73,6 @@
|
||||||
};
|
};
|
||||||
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
|
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
|
||||||
tidalcycles.inputs.nixpkgs.follows = "unstable";
|
tidalcycles.inputs.nixpkgs.follows = "unstable";
|
||||||
autohide-tdrop = {
|
|
||||||
url = "github:I-Want-ToBelieve/autohide-tdrop";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# TODO hundred rabbits software
|
# TODO hundred rabbits software
|
||||||
# TODO needs secrets
|
# TODO needs secrets
|
||||||
# dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main";
|
# 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
|
outputs = { self, nixpkgs, unstable, nixos-hardware, home-manager, deploy-rs
|
||||||
, agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles
|
, agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles
|
||||||
, rust-overlay, vimwikicli, autohide-tdrop, darwin, nix-homebrew, homebrew-bundle
|
, rust-overlay, vimwikicli, darwin, nix-homebrew, homebrew-bundle
|
||||||
, homebrew-core, homebrew-cask, jovian, tangled, ... }@inputs:
|
, homebrew-core, homebrew-cask, jovian, ... }@inputs:
|
||||||
let
|
let
|
||||||
forAllSystems = nixpkgs.lib.genAttrs [
|
forAllSystems = nixpkgs.lib.genAttrs [
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
|
@ -111,7 +101,6 @@
|
||||||
};
|
};
|
||||||
vimwikiOverlay = final: prev: {
|
vimwikiOverlay = final: prev: {
|
||||||
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
|
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
|
||||||
autohide-tdrop = autohide-tdrop.packages.${prev.system}.default;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgsFor = forAllSystems (system:
|
nixpkgsFor = forAllSystems (system:
|
||||||
|
@ -127,7 +116,6 @@
|
||||||
"vcv-rack"
|
"vcv-rack"
|
||||||
"SunVox"
|
"SunVox"
|
||||||
"renoise"
|
"renoise"
|
||||||
"bitwig-studio-unwrapped"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
overlays = [
|
overlays = [
|
||||||
|
@ -153,7 +141,6 @@
|
||||||
# ];
|
# ];
|
||||||
overlays = [
|
overlays = [
|
||||||
agenix.overlays.default
|
agenix.overlays.default
|
||||||
tangled.overlays.default # atproto tools only on lite deployments
|
|
||||||
self.overlays.additions
|
self.overlays.additions
|
||||||
self.overlays.modifications
|
self.overlays.modifications
|
||||||
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
|
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
|
||||||
|
|
|
@ -301,12 +301,11 @@
|
||||||
nepl = "n repl '<nixpkgs>'";
|
nepl = "n repl '<nixpkgs>'";
|
||||||
srch = "ns nixpkgs";
|
srch = "ns nixpkgs";
|
||||||
orch = "ns override";
|
orch = "ns override";
|
||||||
# Impure for bitwig on linux, not sure what it's for in darwin
|
|
||||||
nrb = ''
|
nrb = ''
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD
|
cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD
|
||||||
else
|
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
|
fi
|
||||||
'';
|
'';
|
||||||
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
|
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
|
confirm_os_window_close 0
|
||||||
enable_audio_bell no
|
enable_audio_bell no
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Ctrl+V for paste
|
# Ctrl+V for paste
|
||||||
map ctrl+v paste_from_clipboard
|
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"
|
@import "config.rasi"
|
||||||
|
|
||||||
textbox {
|
|
||||||
vertical-align: 0.5;
|
|
||||||
horizontal-align: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
listview {
|
listview {
|
||||||
columns: 9;
|
columns: 4;
|
||||||
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";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textbox-icon {
|
textbox-icon {
|
||||||
str: "❇️ ";
|
str: "🎑";
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt {
|
prompt {
|
||||||
|
|
|
@ -16,7 +16,7 @@ super + Return
|
||||||
kitty
|
kitty
|
||||||
|
|
||||||
ctrl + super + Return
|
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
|
super + space
|
||||||
rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi
|
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
|
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
||||||
|
|
||||||
super + e
|
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
|
super + a
|
||||||
paste
|
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 {
|
my-lspsaga = pkgs.vimUtils.buildVimPlugin {
|
||||||
name = "lspsaga.nvim";
|
name = "lspsaga.nvim";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
|
@ -113,6 +103,7 @@ let
|
||||||
doInstallCheck = false;
|
doInstallCheck = false;
|
||||||
nvimRequireCheck = "none";
|
nvimRequireCheck = "none";
|
||||||
};
|
};
|
||||||
|
amp-nvim = import ./amp-plugin.nix { inherit pkgs; };
|
||||||
};
|
};
|
||||||
|
|
||||||
my-python-packages = python-packages: with python-packages; [
|
my-python-packages = python-packages: with python-packages; [
|
||||||
|
@ -233,7 +224,6 @@ in
|
||||||
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
||||||
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
||||||
nnoremap <leader>ft <cmd>Telescope tags<cr>
|
nnoremap <leader>ft <cmd>Telescope tags<cr>
|
||||||
nnoremap <leader>fr <cmd>lua KitaabRecent()<cr>
|
|
||||||
|
|
||||||
" exit normal mode in terminal
|
" exit normal mode in terminal
|
||||||
:tnoremap <C-n> <C-\><C-n>
|
:tnoremap <C-n> <C-\><C-n>
|
||||||
|
@ -327,10 +317,10 @@ in
|
||||||
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
|
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
|
||||||
|
|
||||||
" lsp commands
|
" lsp commands
|
||||||
nnoremap gd :lua vim.lsp.buf.definition()<CR>
|
nnoremap <leader>vgd :lua vim.lsp.buf.definition()<CR>
|
||||||
nnoremap gI :lua require('telescope.builtin').lsp_implementation()<CR>
|
nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||||
nnoremap gK :lua vim.lsp.buf.signature_help()<CR>
|
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
|
||||||
nnoremap gr :lua require('telescope.builtin').lsp_references()<CR>
|
nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR>
|
||||||
" nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
" nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
||||||
" nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
" nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
||||||
" nnoremap <leader>vca :lua vim.lsp.buf.code_action()<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>
|
" nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
|
||||||
" lspsaga stuff doesn't work
|
" lspsaga stuff doesn't work
|
||||||
nnoremap <leader>vd :Lspsaga peek_definition<CR>
|
nnoremap <leader>vd :Lspsaga peek_definition<CR>
|
||||||
nnoremap <leader>cr :Lspsaga rename<CR><CR>
|
nnoremap <leader>vrn :Lspsaga rename<CR><CR>
|
||||||
nnoremap K :Lspsaga hover_doc<CR>
|
nnoremap <leader>vh :Lspsaga hover_doc<CR>
|
||||||
nnoremap <leader>ca :Lspsaga code_action<CR>
|
nnoremap <leader>vca :Lspsaga code_action<CR>
|
||||||
nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
|
nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
|
||||||
nnoremap <leader>vs :Dasht<Space>
|
nnoremap <leader>vs :Dasht<Space>
|
||||||
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
|
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
|
||||||
|
@ -929,7 +919,7 @@ in
|
||||||
map("n", "<leader>zl", "<Cmd>ZkLinks<CR>", opts)
|
map("n", "<leader>zl", "<Cmd>ZkLinks<CR>", opts)
|
||||||
|
|
||||||
-- Preview a linked note.
|
-- 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.
|
-- Open the code actions for a visual selection.
|
||||||
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>", opts)
|
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-k>', '<Cmd>resize +2<CR>', {silent = true})
|
||||||
vim.keymap.set('n', '<M-S-l>', '<Cmd>vertical 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
|
EOF
|
||||||
|
|
||||||
'';
|
'';
|
||||||
|
@ -1253,11 +1139,12 @@ in
|
||||||
# custom
|
# custom
|
||||||
yuck-vim
|
yuck-vim
|
||||||
nvim-parinfer
|
nvim-parinfer
|
||||||
amp-nvim
|
|
||||||
# vim-processing
|
# vim-processing
|
||||||
] ++ lib.optionals pkgs.stdenv.isLinux [
|
] ++ lib.optionals pkgs.stdenv.isLinux [
|
||||||
# Linux-only plugins
|
# Linux-only plugins
|
||||||
vim-tidal # requires SuperCollider which is Linux-only
|
vim-tidal # requires SuperCollider which is Linux-only
|
||||||
|
] ++ lib.optionals (customPlugins.amp-nvim != null) [
|
||||||
|
customPlugins.amp-nvim
|
||||||
];
|
];
|
||||||
withPython3 = true;
|
withPython3 = true;
|
||||||
extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ];
|
extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ];
|
||||||
|
@ -1265,4 +1152,3 @@ in
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
../profiles/wallabag
|
../profiles/wallabag
|
||||||
../profiles/finance
|
../profiles/finance
|
||||||
../profiles/sync/website
|
../profiles/sync/website
|
||||||
../profiles/sync/music
|
|
||||||
../profiles/grasp
|
../profiles/grasp
|
||||||
# ../profiles/archivebox
|
# ../profiles/archivebox
|
||||||
# ../profiles/woodpecker-agent
|
# ../profiles/woodpecker-agent
|
||||||
|
|
|
@ -23,15 +23,12 @@
|
||||||
settings.PermitRootLogin = "no";
|
settings.PermitRootLogin = "no";
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.keyboard.qmk.enable = true;
|
|
||||||
services.udev.packages = with pkgs; [ via ];
|
|
||||||
|
|
||||||
# import profiling tools
|
# import profiling tools
|
||||||
programs.systemtap.enable = true;
|
programs.systemtap.enable = true;
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
virtualisation.docker.storageDriver = "btrfs";
|
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
|
# Speed up boot by removing dependency on network
|
||||||
systemd = {
|
systemd = {
|
||||||
|
@ -72,7 +69,7 @@
|
||||||
|
|
||||||
# lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?)
|
# lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?)
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
allowedTCPPorts = [ 22 4173 3000 ]; # allow ssh and vibekanban
|
allowedTCPPorts = [ 22 4173 ]; # allow ssh
|
||||||
allowedTCPPortRanges = [{
|
allowedTCPPortRanges = [{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
to = 1764;
|
to = 1764;
|
||||||
|
|
|
@ -98,7 +98,6 @@ in {
|
||||||
# tic-80
|
# tic-80
|
||||||
ytfzf
|
ytfzf
|
||||||
yt-dlp
|
yt-dlp
|
||||||
# autohide-tdrop
|
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
environment.systemPackages = [ pkgs.ffmpeg ];
|
|
||||||
mossnet.gonic.enable = true;
|
mossnet.gonic.enable = true;
|
||||||
mossnet.gonic.settings = ''
|
mossnet.gonic.settings = ''
|
||||||
music-path /mnt/two/music/
|
music-path /mnt/two/music/
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
# ardour
|
# ardour
|
||||||
# reaper
|
# reaper
|
||||||
# renoise
|
# renoise
|
||||||
bitwig-studio
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.pulseaudio.enable = false;
|
services.pulseaudio.enable = false;
|
||||||
|
|
|
@ -5,19 +5,16 @@
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
path = [
|
path = [
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
pkgs.openssh
|
|
||||||
pkgs.gawk
|
|
||||||
pkgs.rsync
|
pkgs.rsync
|
||||||
pkgs.beets
|
|
||||||
];
|
];
|
||||||
script = builtins.readFile ./get-music.sh;
|
script = builtins.readFile ./get-music.sh;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
User = "anish";
|
User = "anish";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.timers.get-music-sync = {
|
systemd.timers.get-music-timer = {
|
||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
partOf = [ "get-music-sync.service" ];
|
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
|
#!/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