Compare commits
No commits in common. "5cf713397661606f78ff44ec885f069f3a4b5fc6" and "f920de0beab9a7b95dc12677058c5e3aaea45a56" have entirely different histories.
5cf7133976
...
f920de0bea
|
@ -32,17 +32,11 @@
|
||||||
vim-sleuth
|
vim-sleuth
|
||||||
nvim-lspconfig
|
nvim-lspconfig
|
||||||
rust-tools-nvim
|
rust-tools-nvim
|
||||||
tabby-nvim
|
|
||||||
nvim-lint
|
nvim-lint
|
||||||
nvim-cmp
|
nvim-cmp
|
||||||
nvim-web-devicons
|
|
||||||
cmp-nvim-lsp
|
cmp-nvim-lsp
|
||||||
lsp-status-nvim
|
lsp-status-nvim
|
||||||
#flatten-nvim
|
|
||||||
telescope-nvim
|
telescope-nvim
|
||||||
telescope-frecency-nvim
|
|
||||||
telescope-file-browser-nvim
|
|
||||||
telescope-fzy-native-nvim
|
|
||||||
nvim-treesitter.withAllGrammars
|
nvim-treesitter.withAllGrammars
|
||||||
sweetie-nvim
|
sweetie-nvim
|
||||||
vim-nix
|
vim-nix
|
||||||
|
@ -53,26 +47,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.nvim-server = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
description = "Neovim Server";
|
|
||||||
script = ''
|
|
||||||
export PATH="/run/current-system/sw/bin:/run/wrappers/bin:$PATH"
|
|
||||||
nvim --listen /tmp/nvim.sock --headless
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
User = "audrey";
|
|
||||||
Type = "simple";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
environment = {
|
|
||||||
LOG_CHANNEL_ID = "532689319350108160";
|
|
||||||
CHANNEL_COUNT = "4";
|
|
||||||
DELAY_SECONDS = "5";
|
|
||||||
DEBUG = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}) (lib.mkIf (pkgs.stdenv.buildPlatform != pkgs.stdenv.hostPlatform) {
|
}) (lib.mkIf (pkgs.stdenv.buildPlatform != pkgs.stdenv.hostPlatform) {
|
||||||
programs.vim = {
|
programs.vim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
{
|
{
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
fonts.packages = builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
xserver.enable = true;
|
xserver.enable = true;
|
||||||
|
|
||||||
|
@ -37,7 +35,6 @@
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
wireshark.enable = true;
|
wireshark.enable = true;
|
||||||
wireshark.package = pkgs.wireshark;
|
wireshark.package = pkgs.wireshark;
|
||||||
foot.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
@ -47,8 +44,7 @@
|
||||||
signal-desktop
|
signal-desktop
|
||||||
slack
|
slack
|
||||||
obs-studio
|
obs-studio
|
||||||
|
foot
|
||||||
dwarfdump
|
|
||||||
|
|
||||||
kdePackages.plasma-thunderbolt
|
kdePackages.plasma-thunderbolt
|
||||||
];
|
];
|
||||||
|
|
|
@ -52,21 +52,7 @@ in {
|
||||||
virt-manager.enable = true;
|
virt-manager.enable = true;
|
||||||
nix-ld = {
|
nix-ld = {
|
||||||
enable = true;
|
enable = true;
|
||||||
libraries = with pkgs; [
|
libraries = [];
|
||||||
libGL
|
|
||||||
fontconfig
|
|
||||||
libxkbcommon
|
|
||||||
freetype
|
|
||||||
dbus
|
|
||||||
zlib
|
|
||||||
wayland
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libxcb
|
|
||||||
xorg.xcbutilimage
|
|
||||||
xorg.xcbutilkeysyms
|
|
||||||
xorg.xcbutilrenderutil
|
|
||||||
xorg.xcbutilwm
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -97,6 +83,4 @@ in {
|
||||||
|
|
||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
services.hardware.bolt.enable = true;
|
services.hardware.bolt.enable = true;
|
||||||
|
|
||||||
services.resolved.enable = true;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,12 +12,11 @@ in {
|
||||||
config = {
|
config = {
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
nix.settings.extra-experimental-features = "nix-command flakes pipe-operator";
|
nix.settings.extra-experimental-features = "nix-command flakes repl-flake";
|
||||||
nix.settings.trusted-users = [ "audrey" ];
|
nix.settings.trusted-users = [ "audrey" ];
|
||||||
nix.settings.max-jobs = 1;
|
nix.settings.max-jobs = 1;
|
||||||
nix.settings.cores = 0;
|
nix.settings.cores = 0;
|
||||||
nix.settings.secret-key-files = [ "/var/lib/nix/binary-cache-key" ];
|
nix.settings.secret-key-files = [ "/var/lib/nix/binary-cache-key" ];
|
||||||
nix.settings.trusted-public-keys = builtins.filter (f: f != "") <| lib.strings.splitString "\n" <| builtins.readFile ./keys/nix;
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
@ -33,7 +32,7 @@ in {
|
||||||
description = "Audrey Dutcher";
|
description = "Audrey Dutcher";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" "docker" ];
|
extraGroups = [ "wheel" "docker" ];
|
||||||
openssh.authorizedKeys.keyFiles = [ ./keys/ssh ];
|
openssh.authorizedKeys.keyFiles = [ ./dotfiles/authorized_keys ];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
@ -43,8 +42,6 @@ in {
|
||||||
curl
|
curl
|
||||||
btop
|
btop
|
||||||
file
|
file
|
||||||
nettools
|
|
||||||
psmisc
|
|
||||||
patchelf
|
patchelf
|
||||||
gdb
|
gdb
|
||||||
p7zip
|
p7zip
|
||||||
|
@ -53,9 +50,6 @@ in {
|
||||||
binwalk
|
binwalk
|
||||||
jq
|
jq
|
||||||
nix-index
|
nix-index
|
||||||
openssl
|
|
||||||
wireguard-tools
|
|
||||||
cached-nix-shell
|
|
||||||
(python3.withPackages (p: lib.concatMap (pl: pl p) rhelmot.globalPythonPackages))
|
(python3.withPackages (p: lib.concatMap (pl: pl p) rhelmot.globalPythonPackages))
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -68,8 +62,6 @@ in {
|
||||||
nclib
|
nclib
|
||||||
pyyaml
|
pyyaml
|
||||||
snakeviz
|
snakeviz
|
||||||
requests
|
|
||||||
pysocks
|
|
||||||
]) ];
|
]) ];
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
@ -84,9 +76,6 @@ in {
|
||||||
'' + builtins.readFile ./dotfiles/zsh-prompt.sh;
|
'' + builtins.readFile ./dotfiles/zsh-prompt.sh;
|
||||||
shellInit = builtins.readFile ./dotfiles/zsh-init.sh;
|
shellInit = builtins.readFile ./dotfiles/zsh-init.sh;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ls = null;
|
|
||||||
ll = null;
|
|
||||||
l = null;
|
|
||||||
grep = "grep --color=auto";
|
grep = "grep --color=auto";
|
||||||
egrep = "egrep --color=auto";
|
egrep = "egrep --color=auto";
|
||||||
objdump = "objdump -M intel";
|
objdump = "objdump -M intel";
|
||||||
|
@ -118,8 +107,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc.zinputrc.text = lib.mkForce (builtins.readFile ./dotfiles/zsh-input.sh);
|
|
||||||
|
|
||||||
environment.etc."gdb/gdbinit".source = ./dotfiles/gdb-init.gdb;
|
environment.etc."gdb/gdbinit".source = ./dotfiles/gdb-init.gdb;
|
||||||
environment.etc."venv-default.txt".source = ./dotfiles/venv-default.txt;
|
environment.etc."venv-default.txt".source = ./dotfiles/venv-default.txt;
|
||||||
|
|
||||||
|
@ -159,7 +146,7 @@ in {
|
||||||
daily = 7;
|
daily = 7;
|
||||||
hourly = 24;
|
hourly = 24;
|
||||||
};
|
};
|
||||||
datasets."system/var/lib_docker" = {
|
datasets."system/var/docker" = {
|
||||||
autosnap = false;
|
autosnap = false;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
|
@ -178,7 +165,7 @@ in {
|
||||||
sshKey = "/var/lib/syncoid/.ssh/id_ed25519";
|
sshKey = "/var/lib/syncoid/.ssh/id_ed25519";
|
||||||
commands."system" = {
|
commands."system" = {
|
||||||
source = "system";
|
source = "system";
|
||||||
target = "buser@home.rhelmot.io:main/backup/${config.networking.hostName}/system";
|
target = "backup@home.rhelmot.io:main/backup/${config.networking.hostName}/system";
|
||||||
# xeni note - option w is weeeeeeeird but the only consequnce is a lack of encryption
|
# xeni note - option w is weeeeeeeird but the only consequnce is a lack of encryption
|
||||||
#sendOptions = "w";
|
#sendOptions = "w";
|
||||||
recursive = true;
|
recursive = true;
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
--local vim = require("vim")
|
|
||||||
-- https://github.com/neovim/neovim/issues/23725#issuecomment-1561364086
|
-- https://github.com/neovim/neovim/issues/23725#issuecomment-1561364086
|
||||||
local ok, wf = pcall(require, "vim.lsp._watchfiles")
|
local ok, wf = pcall(require, "vim.lsp._watchfiles")
|
||||||
if ok then
|
if ok then
|
||||||
|
@ -17,74 +16,7 @@ require('telescope').setup({
|
||||||
defaults = {
|
defaults = {
|
||||||
sorting_strategy = "ascending",
|
sorting_strategy = "ascending",
|
||||||
},
|
},
|
||||||
extensions = {
|
|
||||||
file_browser = {
|
|
||||||
hijack_netrw = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
require("telescope").load_extension("file_browser")
|
|
||||||
require("telescope").load_extension("frecency")
|
|
||||||
require('telescope').load_extension('fzy_native')
|
|
||||||
|
|
||||||
require("telescope.pickers.layout_strategies").buffer_window = function(self)
|
|
||||||
local layout = require("telescope.pickers.window").get_initial_window_options(self)
|
|
||||||
local prompt = layout.prompt
|
|
||||||
local results = layout.results
|
|
||||||
local preview = layout.preview
|
|
||||||
local config = self.layout_config
|
|
||||||
local padding = self.window.border and 2 or 0
|
|
||||||
local width = vim.api.nvim_win_get_width(self.original_win_id)
|
|
||||||
local height = vim.api.nvim_win_get_height(self.original_win_id)
|
|
||||||
local pos = vim.api.nvim_win_get_position(self.original_win_id)
|
|
||||||
local wline = pos[1] + 1
|
|
||||||
local wcol = pos[2] + 1
|
|
||||||
|
|
||||||
-- Height
|
|
||||||
prompt.height = 1
|
|
||||||
preview.height = self.previewer and math.floor(height * 0.4) or 0
|
|
||||||
results.height = height
|
|
||||||
- padding
|
|
||||||
- (prompt.height + padding)
|
|
||||||
- (self.previewer and (preview.height + padding) or 0)
|
|
||||||
|
|
||||||
-- Line
|
|
||||||
local rows = {}
|
|
||||||
local mirror = config.mirror == true
|
|
||||||
local top_prompt = config.prompt_position == "top"
|
|
||||||
if mirror and top_prompt then
|
|
||||||
rows = { prompt, results, preview }
|
|
||||||
elseif mirror and not top_prompt then
|
|
||||||
rows = { results, prompt, preview }
|
|
||||||
elseif not mirror and top_prompt then
|
|
||||||
rows = { preview, prompt, results }
|
|
||||||
elseif not mirror and not top_prompt then
|
|
||||||
rows = { preview, results, prompt }
|
|
||||||
end
|
|
||||||
local next_line = wline + padding / 2
|
|
||||||
for k, v in pairs(rows) do
|
|
||||||
if v.height ~= 0 then
|
|
||||||
v.line = next_line
|
|
||||||
next_line = v.line + padding + v.height
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Width
|
|
||||||
prompt.width = width - padding
|
|
||||||
results.width = prompt.width
|
|
||||||
preview.width = prompt.width
|
|
||||||
|
|
||||||
-- Col
|
|
||||||
prompt.col = wcol + padding / 2
|
|
||||||
results.col = prompt.col
|
|
||||||
preview.col = prompt.col
|
|
||||||
|
|
||||||
if not self.previewer then
|
|
||||||
layout.preview = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
return layout
|
|
||||||
end
|
|
||||||
|
|
||||||
require("nvim-treesitter.configs").setup {
|
require("nvim-treesitter.configs").setup {
|
||||||
auto_install = false,
|
auto_install = false,
|
||||||
|
@ -198,7 +130,6 @@ vim.keymap.set('n', '[e', function() vim.diagnostic.goto_prev{float=false, sever
|
||||||
vim.keymap.set('n', ']e', function() vim.diagnostic.goto_next{float=false, severity={min=vim.diagnostic.severity.WARN}} end, nil)
|
vim.keymap.set('n', ']e', function() vim.diagnostic.goto_next{float=false, severity={min=vim.diagnostic.severity.WARN}} end, nil)
|
||||||
vim.keymap.set('n', 'gf', tb.live_grep, nil)
|
vim.keymap.set('n', 'gf', tb.live_grep, nil)
|
||||||
vim.keymap.set('n', 'gn', tb.find_files, nil)
|
vim.keymap.set('n', 'gn', tb.find_files, nil)
|
||||||
vim.keymap.set('n', 'gb', tb.buffers, nil)
|
|
||||||
vim.keymap.set('n', 'gr', tb.resume, nil)
|
vim.keymap.set('n', 'gr', tb.resume, nil)
|
||||||
|
|
||||||
local pickers = require("telescope.pickers")
|
local pickers = require("telescope.pickers")
|
||||||
|
@ -447,7 +378,7 @@ lspconfig.lua_ls.setup{
|
||||||
-- rust = {},
|
-- rust = {},
|
||||||
--}
|
--}
|
||||||
|
|
||||||
-- LSP Diagnostics Options Setup
|
-- LSP Diagnostics Options Setup
|
||||||
local sign = function(opts)
|
local sign = function(opts)
|
||||||
vim.fn.sign_define(opts.name, {
|
vim.fn.sign_define(opts.name, {
|
||||||
texthl = opts.name,
|
texthl = opts.name,
|
||||||
|
@ -512,8 +443,7 @@ end
|
||||||
vim.g.sweetie = {
|
vim.g.sweetie = {
|
||||||
palette = {
|
palette = {
|
||||||
dark = {
|
dark = {
|
||||||
bg_alt = "#151523",
|
bg_alt = "#151523"
|
||||||
bg_hl = "#505040",
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
overrides = {
|
overrides = {
|
||||||
|
@ -528,265 +458,3 @@ if vim.env.TERM == "tmux" or vim.env.TERM == "xterm" then
|
||||||
else
|
else
|
||||||
vim.cmd.colorscheme("sweetie")
|
vim.cmd.colorscheme("sweetie")
|
||||||
end
|
end
|
||||||
|
|
||||||
local tabtheme = {
|
|
||||||
fill = 'TabLineFill',
|
|
||||||
-- Also you can do this: fill = { fg='#f2e9de', bg='#907aa9', style='italic' }
|
|
||||||
head = 'TabLine',
|
|
||||||
current_tab = 'TabLineSel',
|
|
||||||
tab = 'TabLine',
|
|
||||||
win = 'TabLine',
|
|
||||||
tail = 'TabLine',
|
|
||||||
}
|
|
||||||
require('tabby').setup({
|
|
||||||
line = function(line)
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
{ ' ', hl = tabtheme.head },
|
|
||||||
line.sep('', tabtheme.head, tabtheme.fill),
|
|
||||||
},
|
|
||||||
line.tabs().foreach(function(tab)
|
|
||||||
local hl = tab.is_current() and tabtheme.current_tab or tabtheme.tab
|
|
||||||
local name = tab.name()
|
|
||||||
if vim.t[tab.id].zoomed ~= nil then
|
|
||||||
name = "[zoom] " .. name
|
|
||||||
end
|
|
||||||
return {
|
|
||||||
line.sep('', hl, tabtheme.fill),
|
|
||||||
tab.is_current() and '' or '',
|
|
||||||
tab.number(),
|
|
||||||
name,
|
|
||||||
--tab.close_btn(''),
|
|
||||||
line.sep('', hl, tabtheme.fill),
|
|
||||||
hl = hl,
|
|
||||||
margin = ' ',
|
|
||||||
}
|
|
||||||
end),
|
|
||||||
--line.spacer(),
|
|
||||||
--line.wins_in_tab(line.api.get_current_tab()).foreach(function(win)
|
|
||||||
-- return {
|
|
||||||
-- line.sep('', tabtheme.win, tabtheme.fill),
|
|
||||||
-- win.is_current() and '' or '',
|
|
||||||
-- win.buf_name(),
|
|
||||||
-- line.sep('', tabtheme.win, tabtheme.fill),
|
|
||||||
-- hl = tabtheme.win,
|
|
||||||
-- margin = ' ',
|
|
||||||
-- }
|
|
||||||
--end),
|
|
||||||
--{
|
|
||||||
-- line.sep('', tabtheme.tail, tabtheme.fill),
|
|
||||||
-- { ' ', hl = tabtheme.tail },
|
|
||||||
--},
|
|
||||||
hl = tabtheme.fill,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
-- option = {}, -- setup modules' option,
|
|
||||||
})
|
|
||||||
|
|
||||||
local splashPicker = pickers.new({layout_strategy="buffer_window", initial_mode="normal"}, {
|
|
||||||
prompt_title = "New Tab",
|
|
||||||
finder = finders.new_table {
|
|
||||||
results = {
|
|
||||||
{
|
|
||||||
title = "Terminal",
|
|
||||||
ordinal = "0",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":term")
|
|
||||||
vim.cmd('startinsert')
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "Recent Files",
|
|
||||||
ordinal = "1",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":Telescope frecency")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "File Browser (flat)",
|
|
||||||
ordinal = "2",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":Telescope find_files")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "File Browser (grep)",
|
|
||||||
ordinal = "3",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":Telescope live_grep")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "File Browser (hierarchy)",
|
|
||||||
ordinal = "4",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":e .")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "Change Workspace",
|
|
||||||
ordinal = "5",
|
|
||||||
callback = function()
|
|
||||||
tb.find_files({find_command = {"fd", "--type", "d", "--no-ignore-vcs", ".", "/home/audrey"}, attach_mappings = function(prompt_bufnr, map)
|
|
||||||
actions.select_default:replace(function()
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
local selection = action_state.get_selected_entry()
|
|
||||||
vim.defer_fn(function()
|
|
||||||
-- uhhhhhh doesn't work. isn't there an api function which will put you in some other buffer's context?
|
|
||||||
vim.cmd.lcd(selection[0])
|
|
||||||
splash()
|
|
||||||
end, 1)
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
end})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title = "Scratch File",
|
|
||||||
ordinal = "6",
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":enew")
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
entry_maker = function(entry)
|
|
||||||
return make_entry.set_default_entry_mt({
|
|
||||||
value = entry,
|
|
||||||
text = entry.title,
|
|
||||||
display = entry.title,
|
|
||||||
ordinal = entry.ordinal,
|
|
||||||
}, {})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
sorter = conf.generic_sorter({}),
|
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
|
||||||
actions.select_default:replace(function()
|
|
||||||
actions.close(prompt_bufnr)
|
|
||||||
local entry = action_state.get_selected_entry()
|
|
||||||
entry.value.callback()
|
|
||||||
end)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
splash = function()
|
|
||||||
splashPicker:find()
|
|
||||||
end
|
|
||||||
|
|
||||||
newsplash = function(pwd)
|
|
||||||
local wins = vim.api.nvim_tabpage_list_wins(0)
|
|
||||||
if #wins ~= 1 or vim.api.nvim_buf_get_name(vim.api.nvim_win_get_buf(wins[1])) ~= "" then
|
|
||||||
vim.cmd(":tabnew")
|
|
||||||
end
|
|
||||||
vim.defer_fn(function()
|
|
||||||
if pwd ~= nil then
|
|
||||||
vim.cmd.lcd(pwd)
|
|
||||||
end
|
|
||||||
splash()
|
|
||||||
end, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
newfiles = function(pwd, files)
|
|
||||||
local wins = vim.api.nvim_tabpage_list_wins(0)
|
|
||||||
if #wins ~= 1 or vim.api.nvim_buf_get_name(vim.api.nvim_win_get_buf(wins[1])) ~= "" then
|
|
||||||
vim.cmd(":tabnew")
|
|
||||||
end
|
|
||||||
vim.defer_fn(function()
|
|
||||||
if pwd ~= nil then
|
|
||||||
vim.cmd.lcd(pwd)
|
|
||||||
end
|
|
||||||
vim.cmd.arglocal(files)
|
|
||||||
end, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.opt.splitbelow = true;
|
|
||||||
vim.opt.splitright = true;
|
|
||||||
|
|
||||||
if vim.env.TERM ~= "tmux" and vim.env.TERM ~= "tmux-256color" then
|
|
||||||
--require("flatten").setup({
|
|
||||||
--})
|
|
||||||
|
|
||||||
vim.opt.guicursor = "n-v-sm:block,i-ci-ve-c-t:ver25,r-cr-o:hor20"
|
|
||||||
-- NONSENSE
|
|
||||||
local opts = { noremap = true, }
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a><C-a>', "<C-a>", opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>n', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
vim.cmd(":tabnext")
|
|
||||||
else
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>p', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
vim.cmd(":tabNext")
|
|
||||||
else
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>c', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
vim.cmd(":tabnew")
|
|
||||||
vim.defer_fn(splash, 1)
|
|
||||||
else
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>"', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
vim.cmd(":split")
|
|
||||||
vim.defer_fn(splash, 1)
|
|
||||||
else
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>%', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
vim.cmd(":vsplit")
|
|
||||||
vim.defer_fn(splash, 1)
|
|
||||||
else
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>z', function()
|
|
||||||
if vim.t.zoomed == nil then
|
|
||||||
local buf = vim.api.nvim_get_current_buf()
|
|
||||||
local win = vim.api.nvim_get_current_win()
|
|
||||||
vim.cmd(":tabnew")
|
|
||||||
vim.api.nvim_win_set_buf(0, buf)
|
|
||||||
vim.t.zoomed = win
|
|
||||||
else
|
|
||||||
local win = vim.t.zoomed
|
|
||||||
vim.cmd(":tabclose")
|
|
||||||
vim.api.nvim_set_current_win(win)
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a>[', '<C-\\><C-n>', opts)
|
|
||||||
vim.keymap.set({'i', 'n', 't'}, '<C-a><PageUp>', '<C-\\><C-n><PageUp>', opts)
|
|
||||||
--vim.keymap.set({'i', 'n', 't'}, '<C-a>]', function() vim.api.nvim_paste() end , opts)
|
|
||||||
|
|
||||||
-- https://neovim.io/doc/user/terminal.html#terminal-osc7
|
|
||||||
vim.api.nvim_create_autocmd({ 'TermRequest' }, {
|
|
||||||
desc = 'Handles OSC 7 dir change requests',
|
|
||||||
callback = function(ev)
|
|
||||||
if string.sub(ev.data.sequence, 1, 4) == '\x1b]7;' then
|
|
||||||
local dir = string.gsub(ev.data.sequence, '\x1b]7;file://[^/]*', '')
|
|
||||||
if vim.fn.isdirectory(dir) == 0 then
|
|
||||||
--vim.notify('invalid dir: '..dir)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
--vim.api.nvim_buf_set_var(ev.buf, 'osc7_dir', dir)
|
|
||||||
--if vim.o.autochdir and vim.api.nvim_get_current_buf() == ev.buf then
|
|
||||||
vim.cmd.lcd(dir)
|
|
||||||
--end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
if vim.env.IN_VIM == nil then
|
|
||||||
vim.env.IN_VIM = "1"
|
|
||||||
--if vim.fn.argv()[1] == nil then
|
|
||||||
-- vim.defer_fn(splash, 1)
|
|
||||||
--end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,30 +1,24 @@
|
||||||
set nocompatible
|
set nocompatible
|
||||||
set nu
|
set nu
|
||||||
set ttimeout
|
set ttimeout
|
||||||
set ttimeoutlen=0
|
set ttimeoutlen=0
|
||||||
set mouse=
|
set mouse=
|
||||||
set clipboard=unnamedplus
|
set clipboard=unnamedplus
|
||||||
set ruler
|
set ruler
|
||||||
set signcolumn=yes
|
set signcolumn=yes
|
||||||
set termguicolors
|
set termguicolors
|
||||||
autocmd!
|
autocmd!
|
||||||
if $TERM != "xterm" && $TERM != "tmux"
|
if $TERM != "xterm" && $TERM != "tmux"
|
||||||
inoremap <C-h> <C-\><C-n>:TmuxNavigateLeft<cr>
|
inoremap <C-h> <ESC>:TmuxNavigateLeft<cr>
|
||||||
inoremap <C-j> <C-\><C-n>:TmuxNavigateDown<cr>
|
inoremap <C-j> <ESC>:TmuxNavigateDown<cr>
|
||||||
inoremap <C-k> <C-\><C-n>:TmuxNavigateUp<cr>
|
inoremap <C-k> <ESC>:TmuxNavigateUp<cr>
|
||||||
inoremap <C-l> <C-\><C-n>:TmuxNavigateRight<cr>
|
inoremap <C-l> <ESC>:TmuxNavigateRight<cr>
|
||||||
tnoremap <C-h> <C-\><C-o>:TmuxNavigateLeft<cr>
|
endif
|
||||||
tnoremap <C-j> <C-\><C-o>:TmuxNavigateDown<cr>
|
" Disable tmux navigator when zooming the Vim pane
|
||||||
tnoremap <C-k> <C-\><C-o>:TmuxNavigateUp<cr>
|
let g:tmux_navigator_disable_when_zoomed = 1
|
||||||
tnoremap <C-l> <C-\><C-o>:TmuxNavigateRight<cr>
|
|
||||||
endif
|
filetype plugin on
|
||||||
" Disable tmux navigator when zooming the Vim pane
|
syntax on
|
||||||
let g:tmux_navigator_disable_when_zoomed = 1
|
|
||||||
|
nnoremap <CR> :noh<CR><CR>
|
||||||
filetype plugin on
|
|
||||||
syntax on
|
|
||||||
|
|
||||||
nnoremap <CR> :noh<CR><CR>
|
|
||||||
nnoremap * :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>
|
nnoremap * :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>
|
||||||
nnoremap q: <nop>
|
|
||||||
nnoremap <C-c> a
|
|
||||||
|
|
|
@ -3,6 +3,65 @@
|
||||||
setopt appendhistory notify
|
setopt appendhistory notify
|
||||||
unsetopt beep nomatch
|
unsetopt beep nomatch
|
||||||
|
|
||||||
|
#
|
||||||
|
# key binding configuration
|
||||||
|
#
|
||||||
|
|
||||||
|
# create a zkbd compatible hash
|
||||||
|
# to add other keys to this hash, see: man 5 terminfo
|
||||||
|
typeset -A key
|
||||||
|
|
||||||
|
key[Home]=${terminfo[khome]}
|
||||||
|
key[End]=${terminfo[kend]}
|
||||||
|
key[Insert]=${terminfo[kich1]}
|
||||||
|
key[Delete]=${terminfo[kdch1]}
|
||||||
|
key[Up]=${terminfo[kcuu1]}
|
||||||
|
key[Down]=${terminfo[kcud1]}
|
||||||
|
key[Left]=${terminfo[kcub1]}
|
||||||
|
key[Right]=${terminfo[kcuf1]}
|
||||||
|
key[PageUp]=${terminfo[kpp]}
|
||||||
|
key[PageDown]=${terminfo[knp]}
|
||||||
|
key[Backspace]=${terminfo[kbs]}
|
||||||
|
|
||||||
|
# setup keybindings!
|
||||||
|
bindkey -v
|
||||||
|
export KEYTIMEOUT=1
|
||||||
|
|
||||||
|
[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line
|
||||||
|
[[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line
|
||||||
|
[[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode
|
||||||
|
[[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" backward-delete-char
|
||||||
|
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history
|
||||||
|
[[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history
|
||||||
|
[[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char
|
||||||
|
[[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char
|
||||||
|
[[ -n "${key[Backspace]}" ]] && bindkey "${key[Backspace]}" backward-delete-char
|
||||||
|
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" up-history
|
||||||
|
[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" down-history
|
||||||
|
|
||||||
|
bindkey '^P' up-history
|
||||||
|
bindkey '^N' down-history
|
||||||
|
bindkey '^h' backward-delete-char
|
||||||
|
bindkey '^w' backward-kill-word
|
||||||
|
bindkey '^r' history-incremental-search-backward
|
||||||
|
bindkey -a '/' history-incremental-search-backward
|
||||||
|
bindkey "^[[1;5C" forward-word
|
||||||
|
bindkey "^[[1;5D" backward-word
|
||||||
|
|
||||||
|
# Finally, make sure the terminal is in application mode, when zle is
|
||||||
|
# active. Only then are the values from $terminfo valid.
|
||||||
|
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||||
|
function enter-editing-mode () {
|
||||||
|
printf '%s' "${terminfo[smkx]}"
|
||||||
|
}
|
||||||
|
function exit-editing-mode () {
|
||||||
|
printf '%s' "${terminfo[rmkx]}"
|
||||||
|
}
|
||||||
|
zle -N zle-line-init enter-editing-mode
|
||||||
|
zle -N zle-line-finish exit-editing-mode
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Aliases
|
# Aliases
|
||||||
#
|
#
|
||||||
|
@ -70,35 +129,6 @@ function watchdiff() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# terminal integration
|
|
||||||
# https://codeberg.org/dnkl/foot/wiki#zsh
|
|
||||||
|
|
||||||
function osc7-pwd() {
|
|
||||||
emulate -L zsh # also sets localoptions for us
|
|
||||||
setopt extendedglob
|
|
||||||
local LC_ALL=C
|
|
||||||
printf '\e]7;file://%s%s\e\' $HOST ${PWD//(#m)([^@-Za-z&-;_~])/%${(l:2::0:)$(([##16]#MATCH))}}
|
|
||||||
}
|
|
||||||
|
|
||||||
function chpwd-osc7-pwd() {
|
|
||||||
(( ZSH_SUBSHELL )) || osc7-pwd
|
|
||||||
}
|
|
||||||
function precmd-osc133-marker() {
|
|
||||||
if ! builtin zle; then
|
|
||||||
print -n "\e]133;D\e\\"
|
|
||||||
fi
|
|
||||||
print -Pn "\e]133;A\e\\"
|
|
||||||
}
|
|
||||||
function preexec-osc133-marker() {
|
|
||||||
print -Pn "\e]133;B\e\\"
|
|
||||||
print -n "\e]133;C\e\\"
|
|
||||||
}
|
|
||||||
|
|
||||||
autoload -Uz add-zsh-hook
|
|
||||||
add-zsh-hook -Uz chpwd chpwd-osc7-pwd
|
|
||||||
add-zsh-hook -Uz precmd precmd-osc133-marker
|
|
||||||
add-zsh-hook -Uz preexec preexec-osc133-marker
|
|
||||||
|
|
||||||
# virtualenv integration
|
# virtualenv integration
|
||||||
|
|
||||||
export WORKON_HOME=$HOME/.virtualenvs
|
export WORKON_HOME=$HOME/.virtualenvs
|
||||||
|
@ -125,37 +155,3 @@ export npm_config_prefix=~/.local
|
||||||
if [ -e ~/.site_aliases.sh ]; then
|
if [ -e ~/.site_aliases.sh ]; then
|
||||||
source ~/.site_aliases.sh
|
source ~/.site_aliases.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Extremely funny
|
|
||||||
if [[ -z "$TMUX" ]] && false; then
|
|
||||||
if [[ -n "$IN_VIM" ]]; then
|
|
||||||
vim() {
|
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
# plain vim. get splashed.
|
|
||||||
command vim --server /tmp/nvim.sock --remote-send "<C-\\><C-n>:split<CR><C-w>k:resize 1<CR><C-w>j:lcd $PWD<CR>:lua splash()<CR>"
|
|
||||||
elif [[ "$1" = -* ]]; then
|
|
||||||
# some sort of flag. do not touch
|
|
||||||
command vim "$@"
|
|
||||||
else
|
|
||||||
# vim with files. shove all of these into the buffer list, do a split, minimize the original window, and advance the new window in the buflist
|
|
||||||
command vim --server /tmp/nvim.sock --remote-send "<C-\\><C-n>:split<CR><C-w>k:resize 1<CR><C-w>j:lcd $PWD<CR>:arglocal $*<CR>"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
else
|
|
||||||
# not in vim. connect that bad boy
|
|
||||||
vim() {
|
|
||||||
if [[ -z "$1" ]]; then
|
|
||||||
# plain vim. connect
|
|
||||||
command vim --server /tmp/nvim.sock --remote-send "<C-\\><C-n>:lua newsplash(\"$PWD\")<CR>"
|
|
||||||
command vim --server /tmp/nvim.sock --remote-ui
|
|
||||||
elif [[ "$1" = -* ]]; then
|
|
||||||
# some sort of flag. do not touch
|
|
||||||
command vim "$@"
|
|
||||||
else
|
|
||||||
# vim with files. open them all in a new tab
|
|
||||||
command vim --server /tmp/nvim.sock --remote-send "<C-\\><C-n>:lua newfiles(\"$PWD\", \"$*\")<CR>"
|
|
||||||
command vim --server /tmp/nvim.sock --remote-ui
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
# vim: ft=zsh
|
|
||||||
|
|
||||||
#
|
|
||||||
# key binding configuration
|
|
||||||
#
|
|
||||||
|
|
||||||
# create a zkbd compatible hash
|
|
||||||
# to add other keys to this hash, see: man 5 terminfo
|
|
||||||
typeset -A key
|
|
||||||
|
|
||||||
key[Home]=${terminfo[khome]}
|
|
||||||
key[End]=${terminfo[kend]}
|
|
||||||
key[Insert]=${terminfo[kich1]}
|
|
||||||
key[Delete]=${terminfo[kdch1]}
|
|
||||||
key[Up]=${terminfo[kcuu1]}
|
|
||||||
key[Down]=${terminfo[kcud1]}
|
|
||||||
key[Left]=${terminfo[kcub1]}
|
|
||||||
key[Right]=${terminfo[kcuf1]}
|
|
||||||
key[PageUp]=${terminfo[kpp]}
|
|
||||||
key[PageDown]=${terminfo[knp]}
|
|
||||||
key[Backspace]=${terminfo[kbs]}
|
|
||||||
key[CtrlLeft]=${terminfo[kLFT5]}
|
|
||||||
key[CtrlRight]=${terminfo[kRIT5]}
|
|
||||||
|
|
||||||
# setup keybindings!
|
|
||||||
bindkey -v
|
|
||||||
export KEYTIMEOUT=1
|
|
||||||
|
|
||||||
[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line
|
|
||||||
[[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line
|
|
||||||
[[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode
|
|
||||||
[[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" backward-delete-char
|
|
||||||
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history
|
|
||||||
[[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history
|
|
||||||
[[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char
|
|
||||||
[[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char
|
|
||||||
[[ -n "${key[Backspace]}" ]] && bindkey "${key[Backspace]}" backward-delete-char
|
|
||||||
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" up-history
|
|
||||||
[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" down-history
|
|
||||||
[[ -n "${key[CtrlLeft]}" ]] && bindkey "${key[CtrlLeft]}" backward-word
|
|
||||||
[[ -n "${key[CtrlRight]}" ]] && bindkey "${key[CtrlRight]}" forward-word
|
|
||||||
|
|
||||||
bindkey '^P' up-history
|
|
||||||
bindkey '^N' down-history
|
|
||||||
bindkey '^h' backward-delete-char
|
|
||||||
bindkey '^w' backward-kill-word
|
|
||||||
bindkey '^r' history-incremental-search-backward
|
|
||||||
bindkey -a '/' history-incremental-search-backward
|
|
||||||
# https://github.com/romkatv/zsh4humans/issues/7
|
|
||||||
bindkey "^[[H" beginning-of-line
|
|
||||||
bindkey "^[[F" end-of-line
|
|
||||||
|
|
||||||
# Finally, make sure the terminal is in application mode, when zle is
|
|
||||||
# active. Only then are the values from $terminfo valid.
|
|
||||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
|
||||||
function enter-editing-mode () {
|
|
||||||
printf '%s' "${terminfo[smkx]}"
|
|
||||||
}
|
|
||||||
function exit-editing-mode () {
|
|
||||||
printf '%s' "${terminfo[rmkx]}"
|
|
||||||
}
|
|
||||||
zle -N zle-line-init enter-editing-mode
|
|
||||||
zle -N zle-line-finish exit-editing-mode
|
|
||||||
fi
|
|
32
flake.lock
32
flake.lock
|
@ -124,15 +124,15 @@
|
||||||
"lix": {
|
"lix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751825501,
|
"lastModified": 1737234286,
|
||||||
"narHash": "sha256-6Jve3xCvRJGkz0A9D8dXH/DMWYE8MkFt+KJWQs9cLkw=",
|
"narHash": "sha256-pgDJZjj4jpzkFxsqBTI/9Yb0n3gW+DvDtuv9SwQZZcs=",
|
||||||
"rev": "378b360bf8e0d04e8dd3733acd20d7a9b70360f1",
|
"rev": "079528098f5998ba13c88821a2eca1005c1695de",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/378b360bf8e0d04e8dd3733acd20d7a9b70360f1.tar.gz?rev=378b360bf8e0d04e8dd3733acd20d7a9b70360f1"
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/079528098f5998ba13c88821a2eca1005c1695de.tar.gz?rev=079528098f5998ba13c88821a2eca1005c1695de"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
|
"url": "https://git.lix.systems/lix-project/lix/archive/release-2.92.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lix-module": {
|
"lix-module": {
|
||||||
|
@ -145,17 +145,15 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751909859,
|
"lastModified": 1742943028,
|
||||||
"narHash": "sha256-gbpuESxl/An4GTh7QEbQRYJozVIxWkwVGbWK0/0GoRc=",
|
"narHash": "sha256-fprwZKE1uMzO9tiWWOrmLWBW3GPkMayQfb0xOvVFIno=",
|
||||||
"ref": "refs/heads/main",
|
"rev": "868d97695bab9d21f6070b03957bcace249fbe3c",
|
||||||
"rev": "4d4c2b8f0a801c91ce5b717c77fe3a17efa1402f",
|
"type": "tarball",
|
||||||
"revCount": 150,
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/868d97695bab9d21f6070b03957bcace249fbe3c.tar.gz?rev=868d97695bab9d21f6070b03957bcace249fbe3c"
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lix_2": {
|
"lix_2": {
|
||||||
|
@ -264,11 +262,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753489912,
|
"lastModified": 1751211869,
|
||||||
"narHash": "sha256-uDCFHeXdRIgJpYmtcUxGEsZ+hYlLPBhR83fdU+vbC1s=",
|
"narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "13e8d35b7d6028b7198f8186bc0347c6abaa2701",
|
"rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
10
flake.nix
10
flake.nix
|
@ -3,18 +3,15 @@
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||||
nixbsd.url = "github:nixos-bsd/nixbsd/main";
|
nixbsd.url = "github:nixos-bsd/nixbsd/main";
|
||||||
lix-module = {
|
lix-module = {
|
||||||
url = "git+https://git.lix.systems/lix-project/nixos-module";
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
bingosync.url = "github:rhelmot/bingosync";
|
bingosync.url = "github:rhelmot/bingosync";
|
||||||
blog-rhelmot-io.url = "git+https://git.lain.faith/rhelmot/blog.rhelmot.io";
|
blog-rhelmot-io.url = "git+https://git.lain.faith/rhelmot/blog.rhelmot.io";
|
||||||
blog-rhelmot-io.inputs.nixpkgs.follows = "nixpkgs";
|
blog-rhelmot-io.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
#nixos-defcon.url = "path:/home/audrey/nixos-defcon";
|
|
||||||
#nixos-defcon.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
};
|
||||||
outputs = { self, nixpkgs, nixbsd, lix-module, bingosync, /*nixos-defcon, */... }@flakeInputs: let
|
outputs = { self, nixpkgs, nixbsd, lix-module, bingosync, ... }@flakeInputs: let
|
||||||
sitesFiles = builtins.readDir ./sites;
|
sitesFiles = builtins.readDir ./sites;
|
||||||
sitesNames = builtins.filter (name: builtins.pathExists ./sites/${name}/configuration.nix) (builtins.attrNames sitesFiles);
|
sitesNames = builtins.filter (name: builtins.pathExists ./sites/${name}/configuration.nix) (builtins.attrNames sitesFiles);
|
||||||
systemTypes = {
|
systemTypes = {
|
||||||
|
@ -32,9 +29,6 @@
|
||||||
{ nixpkgs.buildPlatform = platform; }
|
{ nixpkgs.buildPlatform = platform; }
|
||||||
lix-module.nixosModules.default
|
lix-module.nixosModules.default
|
||||||
bingosync.nixosModules.default
|
bingosync.nixosModules.default
|
||||||
#nixos-defcon.nixosModules.pkgsOverlay
|
|
||||||
#nixos-defcon.nixosModules.tulip
|
|
||||||
#nixos-defcon.nixosModules.noscope
|
|
||||||
];
|
];
|
||||||
}; in {
|
}; in {
|
||||||
inherit (evaluated) config options;
|
inherit (evaluated) config options;
|
||||||
|
|
2
keys/nix
2
keys/nix
|
@ -1,2 +0,0 @@
|
||||||
clove:UVUGJicEY/PmVWqi4dlqmsNIglGFAsJzgLLsgVrMKsM=
|
|
||||||
daisy:HU3mg1KY/sGYVZk243dgJRDLKHASRmu8/IXeGI/sdE8=
|
|
131
pkgs/binsync.nix
131
pkgs/binsync.nix
|
@ -1,131 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
fetchPypi,
|
|
||||||
fetchFromGitHub,
|
|
||||||
buildPythonPackage,
|
|
||||||
buildPythonApplication,
|
|
||||||
hatchling,
|
|
||||||
flask,
|
|
||||||
|
|
||||||
httpx,
|
|
||||||
pydantic,
|
|
||||||
python-dotenv,
|
|
||||||
poetry-core,
|
|
||||||
|
|
||||||
filelock,
|
|
||||||
gitpython,
|
|
||||||
prompt-toolkit,
|
|
||||||
pycparser,
|
|
||||||
sortedcontainers,
|
|
||||||
toml,
|
|
||||||
tqdm,
|
|
||||||
setuptools,
|
|
||||||
pyside6,
|
|
||||||
pytestCheckHook,
|
|
||||||
pytest-qt,
|
|
||||||
ply,
|
|
||||||
wordfreq,
|
|
||||||
ghidra-bridge,
|
|
||||||
jfx-bridge,
|
|
||||||
networkx,
|
|
||||||
platformdirs,
|
|
||||||
psutil,
|
|
||||||
pyhidra,
|
|
||||||
writableTmpDirAsHomeHook,
|
|
||||||
}: let
|
|
||||||
libbs_latest = buildPythonPackage rec {
|
|
||||||
pname = "libbs";
|
|
||||||
version = "2.15.5+dev";
|
|
||||||
pyproject = true;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "binsync";
|
|
||||||
repo = "libbs";
|
|
||||||
rev = "c7f3b7e16a44affd446b392a89ed343d356885af";
|
|
||||||
hash = "sha256-AzsOok38JG2pjNzeWQVHhi9Iw266TAOxavQEDu+JcyQ=";
|
|
||||||
};
|
|
||||||
|
|
||||||
build-system = [ setuptools ];
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
filelock
|
|
||||||
ghidra-bridge
|
|
||||||
jfx-bridge
|
|
||||||
networkx
|
|
||||||
platformdirs
|
|
||||||
prompt-toolkit
|
|
||||||
psutil
|
|
||||||
pycparser
|
|
||||||
pyhidra
|
|
||||||
toml
|
|
||||||
tqdm
|
|
||||||
ply
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeCheckInputs = [
|
|
||||||
pytestCheckHook
|
|
||||||
writableTmpDirAsHomeHook
|
|
||||||
];
|
|
||||||
|
|
||||||
pythonImportsCheck = [ "libbs" ];
|
|
||||||
|
|
||||||
disabledTests = [
|
|
||||||
"test_change_watcher_plugin_cli"
|
|
||||||
"test_ghidra_artifact_watchers"
|
|
||||||
"TestHeadlessInterfaces"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
disabledTestPaths = [
|
|
||||||
"tests/test_decompilers.py"
|
|
||||||
"tests/test_remote_ghidra.py"
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
binsync_latest = buildPythonPackage rec {
|
|
||||||
pname = "binsync";
|
|
||||||
version = "5.5.1+dev";
|
|
||||||
pyproject = true;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "binsync";
|
|
||||||
repo = "binsync";
|
|
||||||
rev = "f46c576338a0cd74b8aeb46b09467ca3862d4e52";
|
|
||||||
hash = "sha256-C3i969oA+jHjFz9fWYuzJZ0pz1O4Wvi9QU8PjHnL1Kk=";
|
|
||||||
};
|
|
||||||
|
|
||||||
build-system = [ setuptools ];
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
libbs_latest
|
|
||||||
|
|
||||||
filelock
|
|
||||||
gitpython
|
|
||||||
prompt-toolkit
|
|
||||||
pycparser
|
|
||||||
sortedcontainers
|
|
||||||
toml
|
|
||||||
tqdm
|
|
||||||
ply
|
|
||||||
wordfreq
|
|
||||||
];
|
|
||||||
|
|
||||||
optional-dependencies = {
|
|
||||||
ghidra = [ pyside6 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeCheckInputs = [
|
|
||||||
pytestCheckHook
|
|
||||||
pytest-qt
|
|
||||||
pyside6
|
|
||||||
];
|
|
||||||
|
|
||||||
disabledTestPaths = [
|
|
||||||
# Test tries to import angrmanagement
|
|
||||||
"tests/test_angr_gui.py"
|
|
||||||
];
|
|
||||||
|
|
||||||
pythonImportsCheck = [ "binsync" ];
|
|
||||||
};
|
|
||||||
in binsync_latest
|
|
|
@ -5,7 +5,7 @@
|
||||||
fetchurl,
|
fetchurl,
|
||||||
autoPatchelfHook,
|
autoPatchelfHook,
|
||||||
copyDesktopItems,
|
copyDesktopItems,
|
||||||
python311,
|
python3,
|
||||||
libsForQt5,
|
libsForQt5,
|
||||||
cairo,
|
cairo,
|
||||||
dbus,
|
dbus,
|
||||||
|
@ -25,28 +25,23 @@
|
||||||
xorg,
|
xorg,
|
||||||
zlib,
|
zlib,
|
||||||
curl,
|
curl,
|
||||||
gnutar,
|
|
||||||
makeDesktopItem,
|
makeDesktopItem,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
runCommand,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
pythonForIDA = python311.withPackages (ps: with ps; [
|
pythonForIDA = python3.withPackages (ps: with ps; [ rpyc ]);
|
||||||
rpyc
|
|
||||||
(ps.callPackage ./binsync.nix {})
|
|
||||||
]);
|
|
||||||
in
|
in
|
||||||
# https://github.com/msanft/ida-pro-overlay/blob/main/packages/ida-pro.nix
|
# https://github.com/msanft/ida-pro-overlay/blob/main/packages/ida-pro.nix
|
||||||
stdenv.mkDerivation (self: {
|
stdenv.mkDerivation (self: {
|
||||||
pname = "idapro";
|
pname = "idapro";
|
||||||
version = "9.0.240807";
|
version = "9.0.241217";
|
||||||
src = requireFile {
|
src = requireFile {
|
||||||
name = "IDA_Pro_Linux_9.tar.gz";
|
name = "idapro-9.0.241217.tar.xz";
|
||||||
hash = "sha256-PKbEHc8dPHOMwv76xjoMUoeSn1jF7VXF9QUmQ4YSmP0=";
|
hash = "sha256-V6RYQlwY8qYlASkyUZx2NgIkuQhf2fTd1tA7MFpOqLc=";
|
||||||
message = ''
|
message = ''
|
||||||
Please run nix store add-file IDA_Pro_Linux_9.tar.gz
|
Please run nix store add-file idapro-9.0.241217.tar.xz
|
||||||
Its sha256sum should be 3ca6c41dcf1d3c738cc2fefac63a0c5287929f58c5ed55c5f5052643861298fd
|
Its sha256sum should be 57a458425c18f2a625012932519c76360224b9085fd9f4ddd6d03b305a4ea8b7
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -105,10 +100,8 @@ stdenv.mkDerivation (self: {
|
||||||
ln -s $lib $out/lib/$(basename $lib)
|
ln -s $lib $out/lib/$(basename $lib)
|
||||||
done
|
done
|
||||||
|
|
||||||
ln -s $out/opt/ida64 $out/bin/ida64
|
ln -s $out/opt/ida $out/bin/ida
|
||||||
ln -s $out/opt/ida64 $out/bin/ida
|
ln -s ida $out/bin/ida64
|
||||||
|
|
||||||
ln -s ${pythonForIDA}/bin/binsync $out/bin/binsync
|
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
@ -119,12 +112,10 @@ stdenv.mkDerivation (self: {
|
||||||
addAutoPatchelfSearchPath $out/opt
|
addAutoPatchelfSearchPath $out/opt
|
||||||
|
|
||||||
# Manually patch libraries that dlopen stuff.
|
# Manually patch libraries that dlopen stuff.
|
||||||
patchelf --add-needed libpython${pythonForIDA.pythonVersion}.so $out/lib/libida.so
|
patchelf --add-needed libpython3.12.so $out/lib/libida.so
|
||||||
patchelf --add-needed libpython${pythonForIDA.pythonVersion}.so $out/opt/plugins/idapython3_64.so
|
|
||||||
patchelf --add-needed libcrypto.so $out/lib/libida.so
|
patchelf --add-needed libcrypto.so $out/lib/libida.so
|
||||||
patchelf --add-needed libcrypto.so $out/opt/plugins/idapython3_64.so
|
|
||||||
|
|
||||||
wrapProgram "$out/opt/ida64" \
|
wrapProgram "$out/opt/ida" \
|
||||||
--prefix PYTHONPATH : $out/opt/idalib/python \
|
--prefix PYTHONPATH : $out/opt/idalib/python \
|
||||||
--prefix PATH : ${pythonForIDA}/bin
|
--prefix PATH : ${pythonForIDA}/bin
|
||||||
'';
|
'';
|
||||||
|
@ -133,9 +124,11 @@ stdenv.mkDerivation (self: {
|
||||||
desktopItem = makeDesktopItem {
|
desktopItem = makeDesktopItem {
|
||||||
name = "ida-pro";
|
name = "ida-pro";
|
||||||
exec = "ida";
|
exec = "ida";
|
||||||
icon = runCommand "appico.png" {nativeBuildInputs = [gnutar]; strictDeps = true;} ''
|
icon = fetchurl {
|
||||||
tar --to-command cat -xf ${self.src} './idapro-9.0/appico.png' > "$out"
|
url = "https://www.xzji.com/upload/y20/07x15/1518115f0eadb3d25ab.png";
|
||||||
'';
|
name = "appico.png";
|
||||||
|
hash = "sha256-mso/8F4AT5Ry1RHG3plo03rssRRUw9xBwu3fjh8PqYc";
|
||||||
|
};
|
||||||
comment = self.meta.description;
|
comment = self.meta.description;
|
||||||
desktopName = "IDA Pro";
|
desktopName = "IDA Pro";
|
||||||
genericName = "Interactive Disassembler";
|
genericName = "Interactive Disassembler";
|
||||||
|
@ -144,10 +137,7 @@ stdenv.mkDerivation (self: {
|
||||||
};
|
};
|
||||||
desktopItems = [ self.desktopItem ];
|
desktopItems = [ self.desktopItem ];
|
||||||
|
|
||||||
passthru = {
|
|
||||||
inherit pythonForIDA;
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "The world's smartest and most feature-full disassembler";
|
description = "The world's smartest and most feature-full disassembler";
|
||||||
homepage = "https://hex-rays.com/ida-pro/";
|
homepage = "https://hex-rays.com/ida-pro/";
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIF1zCCA7+gAwIBAgIUKYdQD74Iefk1CyzHvROGC83Hw6IwDQYJKoZIhvcNAQEL
|
|
||||||
BQAwezELMAkGA1UEBhMCVVMxDzANBgNVBAgMBk5ldmFkYTESMBAGA1UEBwwJTGFz
|
|
||||||
IFZlZ2FzMRMwEQYDVQQKDApTaGVsbHBoaXNoMRUwEwYDVQQLDAxhd29vLnN5c3Rl
|
|
||||||
bXMxGzAZBgNVBAMMEmRvY2tlci5zaGVsbC5waGlzaDAeFw0yNTA4MDQxNjI5NDda
|
|
||||||
Fw0zNTA4MDIxNjI5NDdaMHsxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGEx
|
|
||||||
EjAQBgNVBAcMCUxhcyBWZWdhczETMBEGA1UECgwKU2hlbGxwaGlzaDEVMBMGA1UE
|
|
||||||
CwwMYXdvby5zeXN0ZW1zMRswGQYDVQQDDBJkb2NrZXIuc2hlbGwucGhpc2gwggIi
|
|
||||||
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDyVMA3TRVo52CNfmo4KCEF1UXR
|
|
||||||
km3z2fezjsbjEOCeMTsirkFp71g4Cvj4RPCrIASq1DVXkOI6ZaU2OEfm15TcY0Q1
|
|
||||||
DG8/zvjVFTOGGNqfCyz+DUSr3qweeAijyLMygjTvK1LrCUJ1daYTdr9es1Qd29dV
|
|
||||||
Z2QxWy9+BOpz9oCs8ph+SUCVSfqn11mJ7btgSN9EU8K8f7vhm4PHpruaIJzXh6l0
|
|
||||||
tl3wLvXbG8QW1Ms95oBCxiGFKxhAOhGQYlWkODJuh9nF+K/erXv/gmC9Xth/mbL9
|
|
||||||
fRJpW+gPK79bhdSTPf9qLmanesRh7ZYxqDW/b7a1moR1u/MNqn4evm0muiz+cb/4
|
|
||||||
e6PaRQfwD21dS4FNiJRWtUgSSa0qV7UdvFXvRIev/1f6jbeP0NB6txRxfRwf7cHQ
|
|
||||||
ceWIMZgfLeGXjS1VUFnyvEL2iRgFE86YVgaYd6TIafN2tcKBb5CBJCZkkP2BBk17
|
|
||||||
NJ/S4h1H0w9u9yyfSz8kvrFf8KMGreRsZGdq776ajI1RNye+kdOQdu8UVN/W2ewu
|
|
||||||
E7vBw6NdDRuYGZ/pCULaXgdabiEYnzuwD5k9AKAeArWVDltSk8pS0gv8cI1MXt8J
|
|
||||||
TBcSEal5SPwjQNVjahghc3ASydkGN31U0roXuV8+5CjTxfzE6vVsQ2PdF9cSEVHT
|
|
||||||
kO6uIlMF7UKlytz2TwIDAQABo1MwUTAdBgNVHQ4EFgQUfMaBc83sxwCnJEeS893N
|
|
||||||
hpFQF5gwHwYDVR0jBBgwFoAUfMaBc83sxwCnJEeS893NhpFQF5gwDwYDVR0TAQH/
|
|
||||||
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEATt+MoCjOJ7MlgfX/vvgrnjp9RCwY
|
|
||||||
ltjg1n2sFzObJN0FpukFYLUdLXNj7YI34qL30FRjVDbEw3Q7ciXDPafqkzu/fMDd
|
|
||||||
/QkOnkIPa7oQ1qHGTODN/a3/sDkGcf7Mf1KV2B3QovybhRjB+N35C2zDA6V4TWik
|
|
||||||
AKXfqdJJEcSaG9yv1Kp4wmHvEOI0jruK2dks+46Ulw1eGk5xOHtRElfVfvO0LwGz
|
|
||||||
8vvv+6WNoBNMw9inzwmEQALvVooWdh4cJnkUIWlSPI2n091dtU57rzvsAnPtV/sW
|
|
||||||
Xvn9ZpRxw9vyKUBkWLLQAUbdn+XDM8XXi7zRGaY8b9LKWoNA2PGltpteCYck9za0
|
|
||||||
a/F5Jt3f78d/vug/6Q0U2SiWNbqL9pzMX8gLIOuTqw6Rx6W32VY6WT418WqWjfsG
|
|
||||||
iySaMbJ+P+EpIFn57UvKV5CgdDFroBLnS1YpYNpZAJJubpJLVyMxQMhb47K5vU6s
|
|
||||||
YpsRm96kC0cZvP4J7+xpVilbzIqIHoV1foz0eRhCcS9bY+p22oLQY0EQ2joMnMnq
|
|
||||||
VvffPBaIWMkx6hoSaoQl7nhksu1UQrzomGJfOEK+jGkRbo1QI/qz38EuvlUfSayu
|
|
||||||
ONbCx7j+x++DyxvIQ9JEuu+cC76CNWjiDU0xFUhURrlS3t5AGe0+2ZBjcxWeX7jF
|
|
||||||
iwbYVRB2xqWwxek=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -20,33 +20,12 @@
|
||||||
hardware.bluetooth.powerOnBoot = true;
|
hardware.bluetooth.powerOnBoot = true;
|
||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
networking.firewall.allowedTCPPorts = [ 22 80 443 1337 1338 8081 2222 ];
|
networking.firewall.allowedTCPPorts = [ 22 80 443 1337 8081 ];
|
||||||
networking.firewall.allowedUDPPorts = [ 1337 ];
|
networking.firewall.allowedUDPPorts = [ 1337 ];
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
#services.immich.enable = true;
|
#services.immich.enable = true;
|
||||||
|
|
||||||
hardware.ipu6 = {
|
|
||||||
enable = true;
|
|
||||||
platform = "ipu6ep";
|
|
||||||
};
|
|
||||||
|
|
||||||
# not sure when this commit will reach upstream
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest.extend ( self: super: {
|
|
||||||
ipu6-drivers = super.ipu6-drivers.overrideAttrs (
|
|
||||||
final: previous: rec {
|
|
||||||
src = builtins.fetchGit {
|
|
||||||
url = "https://github.com/intel/ipu6-drivers.git";
|
|
||||||
ref = "master";
|
|
||||||
rev = "b4ba63df5922150ec14ef7f202b3589896e0301a";
|
|
||||||
};
|
|
||||||
patches = [
|
|
||||||
"${src}/patches/0001-v6.10-IPU6-headers-used-by-PSYS.patch"
|
|
||||||
] ;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} );
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.idapro9
|
pkgs.idapro9
|
||||||
pkgs.qemu_kvm
|
pkgs.qemu_kvm
|
||||||
|
@ -57,91 +36,41 @@
|
||||||
pkgs.OVMF.fd
|
pkgs.OVMF.fd
|
||||||
];
|
];
|
||||||
|
|
||||||
services.tailscale = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
ensureDatabases = [ "bingosync" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "bingosync";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
#services.postgresql.authentication = ''
|
||||||
#services.influxdb2 = {
|
# local all all peer map=pgadmin-superuser
|
||||||
# enable = true;
|
|
||||||
# provision = {
|
|
||||||
# enable = true;
|
|
||||||
# initialSetup = {
|
|
||||||
# organization = "default";
|
|
||||||
# bucket = "default";
|
|
||||||
# passwordFile = "/var/lib/influxdb2-secrets/admin.password";
|
|
||||||
# tokenFile = "/var/lib/influxdb2-secrets/admin.token";
|
|
||||||
# };
|
|
||||||
# organizations.shellphish = {
|
|
||||||
# buckets.logs = { };
|
|
||||||
# buckets.metrics = { };
|
|
||||||
# auths.sometoken = {
|
|
||||||
# tokenFile = "/var/lib/influxdb2-secrets/shellphish.token";
|
|
||||||
# readBuckets = [ "logs" "metrics" ];
|
|
||||||
# writeBuckets = [ "logs" "metrics" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# #users.someuser.passwordFile = pkgs.writeText "tmp-pw" "abcgoiuhaoga";
|
|
||||||
# };
|
|
||||||
# settings.http-bind-address = "127.0.0.1:8086";
|
|
||||||
#};
|
|
||||||
|
|
||||||
#services.grafana = {
|
|
||||||
# enable = true;
|
|
||||||
#};
|
|
||||||
|
|
||||||
#services.vector = {
|
|
||||||
# enable = true;
|
|
||||||
# journaldAccess = true;
|
|
||||||
# settings = {
|
|
||||||
# sources.system_logs.type = "journald";
|
|
||||||
# sources.system_metrics = {
|
|
||||||
# type = "host_metrics";
|
|
||||||
# filesystem.mountpoints.excludes = [
|
|
||||||
# "/run*"
|
|
||||||
# "/dev*"
|
|
||||||
# "/sys*"
|
|
||||||
# "/proc*"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# transforms.transformed_logs = {
|
|
||||||
# type = "remap";
|
|
||||||
# inputs = [ "system_logs" ];
|
|
||||||
# source = ''
|
|
||||||
# tmp = .
|
|
||||||
# del(.)
|
|
||||||
# .message = tmp.message
|
|
||||||
# .timestamp = tmp.timestamp
|
|
||||||
# .unit = tmp._SYSTEMD_UNIT
|
|
||||||
# del(tmp.message)
|
|
||||||
# .payload = tmp
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# sinks.db_logs = {
|
|
||||||
# type = "influxdb_logs";
|
|
||||||
# inputs = [ "transformed_logs" ];
|
|
||||||
# org = "shellphish";
|
|
||||||
# token = "48da0c6c524bf0c9291272a3c2a029d1";
|
|
||||||
# bucket = "logs";
|
|
||||||
# endpoint = "http://localhost:8086/";
|
|
||||||
# tags = [ "unit" ];
|
|
||||||
# measurement = "journald";
|
|
||||||
# };
|
|
||||||
# sinks.db_metrics = {
|
|
||||||
# type = "influxdb_metrics";
|
|
||||||
# inputs = [ "system_metrics" ];
|
|
||||||
# org = "shellphish";
|
|
||||||
# token = "48da0c6c524bf0c9291272a3c2a029d1";
|
|
||||||
# bucket = "metrics";
|
|
||||||
# endpoint = "http://localhost:8086/";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
#};
|
|
||||||
|
|
||||||
#networking.extraHosts = ''
|
|
||||||
# 127.0.0.1 celestebingo
|
|
||||||
# 127.0.0.1 sockets-celestebingo
|
|
||||||
#'';
|
#'';
|
||||||
|
#services.postgresql.identMap = ''
|
||||||
|
# pgadmin-superuser pgadmin postgres
|
||||||
|
# pgadmin-superuser postgres postgres
|
||||||
|
#'';
|
||||||
|
#services.pgadmin.enable = true;
|
||||||
|
#services.pgadmin.initialEmail = "audrey@rhelmot.io";
|
||||||
|
#services.pgadmin.initialPasswordFile = "/var/lib/pgadmin/initial_password_file";
|
||||||
|
|
||||||
|
#services.bingosync = {
|
||||||
|
# enable = true;
|
||||||
|
# debug = true;
|
||||||
|
# domain = "celestebingo";
|
||||||
|
# socketsDomain = "sockets-celestebingo";
|
||||||
|
# #databaseUrl = "sqlite:////tmp/bingosync.db";
|
||||||
|
# databaseUrl = "postgres://%2Frun%2Fpostgresql/bingosync";
|
||||||
|
# extraPythonPackages = p: [ p.psycopg2 ];
|
||||||
|
#};
|
||||||
|
|
||||||
|
networking.extraHosts = ''
|
||||||
|
127.0.0.1 celestebingo
|
||||||
|
127.0.0.1 sockets-celestebingo
|
||||||
|
'';
|
||||||
|
|
||||||
#programs.celestegame = {
|
#programs.celestegame = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
|
@ -150,28 +79,8 @@
|
||||||
# writableDir = "/var/lib/celeste";
|
# writableDir = "/var/lib/celeste";
|
||||||
#};
|
#};
|
||||||
|
|
||||||
#services.postgresql.package = pkgs.postgresql_17_jit;
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
#services.tulip = {
|
openFirewall = true;
|
||||||
# enable = true;
|
};
|
||||||
# nginxHost = "tulip";
|
|
||||||
# servicesFile = "/var/lib/tulip/services.txt";
|
|
||||||
# sslKeyLogFile = "/var/lib/tulip/sslkeylog";
|
|
||||||
# convertersDir = "/var/lib/tulip/converters";
|
|
||||||
# convertersPython = "/var/lib/tulip/converters/.venv/bin/python";
|
|
||||||
# convertersProcesses = 8;
|
|
||||||
# ctf = {
|
|
||||||
# flagRegex = "flag\\{[[:digit:]]{6}_[[:digit:]]{6}\\}";
|
|
||||||
# tickStart = "2025-08-05T19:00:00Z";
|
|
||||||
# tickLength = 120 * 1000;
|
|
||||||
# vulnboxIp = "fd00:1337:1312:100::7";
|
|
||||||
# };
|
|
||||||
#};
|
|
||||||
#systemd.services.tulip-assembler.path = with pkgs; [bash];
|
|
||||||
|
|
||||||
##shellphish.ubuntuEnclave.enable = true;
|
|
||||||
#services.noscope = {
|
|
||||||
# enable = true;
|
|
||||||
# nginxHost = "noscope";
|
|
||||||
#};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
#networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
VkJw2xvYBO477ta66id4RDUBBXXzQQ==
|
|
||||||
-----END PRIVATE KEY-----
|
|
|
@ -164,31 +164,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.spamkick = let
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "maddie480";
|
|
||||||
repo = "SpamKick";
|
|
||||||
rev = "9dd5b5e3cc78e2520b13a0875ae7ef264a5a52c5";
|
|
||||||
hash = "sha256-ZjxnqIiXBaxrZwrCfDPVTpGmRxtrL5kc5ZcDUaQtbZo=";
|
|
||||||
};
|
|
||||||
env = pkgs.python3.withPackages (ps: with ps; [ discordpy ]);
|
|
||||||
in {
|
|
||||||
path = [ env ];
|
|
||||||
script = ''
|
|
||||||
export TOKEN="$(cat /var/lib/spamkick/token.txt)"
|
|
||||||
exec python ${src}/main.py
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
environment = {
|
|
||||||
LOG_CHANNEL_ID = "532689319350108160";
|
|
||||||
CHANNEL_COUNT = "4";
|
|
||||||
DELAY_SECONDS = "5";
|
|
||||||
DEBUG = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue