Compare commits

..

No commits in common. "62ecb566ed3b4280a337dc685709408e9b80e5eb" and "391b47fa7502a9cde7b3f00a7fd835cc07838e35" have entirely different histories.

15 changed files with 406 additions and 459 deletions

33
; Normal file
View file

@ -0,0 +1,33 @@
{
lib,
options,
machine,
...
}:
with lib;
{
options = {
custom.program = mkOption {
type = types.attrsOf (
types.submodule (
{ config, ... }:
{
options = {
name = mkOption {
type = types.string;
};
home-config = mkOption {
type = types.deferredModule;
};
system-config = mkOption {
type = types.deferredModule;
default = _: { };
};
};
config = if builtins.isNull machine.home-only then config.system-config else config.home-config;
}
)
);
};
};
}

View file

@ -1,8 +1,9 @@
{ lib
, pkgs
, config
, secrets
, ...
{
lib,
pkgs,
config,
secrets,
...
}:
let
factorioVersion =
@ -60,11 +61,12 @@ let
};
privateUsers = "no";
config =
{ config
, pkgs
, lib
, ...
imports =
{
config,
pkgs,
lib,
...
}:
{
systemd.services.factorio.serviceConfig.User = "factorio";
@ -106,8 +108,7 @@ in
};
containers =
factorioContainer "tawney"
{
factorioContainer "tawney" {
autosave-interval = 20;
admins = [
"jonay2000"

View file

@ -1,6 +1,7 @@
{ pkgs
, config
, ...
{
pkgs,
config,
...
}:
{
imports = [
@ -62,8 +63,7 @@
nautilus
adwaita-icon-theme
(pkgs.callPackage
(
(pkgs.callPackage (
{ stdenv }:
stdenv.mkDerivation {
name = "global-cursor-theme";
@ -79,10 +79,9 @@
EOF
'';
}
)
{ })
) { })
perf
config.boot.kernelPackages.perf
rr
];

View file

@ -4,7 +4,6 @@
imports = lib.concatLists [
[
./xdg.nix
./ssh.nix
./nvim
./fish
./kanata
@ -44,10 +43,11 @@
inherit inputs;
requirements = [ "graphical" ];
home-config =
{ config
, pkgs
, lib
, ...
{
config,
pkgs,
lib,
...
}:
let
disableFeatures = [

View file

@ -5,10 +5,11 @@ inputs@{ machine, ... }:
inherit inputs;
requirements = [ "cli" ];
home-config =
{ config
, pkgs
, lib
, ...
{
config,
pkgs,
lib,
...
}:
with builtins;
with lib.attrsets;
@ -18,9 +19,8 @@ inputs@{ machine, ... }:
"cp-mov" = cp-media "mov" "movies";
"cp-ser" = cp-media "ser" "shows";
"cp-ani" = cp-media "ani" "anime";
"ragdoll" = ragdoll;
"dumpasm" = "${pkgs.custom.dumpasm}/bin/dumpasm";
"p" = calc;
"p" = builtins.trace calc calc;
"s" = "systemctl";
"j" = "journalctl";
"ju" = "journalctl -u";
@ -239,11 +239,7 @@ inputs@{ machine, ... }:
setupTide = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
setupTide() {
${pkgs.fish}/bin/fish -c ${lib.escapeShellArg "tide configure ${
lib.cli.toCommandLineShell (optionName: {
option = if builtins.stringLength optionName > 1 then "--${optionName}" else "-${optionName}";
sep = null;
explicitBool = false;
}) {
lib.cli.toGNUCommandLineShell { } {
auto = true;
style = "Lean";
prompt_colors = "True color";

View file

@ -22,16 +22,4 @@
'';
in
"${s}/bin/cp-${name}";
ragdoll = "${pkgs.writeScriptBin "ragdoll" ''
RAND=$(xxd -l 32 -c 32 -p < /dev/urandom)
if [ -z "$TMUX_SESSION_NAME" ]; then
RAND=$(cat /dev/urandom | head -c 20 | base32)
export TMUX_SESSION_NAME="$RAND"
tmux rename-session -t "$(tmux display-message -p "#S")" "$TMUX_SESSION_NAME"
fi
SSH_TMUX_SESSION_NAME="ssh-from-$(hostname)-$TMUX_SESSION_NAME"
tmux detach -E "kitten ssh -t ragdoll \"export TMUX_SESSION_NAME=$SSH_TMUX_SESSION_NAME; tmux attach -t $SSH_TMUX_SESSION_NAME || tmux new -e TMUX_SESSION_NAME=$SSH_TMUX_SESSION_NAME -s $SSH_TMUX_SESSION_NAME\"; exec tmux attach -t $TMUX_SESSION_NAME"
''}/bin/ragdoll";
}

View file

@ -5,10 +5,6 @@ inputs@{ machine, ... }:
inherit inputs;
requirements = [ "cli" ];
home-config = _: {
home.file.".gitignore".text = ''
server\ exited\ unexpectedly
'';
programs.git = {
enable = true;
signing.key = "/home/jana/.ssh/id_ed25519.pub";

View file

@ -100,6 +100,8 @@ inputs@{ machine, ... }:
"-c"
script
];
in
{
tug = [
"bookmark"
"move"
@ -108,9 +110,6 @@ inputs@{ machine, ... }:
"--to"
"coalesce(@ & ~empty(), @-)"
];
in
{
inherit tug;
fuck = [
"bookmark"
"move"
@ -154,18 +153,6 @@ inputs@{ machine, ... }:
"--from"
"trunk()"
];
n = [ "edit" "@+" ];
p = [ "edit" "@-" ];
gp = [ "git" "push" ];
t = tug;
d = "describe";
dm = [ "describe" "-m" ];
e = "edit";
s = "squash";
si = "squash -i";
sp = "split";
};
templates = {

View file

@ -34,11 +34,7 @@ inputs@{ machine, ... }:
draw_minimal_borders = false;
hide_window_decorations = true;
shell = "${pkgs.writeScriptBin "tmux-sesh" ''
RAND=$(cat /dev/urandom | head -c 20 | base32)
export TMUX_SESSION_NAME="kitty-$RAND"
exec ${pkgs.tmux}/bin/tmux new -e TMUX_SESSION_NAME=$TMUX_SESSION_NAME -s "$TMUX_SESSION_NAME"
''}/bin/tmux-sesh";
shell = "${pkgs.tmux}/bin/tmux";
clipboard_control = "write-clipboard write-primary read-clipboard read-primary";
foreground = "#fcfcfc";

View file

@ -21,7 +21,7 @@ inputs@{ machine, ... }:
]
++ (pkgs.lib.splitString " " cmd);
wallpaper = "${pkgs.custom.raw-data}/pacific.png";
wallpaper = ("${pkgs.custom.raw-data}/pacific.png");
matugenSchemeType = "scheme-tonal-spot";
in
{

View file

@ -107,12 +107,9 @@ vim.cmd([[
-- multicursor
vim.g.VM_default_mappings = 1
vim.g.VM_mouse_mappings = 1
vim.g.VM_reselect_first = 1
vim.g.VM_notify_previously_selected = 1
vim.g.VM_theme = "iceblue"
-- vim.g.VM_maps["Undo"] = 'u'
-- vim.g.VM_maps["Redo"] = '<C-r>'

View file

@ -5,10 +5,11 @@ inputs@{ machine, ... }:
inherit inputs;
requirements = [ "cli" ];
home-config =
{ pkgs
, flakes
, lib
, ...
{
pkgs,
flakes,
lib,
...
}:
let
nvim_mime_types = [
@ -57,11 +58,9 @@ inputs@{ machine, ... }:
};
xdg.mimeApps.associations.added = lib.mergeAttrsList (
map
(mime: {
map (mime: {
${mime} = [ "${desktop-entry-name}.desktop" ];
})
nvim_mime_types
}) nvim_mime_types
);
imports = [

View file

@ -384,7 +384,7 @@ in
code_action.keys = {
quit = "<Esc>";
};
symbol_in_winbar.enable = true;
symbol_in_winbar.enable = false;
implement.enable = true;
};
};

View file

@ -1,42 +0,0 @@
inputs@{ machine, ... }: {
imports =
machine.program {
name = "ssh";
inherit inputs;
requirements = [ "cli" ];
home-config = _: {
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
fili = {
user = "jana";
hostname = "donsz.nl";
};
icecube = {
hostname = "192.168.178.138";
proxyJump = "fili";
};
ragdoll = {
hostname = "192.168.178.138";
proxyJump = "fili";
};
"*" = {
forwardAgent = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
compression = false;
addKeysToAgent = null;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = null;
};
};
};
};
}
;
}

View file

@ -14,12 +14,9 @@ inputs@{ machine, ... }:
shortcut = "k";
plugins =
with pkgs;
with tmuxPlugins;
[
plugins = with pkgs; [
{
plugin = mkTmuxPlugin {
plugin = tmuxPlugins.mkTmuxPlugin {
pluginName = "suspend";
version = "1a2f806";
src = pkgs.fetchFromGitHub {
@ -34,13 +31,15 @@ inputs@{ machine, ... }:
'';
}
{
plugin = mode-indicator;
plugin = tmuxPlugins.mode-indicator;
}
];
extraConfig = ''
# unbind every single normal keybinding
unbind -a
unbind-key -a
set -g status-left "#{?client_prefix,#[bg=colour2],#[bg=colour1]}#[fg=colour0] #S "
# for special characters to work right
# like <C-_>
@ -61,40 +60,39 @@ inputs@{ machine, ... }:
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
bind v copy-mode
bind p paste-buffer -p
bind d detach
set -s set-clipboard on
# get back normal terminal emulator bindings
bind -n S-PPage copy-mode -u
bind -T copy-mode -n S-NPage send-keys -X page-down
bind-key -n S-PPage copy-mode -u
bind-key -T copy-mode -n S-NPage send-keys -X page-down
# don't scroll to end when copying with mouse
bind -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe
bind -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe
bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
# window control
bind t new-window -c "#{pane_current_path}"
bind Tab next-window
bind BTab previous-window
bind-key Tab next-window
bind-key BTab previous-window
set -g automatic-rename-format "#{?#{==:#{pane_current_path},$HOME},~,#{b:pane_current_path}} (#{pane_current_command})"
set -g renumber-windows on
bind Q confirm-before -p "kill-window #W? (y/n)" kill-window
bind-key Q confirm-before -p "kill-window #W? (y/n)" kill-window
bind A last-window
bind 1 select-window -t :0
bind 2 select-window -t :1
bind 3 select-window -t :2
bind 4 select-window -t :3
bind 5 select-window -t :4
bind 6 select-window -t :5
bind 7 select-window -t :6
bind 8 select-window -t :7
bind 9 select-window -t :8
bind 0 select-window -t :9
bind-key 1 select-window -t :0
bind-key 2 select-window -t :1
bind-key 3 select-window -t :2
bind-key 4 select-window -t :3
bind-key 5 select-window -t :4
bind-key 6 select-window -t :5
bind-key 7 select-window -t :6
bind-key 8 select-window -t :7
bind-key 9 select-window -t :8
bind-key 0 select-window -t :9
# pane control
bind h select-pane -L
@ -113,44 +111,40 @@ inputs@{ machine, ... }:
bind S-Down split-window -v -c "#{pane_current_path}"
bind S-Up split-window -h -b -c "#{pane_current_path}"
bind S-Right split-window -v -b -c "#{pane_current_path}"
bind -r -T prefix M-h resize-pane -L 5
bind -r -T prefix M-j resize-pane -D 5
bind -r -T prefix M-k resize-pane -U 5
bind -r -T prefix M-l resize-pane -R 5
bind-key -r -T prefix M-h resize-pane -L 5
bind-key -r -T prefix M-j resize-pane -D 5
bind-key -r -T prefix M-k resize-pane -U 5
bind-key -r -T prefix M-l resize-pane -R 5
bind x swap-pane -D
bind z resize-pane -Z
# swap a full screen and terminal
bind a if -F "#{?window_zoomed_flag,0,1}" "select-pane -l ; resize-pane -Z" "resize-pane -Z ; select-pane -l"
# double-click ^k (or lshift with kanata) for previous pane like ^w in vim
bind -r ^k select-pane -l
bind q confirm-before -p "kill-pane #P? (y/n)" kill-pane
bind-key q confirm-before -p "kill-pane #P? (y/n)" kill-pane
# bind o choose-tree -wZ
# bind O choose-tree -sZ
# bind-key o choose-tree -wZ
# bind-key O choose-tree -sZ
# get back command mode and some other basics...
bind : command-prompt
bind r source-file ~/.config/tmux/tmux.conf \; display "config reloaded"
bind ? list-keys
bind-key ? list-keys
# Scroll in man etc
# Scroll oin man etc
tmux_commands_with_legacy_scroll="nano less more man git"
bind -T root WheelUpPane \
bind-key -T root WheelUpPane \
if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \
'send -Mt=' \
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
"send -t= Up" "copy-mode -et="'
bind -T root WheelDownPane \
bind-key -T root WheelDownPane \
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
'send -Mt=' \
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
"send -t= Down" "send -Mt="'
bind -T copy-mode-vi ] \
bind-key -T copy-mode-vi ] \
send-keys -X clear-selection \; \
send-keys -X search-forward "--> " \; \
send-keys -X next-word \; \
@ -158,7 +152,7 @@ inputs@{ machine, ... }:
send-keys -X jump-forward ":" \; \
send-keys -X jump-to-forward ":" \;
bind -T copy-mode-vi [ \
bind-key -T copy-mode-vi [ \
send-keys -X clear-selection \; \
send-keys -X start-of-line \; \
send-keys -X search-backward "--> " \; \
@ -167,8 +161,10 @@ inputs@{ machine, ... }:
send-keys -X jump-forward ":" \; \
send-keys -X jump-to-forward ":" \;
bind [ copy-mode \; send-keys [
bind ] copy-mode \; send-keys ]
bind-key [ copy-mode \; send-keys [
bind-key ] copy-mode \; send-keys ]
bind d select-pane -l \; send-keys [
# f: file search
# unbound: git files
@ -178,31 +174,32 @@ inputs@{ machine, ... }:
# M-i: ips
# include line and column numbers in file search
# rebind `f` so we can reuse it here
bind -T prefix C-f command-prompt { find-window -Z "%%" }
bind-key -T prefix C-f command-prompt { find-window -Z "%%" }
# jyn is so sorry, and so am I now
# https://github.com/jyn514/dotfiles/blob/65be3c004113290f41f858f4d7f1a6799fabab19/config/tmux.conf#L203-L212
# see `search-regex.sh` for wtf this means
# TODO: include shell variable names
bind f copy-mode \; send-keys -X search-backward '(^|/|\<|[[:space:]"])((\.|\.\.)|[[:alnum:]~_"-]*)((/[][[:alnum:]_.#$%&+=@"-]+)+([/ "]|\.([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?)|[][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)(:[0-9]+)?)|(/[][[:alnum:]_.#$%&+=@"-]+){2,}([/ "]|\.([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?)|[][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)(:[0-9]+)?)?|(\.|\.\.)/([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?))'
bind-key f copy-mode \; send-keys -X search-backward '(^|/|\<|[[:space:]"])((\.|\.\.)|[[:alnum:]~_"-]*)((/[][[:alnum:]_.#$%&+=@"-]+)+([/ "]|\.([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?)|[][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)(:[0-9]+)?)|(/[][[:alnum:]_.#$%&+=@"-]+){2,}([/ "]|\.([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?)|[][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)(:[0-9]+)?)?|(\.|\.\.)/([][[:alnum:]_.#$%&+=@"-]+(:[0-9]+)?(:[0-9]+)?))'
# urls
bind u copy-mode \; send-keys -X search-backward '(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&*+-]*'
bind-key u copy-mode \; send-keys -X search-backward '(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&*+-]*'
# hashes
bind g copy-mode \; send-keys -X search-backward '[[:<:]]([0-9a-f]{7,40}|[[:alnum:]]{52}|[0-9a-f]{64})[[:>:]]'
bind-key g copy-mode \; send-keys -X search-backward '[[:<:]]([0-9a-f]{7,40}|[[:alnum:]]{52}|[0-9a-f]{64})[[:>:]]'
# ips
bind M-i copy-mode \; send-keys -X search-backward '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
bind-key M-i copy-mode \; send-keys -X search-backward '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
bind -T copy-mode-vi o send-keys -X copy-pipe \
bind-key -T copy-mode-vi o send-keys -X copy-pipe \
'cd #{pane_current_path}; xargs -I {} echo "echo {}" | bash | xargs ${../nvim/editor-hax.py} xdg-open-proxy' \; \
if -F "#{alternate_on}" { send-keys -X cancel }
# save the buffer, then open an editor in the current pane
bind -T copy-mode-vi O send-keys -X copy-pipe-and-cancel \
bind-key -T copy-mode-vi O send-keys -X copy-pipe-and-cancel \
'tmux send-keys "C-q"; xargs -I {} tmux send-keys "vim {}"; tmux send-keys "C-m"'
# search for the highlighted text
bind -T copy-mode-vi s send-keys -X copy-pipe \
bind-key -T copy-mode-vi s send-keys -X copy-pipe \
"cd #{pane_current_path}; xargs -I {} open 'https://www.google.com/search?q={}'" \; \
if -F "#{alternate_on}" { send-keys -X cancel }
# save buffer and retype into the shell
bind -T copy-mode-vi Tab send-keys -X copy-selection-and-cancel \; paste-buffer -p
bind-key -T copy-mode-vi Tab send-keys -X copy-selection-and-cancel \; paste-buffer -p
'';
};
};