Compare commits
5 commits
391b47fa75
...
62ecb566ed
| Author | SHA1 | Date | |
|---|---|---|---|
| 62ecb566ed | |||
| 9583e816d6 | |||
| e6522bdb86 | |||
| 02bd57490f | |||
| bdaefa4d5c |
15 changed files with 449 additions and 396 deletions
33
;
33
;
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
{
|
{ lib
|
||||||
lib,
|
, pkgs
|
||||||
pkgs,
|
, config
|
||||||
config,
|
, secrets
|
||||||
secrets,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
factorioVersion =
|
factorioVersion =
|
||||||
|
|
@ -61,12 +60,11 @@ let
|
||||||
};
|
};
|
||||||
privateUsers = "no";
|
privateUsers = "no";
|
||||||
|
|
||||||
imports =
|
config =
|
||||||
{
|
{ config
|
||||||
config,
|
, pkgs
|
||||||
pkgs,
|
, lib
|
||||||
lib,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
systemd.services.factorio.serviceConfig.User = "factorio";
|
systemd.services.factorio.serviceConfig.User = "factorio";
|
||||||
|
|
@ -108,18 +106,19 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
containers =
|
containers =
|
||||||
factorioContainer "tawney" {
|
factorioContainer "tawney"
|
||||||
autosave-interval = 20;
|
{
|
||||||
admins = [
|
autosave-interval = 20;
|
||||||
"jonay2000"
|
admins = [
|
||||||
"computerdruid"
|
"jonay2000"
|
||||||
"pineapple"
|
"computerdruid"
|
||||||
];
|
"pineapple"
|
||||||
extraSettingsFile = config.sops.secrets.factorio.path;
|
];
|
||||||
# mods = getMods .factorio-mods/tawney;
|
extraSettingsFile = config.sops.secrets.factorio.path;
|
||||||
package = factorioVersion "2.0.69" "sha256-I1FHuz7WtfCmmTiTxskv3+U1upWrhmBG9R+GUoS1c0E=";
|
# mods = getMods .factorio-mods/tawney;
|
||||||
port = 20001;
|
package = factorioVersion "2.0.69" "sha256-I1FHuz7WtfCmmTiTxskv3+U1upWrhmBG9R+GUoS1c0E=";
|
||||||
}
|
port = 20001;
|
||||||
|
}
|
||||||
// factorioContainer "snek" {
|
// factorioContainer "snek" {
|
||||||
autosave-interval = 20;
|
autosave-interval = 20;
|
||||||
admins = [
|
admins = [
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{ pkgs
|
||||||
pkgs,
|
, config
|
||||||
config,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
@ -63,25 +62,27 @@
|
||||||
nautilus
|
nautilus
|
||||||
|
|
||||||
adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
(pkgs.callPackage (
|
(pkgs.callPackage
|
||||||
{ stdenv }:
|
(
|
||||||
stdenv.mkDerivation {
|
{ stdenv }:
|
||||||
name = "global-cursor-theme";
|
stdenv.mkDerivation {
|
||||||
unpackPhase = "true";
|
name = "global-cursor-theme";
|
||||||
outputs = [ "out" ];
|
unpackPhase = "true";
|
||||||
installPhase = ''
|
outputs = [ "out" ];
|
||||||
mkdir -p $out/share/icons/default
|
installPhase = ''
|
||||||
cat << EOF > $out/share/icons/default/index.theme
|
mkdir -p $out/share/icons/default
|
||||||
[Icon Theme]
|
cat << EOF > $out/share/icons/default/index.theme
|
||||||
Name=Default
|
[Icon Theme]
|
||||||
Comment=Default Cursor Theme
|
Name=Default
|
||||||
Inherits=Adwaita
|
Comment=Default Cursor Theme
|
||||||
EOF
|
Inherits=Adwaita
|
||||||
'';
|
EOF
|
||||||
}
|
'';
|
||||||
) { })
|
}
|
||||||
|
)
|
||||||
|
{ })
|
||||||
|
|
||||||
config.boot.kernelPackages.perf
|
perf
|
||||||
rr
|
rr
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
imports = lib.concatLists [
|
imports = lib.concatLists [
|
||||||
[
|
[
|
||||||
./xdg.nix
|
./xdg.nix
|
||||||
|
./ssh.nix
|
||||||
./nvim
|
./nvim
|
||||||
./fish
|
./fish
|
||||||
./kanata
|
./kanata
|
||||||
|
|
@ -43,11 +44,10 @@
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
requirements = [ "graphical" ];
|
requirements = [ "graphical" ];
|
||||||
home-config =
|
home-config =
|
||||||
{
|
{ config
|
||||||
config,
|
, pkgs
|
||||||
pkgs,
|
, lib
|
||||||
lib,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
disableFeatures = [
|
disableFeatures = [
|
||||||
|
|
|
||||||
|
|
@ -5,256 +5,260 @@ inputs@{ machine, ... }:
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
requirements = [ "cli" ];
|
requirements = [ "cli" ];
|
||||||
home-config =
|
home-config =
|
||||||
{
|
{ config
|
||||||
config,
|
, pkgs
|
||||||
pkgs,
|
, lib
|
||||||
lib,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
with builtins;
|
with builtins;
|
||||||
with lib.attrsets;
|
with lib.attrsets;
|
||||||
let
|
let
|
||||||
scripts = (import ./scripts.nix) pkgs;
|
scripts = (import ./scripts.nix) pkgs;
|
||||||
aliases = with scripts; {
|
aliases = with scripts; {
|
||||||
"cp-mov" = cp-media "mov" "movies";
|
"cp-mov" = cp-media "mov" "movies";
|
||||||
"cp-ser" = cp-media "ser" "shows";
|
"cp-ser" = cp-media "ser" "shows";
|
||||||
"cp-ani" = cp-media "ani" "anime";
|
"cp-ani" = cp-media "ani" "anime";
|
||||||
"dumpasm" = "${pkgs.custom.dumpasm}/bin/dumpasm";
|
"ragdoll" = ragdoll;
|
||||||
"p" = builtins.trace calc calc;
|
"dumpasm" = "${pkgs.custom.dumpasm}/bin/dumpasm";
|
||||||
"s" = "systemctl";
|
"p" = calc;
|
||||||
"j" = "journalctl";
|
"s" = "systemctl";
|
||||||
"ju" = "journalctl -u";
|
"j" = "journalctl";
|
||||||
"jfu" = "journalctl -fu";
|
"ju" = "journalctl -u";
|
||||||
"ls" = "${pkgs.eza}/bin/eza --git";
|
"jfu" = "journalctl -fu";
|
||||||
"ll" = "${pkgs.eza}/bin/eza --git";
|
"ls" = "${pkgs.eza}/bin/eza --git";
|
||||||
"lt" = "${pkgs.eza}/bin/eza --long --tree -L 3";
|
"ll" = "${pkgs.eza}/bin/eza --git";
|
||||||
"open" = "${pkgs.xdg-utils}/bin/xdg-open";
|
"lt" = "${pkgs.eza}/bin/eza --long --tree -L 3";
|
||||||
"cb" = "${pkgs.wl-clipboard-rs}/bin/wl-copy";
|
"open" = "${pkgs.xdg-utils}/bin/xdg-open";
|
||||||
"cat" = "${pkgs.bat}/bin/bat";
|
"cb" = "${pkgs.wl-clipboard-rs}/bin/wl-copy";
|
||||||
|
"cat" = "${pkgs.bat}/bin/bat";
|
||||||
|
|
||||||
# "pull" = "${pkgs.git}/bin/git pull";
|
# "pull" = "${pkgs.git}/bin/git pull";
|
||||||
# "push" = "${pkgs.git}/bin/git push";
|
# "push" = "${pkgs.git}/bin/git push";
|
||||||
# "commit" = "${pkgs.git}/bin/git commit";
|
# "commit" = "${pkgs.git}/bin/git commit";
|
||||||
# "add" = "${pkgs.git}/bin/git add";
|
# "add" = "${pkgs.git}/bin/git add";
|
||||||
# "patch" = "${pkgs.git}/bin/git add -p";
|
# "patch" = "${pkgs.git}/bin/git add -p";
|
||||||
# "amend" = "${pkgs.git}/bin/git commit --amend";
|
# "amend" = "${pkgs.git}/bin/git commit --amend";
|
||||||
# "log" = "${pkgs.git}/bin/git log --all --graph --decorate";
|
# "log" = "${pkgs.git}/bin/git log --all --graph --decorate";
|
||||||
# "st" = "${pkgs.git}/bin/git status";
|
# "st" = "${pkgs.git}/bin/git status";
|
||||||
# "checkout" = "${pkgs.git}/bin/git checkout";
|
# "checkout" = "${pkgs.git}/bin/git checkout";
|
||||||
# "rebase" = "${pkgs.git}/bin/git rebase";
|
# "rebase" = "${pkgs.git}/bin/git rebase";
|
||||||
# "stash" = "${pkgs.git}/bin/git stash";
|
# "stash" = "${pkgs.git}/bin/git stash";
|
||||||
|
|
||||||
"edit" = "jj edit";
|
"edit" = "jj edit";
|
||||||
"old" = "jj edit @-";
|
"old" = "jj edit @-";
|
||||||
"new" = "jj edit @+";
|
"new" = "jj edit @+";
|
||||||
"rebase" = "jj rebase";
|
"rebase" = "jj rebase";
|
||||||
"pull" = "jj git fetch; jj catchup";
|
"pull" = "jj git fetch; jj catchup";
|
||||||
"msg" = "jj describe -m";
|
"msg" = "jj describe -m";
|
||||||
"branch" = "jj bookmark set";
|
"branch" = "jj bookmark set";
|
||||||
"stat" = "jj status";
|
"stat" = "jj status";
|
||||||
"push" = "jj git push";
|
"push" = "jj git push";
|
||||||
|
|
||||||
"tidy" = "x test tidy --bless";
|
"tidy" = "x test tidy --bless";
|
||||||
"ui" = "x test tests/ui/";
|
"ui" = "x test tests/ui/";
|
||||||
|
|
||||||
"f" = "nautilus --no-desktop . &";
|
"f" = "nautilus --no-desktop . &";
|
||||||
};
|
};
|
||||||
# extracting any compressed format
|
# extracting any compressed format
|
||||||
extract = ''
|
extract = ''
|
||||||
function extract -a file -d "decompress a file"
|
function extract -a file -d "decompress a file"
|
||||||
if not test -f $file
|
if not test -f $file
|
||||||
echo "'$file' is not a valid file"
|
echo "'$file' is not a valid file"
|
||||||
return 1
|
|
||||||
end
|
|
||||||
switch $file
|
|
||||||
# tar can automatically figure out how to decompress
|
|
||||||
case '*.{tar,tar.{bz2,zst,gz,xz},tbz2,tgz'; ${pkgs.gnutar}/bin/tar xf $file; end
|
|
||||||
case '*.bz2'; bunzip2 $file; end
|
|
||||||
case '*.rar'; unrar e $file; end
|
|
||||||
case '*.gz'; gunzip $file; end
|
|
||||||
case '*.zip'; ${pkgs.unzip}/bin/unzip $file; end
|
|
||||||
case '*.Z'; uncompress $file; end
|
|
||||||
case '*.7z'; 7z x $file; end
|
|
||||||
case '*';
|
|
||||||
echo "'$file' cannot be extracted"
|
|
||||||
return 1
|
return 1
|
||||||
|
end
|
||||||
|
switch $file
|
||||||
|
# tar can automatically figure out how to decompress
|
||||||
|
case '*.{tar,tar.{bz2,zst,gz,xz},tbz2,tgz'; ${pkgs.gnutar}/bin/tar xf $file; end
|
||||||
|
case '*.bz2'; bunzip2 $file; end
|
||||||
|
case '*.rar'; unrar e $file; end
|
||||||
|
case '*.gz'; gunzip $file; end
|
||||||
|
case '*.zip'; ${pkgs.unzip}/bin/unzip $file; end
|
||||||
|
case '*.Z'; uncompress $file; end
|
||||||
|
case '*.7z'; 7z x $file; end
|
||||||
|
case '*';
|
||||||
|
echo "'$file' cannot be extracted"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
'';
|
||||||
'';
|
in
|
||||||
in
|
{
|
||||||
{
|
programs = {
|
||||||
programs = {
|
atuin = {
|
||||||
atuin = {
|
enable = true;
|
||||||
enable = true;
|
enableFishIntegration = true;
|
||||||
enableFishIntegration = true;
|
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
filter_mode_shell_up_key_binding = "workspace";
|
filter_mode_shell_up_key_binding = "workspace";
|
||||||
exit_mode = "return-original";
|
exit_mode = "return-original";
|
||||||
inline_height = 20;
|
inline_height = 20;
|
||||||
workspaces = true;
|
workspaces = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
zoxide = {
|
zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
direnv = {
|
direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# enableFishIntegration = lib.mkDefault true;
|
# enableFishIntegration = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
fzf = {
|
fzf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
fish = {
|
fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = aliases;
|
shellAliases = aliases;
|
||||||
plugins = with pkgs.fishPlugins; [
|
plugins = with pkgs.fishPlugins; [
|
||||||
{
|
{
|
||||||
name = "bang-bang";
|
name = "bang-bang";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "oh-my-fish";
|
owner = "oh-my-fish";
|
||||||
repo = "plugin-bang-bang";
|
repo = "plugin-bang-bang";
|
||||||
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
|
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
|
||||||
hash = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=";
|
hash = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tide";
|
||||||
|
inherit (tide) src;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "sponge";
|
||||||
|
inherit (sponge) src;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "autopair";
|
||||||
|
inherit (autopair) src;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
functions = {
|
||||||
|
fish_jj_prompt = {
|
||||||
|
body = ''
|
||||||
|
if not ${config.programs.jujutsu.package}/bin/jj root --quiet &>/dev/null
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
${config.programs.jujutsu.package}/bin/jj log --ignore-working-copy --no-graph --color always -r @ -T '
|
||||||
|
separate(
|
||||||
|
" ",
|
||||||
|
bookmarks.join(", "),
|
||||||
|
change_id.shortest(),
|
||||||
|
commit_id.shortest(),
|
||||||
|
if(conflict, "conflict"),
|
||||||
|
if(empty, "empty"),
|
||||||
|
if(divergent, "divergent"),
|
||||||
|
if(hidden, "hidden"),
|
||||||
|
)
|
||||||
|
'
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "tide";
|
|
||||||
inherit (tide) src;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "sponge";
|
|
||||||
inherit (sponge) src;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "autopair";
|
|
||||||
inherit (autopair) src;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
functions = {
|
_tide_item_jj = {
|
||||||
fish_jj_prompt = {
|
body = ''
|
||||||
body = ''
|
set -l _tide_item_jj_color $_tide_location_color
|
||||||
if not ${config.programs.jujutsu.package}/bin/jj root --quiet &>/dev/null
|
echo -ns $_tide_item_jj_color" ("(fish_jj_prompt)$_tide_item_jj_color")"
|
||||||
return 1
|
'';
|
||||||
end
|
};
|
||||||
|
|
||||||
${config.programs.jujutsu.package}/bin/jj log --ignore-working-copy --no-graph --color always -r @ -T '
|
_tide_item_git = {
|
||||||
separate(
|
body = ''
|
||||||
" ",
|
if not test -d .jj
|
||||||
bookmarks.join(", "),
|
fish_git_prompt '%s'
|
||||||
change_id.shortest(),
|
end
|
||||||
commit_id.shortest(),
|
'';
|
||||||
if(conflict, "conflict"),
|
};
|
||||||
if(empty, "empty"),
|
|
||||||
if(divergent, "divergent"),
|
|
||||||
if(hidden, "hidden"),
|
|
||||||
)
|
|
||||||
'
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_tide_item_jj = {
|
interactiveShellInit = ''
|
||||||
body = ''
|
fish_vi_key_bindings
|
||||||
set -l _tide_item_jj_color $_tide_location_color
|
|
||||||
echo -ns $_tide_item_jj_color" ("(fish_jj_prompt)$_tide_item_jj_color")"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
_tide_item_git = {
|
bind \e\[3\;5~ kill-word
|
||||||
body = ''
|
bind \cH backward-kill-word
|
||||||
if not test -d .jj
|
bind \cV beginning-of-line
|
||||||
fish_git_prompt '%s'
|
bind \f end-of-line
|
||||||
end
|
|
||||||
'';
|
bind -M insert \e\[3\;5~ kill-word
|
||||||
};
|
bind -M insert \cH backward-kill-word
|
||||||
|
bind -M insert \cV beginning-of-line
|
||||||
|
bind -M insert \f end-of-line
|
||||||
|
|
||||||
|
bind \cl 'clear; commandline -f repaint'
|
||||||
|
bind -M insert \cl 'clear; commandline -f repaint'
|
||||||
|
|
||||||
|
set -g sponge_successful_exit_codes 0
|
||||||
|
set -g sponge_allow_previously_successful false
|
||||||
|
set -g sponge_delay 10
|
||||||
|
|
||||||
|
${config.programs.jujutsu.package}/bin/jj util completion fish | source
|
||||||
|
|
||||||
|
# if set -q tide_left_prompt_items; and not contains "jj" $tide_left_prompt_items
|
||||||
|
# set -l tide_item_jj_idx (contains -i "pwd" $tide_left_prompt_items)
|
||||||
|
# if test $tide_item_jj_idx
|
||||||
|
# set tide_left_prompt_items \
|
||||||
|
# $tide_left_prompt_items[1..$tide_item_jj_idx] \
|
||||||
|
# jj \
|
||||||
|
# $tide_left_prompt_items[(math $tide_item_jj_idx + 1)..-1]
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
function t
|
||||||
|
cd "$(${pkgs.custom.t}/bin/t-rs $argv | tail -n 1)"
|
||||||
|
end
|
||||||
|
|
||||||
|
function temp
|
||||||
|
t $argv
|
||||||
|
end
|
||||||
|
|
||||||
|
function rs
|
||||||
|
cd "$(${pkgs.custom.t}/bin/t-rs $argv | tail -n 1)"
|
||||||
|
cargo init . --bin --name $(basename "$PWD")
|
||||||
|
vim src/main.rs
|
||||||
|
end
|
||||||
|
|
||||||
|
fish_add_path "$HOME/.cargo/bin"
|
||||||
|
fish_add_path "$HOME/.local/bin"
|
||||||
|
fish_add_path "$HOME/Documents/scripts"
|
||||||
|
fish_add_path "$HOME/.nix-profile/bin"
|
||||||
|
|
||||||
|
function fish_greeting
|
||||||
|
${pkgs.blahaj}/bin/blahaj -s
|
||||||
|
echo "mrow! This is $(uname -n) and ur $(whoami) :3"
|
||||||
|
end
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
interactiveShellInit = ''
|
home.activation = {
|
||||||
fish_vi_key_bindings
|
setupTide = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
setupTide() {
|
||||||
bind \e\[3\;5~ kill-word
|
${pkgs.fish}/bin/fish -c ${lib.escapeShellArg "tide configure ${
|
||||||
bind \cH backward-kill-word
|
lib.cli.toCommandLineShell (optionName: {
|
||||||
bind \cV beginning-of-line
|
option = if builtins.stringLength optionName > 1 then "--${optionName}" else "-${optionName}";
|
||||||
bind \f end-of-line
|
sep = null;
|
||||||
|
explicitBool = false;
|
||||||
bind -M insert \e\[3\;5~ kill-word
|
}) {
|
||||||
bind -M insert \cH backward-kill-word
|
auto = true;
|
||||||
bind -M insert \cV beginning-of-line
|
style = "Lean";
|
||||||
bind -M insert \f end-of-line
|
prompt_colors = "True color";
|
||||||
|
show_time = "No";
|
||||||
bind \cl 'clear; commandline -f repaint'
|
lean_prompt_height = "Two lines";
|
||||||
bind -M insert \cl 'clear; commandline -f repaint'
|
prompt_connection = "Disconnected";
|
||||||
|
prompt_spacing = "Compact";
|
||||||
set -g sponge_successful_exit_codes 0
|
icons = "Few icons";
|
||||||
set -g sponge_allow_previously_successful false
|
transient = "Yes";
|
||||||
set -g sponge_delay 10
|
}
|
||||||
|
}"} >/dev/null 2>&1
|
||||||
${config.programs.jujutsu.package}/bin/jj util completion fish | source
|
}
|
||||||
|
setupTide
|
||||||
# if set -q tide_left_prompt_items; and not contains "jj" $tide_left_prompt_items
|
|
||||||
# set -l tide_item_jj_idx (contains -i "pwd" $tide_left_prompt_items)
|
|
||||||
# if test $tide_item_jj_idx
|
|
||||||
# set tide_left_prompt_items \
|
|
||||||
# $tide_left_prompt_items[1..$tide_item_jj_idx] \
|
|
||||||
# jj \
|
|
||||||
# $tide_left_prompt_items[(math $tide_item_jj_idx + 1)..-1]
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
function t
|
|
||||||
cd "$(${pkgs.custom.t}/bin/t-rs $argv | tail -n 1)"
|
|
||||||
end
|
|
||||||
|
|
||||||
function temp
|
|
||||||
t $argv
|
|
||||||
end
|
|
||||||
|
|
||||||
function rs
|
|
||||||
cd "$(${pkgs.custom.t}/bin/t-rs $argv | tail -n 1)"
|
|
||||||
cargo init . --bin --name $(basename "$PWD")
|
|
||||||
vim src/main.rs
|
|
||||||
end
|
|
||||||
|
|
||||||
fish_add_path "$HOME/.cargo/bin"
|
|
||||||
fish_add_path "$HOME/.local/bin"
|
|
||||||
fish_add_path "$HOME/Documents/scripts"
|
|
||||||
fish_add_path "$HOME/.nix-profile/bin"
|
|
||||||
|
|
||||||
function fish_greeting
|
|
||||||
${pkgs.blahaj}/bin/blahaj -s
|
|
||||||
echo "mrow! This is $(uname -n) and ur $(whoami) :3"
|
|
||||||
end
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.activation = {
|
|
||||||
setupTide = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
||||||
setupTide() {
|
|
||||||
${pkgs.fish}/bin/fish -c ${lib.escapeShellArg "tide configure ${
|
|
||||||
lib.cli.toGNUCommandLineShell { } {
|
|
||||||
auto = true;
|
|
||||||
style = "Lean";
|
|
||||||
prompt_colors = "True color";
|
|
||||||
show_time = "No";
|
|
||||||
lean_prompt_height = "Two lines";
|
|
||||||
prompt_connection = "Disconnected";
|
|
||||||
prompt_spacing = "Compact";
|
|
||||||
icons = "Few icons";
|
|
||||||
transient = "Yes";
|
|
||||||
}
|
|
||||||
}"} >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
setupTide
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,4 +22,16 @@
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
"${s}/bin/cp-${name}";
|
"${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";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ inputs@{ machine, ... }:
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
requirements = [ "cli" ];
|
requirements = [ "cli" ];
|
||||||
home-config = _: {
|
home-config = _: {
|
||||||
|
home.file.".gitignore".text = ''
|
||||||
|
server\ exited\ unexpectedly
|
||||||
|
'';
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
signing.key = "/home/jana/.ssh/id_ed25519.pub";
|
signing.key = "/home/jana/.ssh/id_ed25519.pub";
|
||||||
|
|
|
||||||
|
|
@ -100,8 +100,6 @@ inputs@{ machine, ... }:
|
||||||
"-c"
|
"-c"
|
||||||
script
|
script
|
||||||
];
|
];
|
||||||
in
|
|
||||||
{
|
|
||||||
tug = [
|
tug = [
|
||||||
"bookmark"
|
"bookmark"
|
||||||
"move"
|
"move"
|
||||||
|
|
@ -110,6 +108,9 @@ inputs@{ machine, ... }:
|
||||||
"--to"
|
"--to"
|
||||||
"coalesce(@ & ~empty(), @-)"
|
"coalesce(@ & ~empty(), @-)"
|
||||||
];
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit tug;
|
||||||
fuck = [
|
fuck = [
|
||||||
"bookmark"
|
"bookmark"
|
||||||
"move"
|
"move"
|
||||||
|
|
@ -153,6 +154,18 @@ inputs@{ machine, ... }:
|
||||||
"--from"
|
"--from"
|
||||||
"trunk()"
|
"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 = {
|
templates = {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,11 @@ inputs@{ machine, ... }:
|
||||||
draw_minimal_borders = false;
|
draw_minimal_borders = false;
|
||||||
hide_window_decorations = true;
|
hide_window_decorations = true;
|
||||||
|
|
||||||
shell = "${pkgs.tmux}/bin/tmux";
|
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";
|
||||||
clipboard_control = "write-clipboard write-primary read-clipboard read-primary";
|
clipboard_control = "write-clipboard write-primary read-clipboard read-primary";
|
||||||
|
|
||||||
foreground = "#fcfcfc";
|
foreground = "#fcfcfc";
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ inputs@{ machine, ... }:
|
||||||
]
|
]
|
||||||
++ (pkgs.lib.splitString " " cmd);
|
++ (pkgs.lib.splitString " " cmd);
|
||||||
|
|
||||||
wallpaper = ("${pkgs.custom.raw-data}/pacific.png");
|
wallpaper = "${pkgs.custom.raw-data}/pacific.png";
|
||||||
matugenSchemeType = "scheme-tonal-spot";
|
matugenSchemeType = "scheme-tonal-spot";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -107,9 +107,12 @@ vim.cmd([[
|
||||||
|
|
||||||
-- multicursor
|
-- multicursor
|
||||||
vim.g.VM_default_mappings = 1
|
vim.g.VM_default_mappings = 1
|
||||||
|
vim.g.VM_mouse_mappings = 1
|
||||||
vim.g.VM_reselect_first = 1
|
vim.g.VM_reselect_first = 1
|
||||||
vim.g.VM_notify_previously_selected = 1
|
vim.g.VM_notify_previously_selected = 1
|
||||||
vim.g.VM_theme = "iceblue"
|
vim.g.VM_theme = "iceblue"
|
||||||
|
-- vim.g.VM_maps["Undo"] = 'u'
|
||||||
|
-- vim.g.VM_maps["Redo"] = '<C-r>'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,10 @@ inputs@{ machine, ... }:
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
requirements = [ "cli" ];
|
requirements = [ "cli" ];
|
||||||
home-config =
|
home-config =
|
||||||
{
|
{ pkgs
|
||||||
pkgs,
|
, flakes
|
||||||
flakes,
|
, lib
|
||||||
lib,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
nvim_mime_types = [
|
nvim_mime_types = [
|
||||||
|
|
@ -58,9 +57,11 @@ inputs@{ machine, ... }:
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.mimeApps.associations.added = lib.mergeAttrsList (
|
xdg.mimeApps.associations.added = lib.mergeAttrsList (
|
||||||
map (mime: {
|
map
|
||||||
${mime} = [ "${desktop-entry-name}.desktop" ];
|
(mime: {
|
||||||
}) nvim_mime_types
|
${mime} = [ "${desktop-entry-name}.desktop" ];
|
||||||
|
})
|
||||||
|
nvim_mime_types
|
||||||
);
|
);
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
|
|
||||||
|
|
@ -384,7 +384,7 @@ in
|
||||||
code_action.keys = {
|
code_action.keys = {
|
||||||
quit = "<Esc>";
|
quit = "<Esc>";
|
||||||
};
|
};
|
||||||
symbol_in_winbar.enable = false;
|
symbol_in_winbar.enable = true;
|
||||||
implement.enable = true;
|
implement.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -435,8 +435,8 @@ in
|
||||||
__unkeyed-1 = "filetype";
|
__unkeyed-1 = "filetype";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
lualine_y = [ { __unkeyed-1 = "progress"; } ];
|
lualine_y = [{ __unkeyed-1 = "progress"; }];
|
||||||
lualine_z = [ { __unkeyed-1 = "location"; } ];
|
lualine_z = [{ __unkeyed-1 = "location"; }];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
42
programs/ssh.nix
Normal file
42
programs/ssh.nix
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
@ -14,32 +14,33 @@ inputs@{ machine, ... }:
|
||||||
|
|
||||||
shortcut = "k";
|
shortcut = "k";
|
||||||
|
|
||||||
plugins = with pkgs; [
|
plugins =
|
||||||
{
|
with pkgs;
|
||||||
plugin = tmuxPlugins.mkTmuxPlugin {
|
with tmuxPlugins;
|
||||||
pluginName = "suspend";
|
[
|
||||||
version = "1a2f806";
|
{
|
||||||
src = pkgs.fetchFromGitHub {
|
plugin = mkTmuxPlugin {
|
||||||
owner = "MunifTanjim";
|
pluginName = "suspend";
|
||||||
repo = "tmux-suspend";
|
version = "1a2f806";
|
||||||
rev = "1a2f806666e0bfed37535372279fa00d27d50d14";
|
src = pkgs.fetchFromGitHub {
|
||||||
sha256 = "0j7vjrwc7gniwkv1076q3wc8ccwj42zph5wdmsm9ibz6029wlmzv";
|
owner = "MunifTanjim";
|
||||||
|
repo = "tmux-suspend";
|
||||||
|
rev = "1a2f806666e0bfed37535372279fa00d27d50d14";
|
||||||
|
sha256 = "0j7vjrwc7gniwkv1076q3wc8ccwj42zph5wdmsm9ibz6029wlmzv";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
extraConfig = ''
|
||||||
extraConfig = ''
|
set -g @suspend_key 'F11'
|
||||||
set -g @suspend_key 'F11'
|
'';
|
||||||
'';
|
}
|
||||||
}
|
{
|
||||||
{
|
plugin = mode-indicator;
|
||||||
plugin = tmuxPlugins.mode-indicator;
|
}
|
||||||
}
|
];
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
# unbind every single normal keybinding
|
# unbind every single normal keybinding
|
||||||
unbind-key -a
|
unbind -a
|
||||||
|
|
||||||
set -g status-left "#{?client_prefix,#[bg=colour2],#[bg=colour1]}#[fg=colour0] #S "
|
|
||||||
|
|
||||||
# for special characters to work right
|
# for special characters to work right
|
||||||
# like <C-_>
|
# like <C-_>
|
||||||
|
|
@ -60,39 +61,40 @@ inputs@{ machine, ... }:
|
||||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
||||||
bind v copy-mode
|
bind v copy-mode
|
||||||
bind p paste-buffer -p
|
bind p paste-buffer -p
|
||||||
|
bind d detach
|
||||||
set -s set-clipboard on
|
set -s set-clipboard on
|
||||||
|
|
||||||
# get back normal terminal emulator bindings
|
# get back normal terminal emulator bindings
|
||||||
bind-key -n S-PPage copy-mode -u
|
bind -n S-PPage copy-mode -u
|
||||||
bind-key -T copy-mode -n S-NPage send-keys -X page-down
|
bind -T copy-mode -n S-NPage send-keys -X page-down
|
||||||
|
|
||||||
# don't scroll to end when copying with mouse
|
# don't scroll to end when copying with mouse
|
||||||
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe
|
bind -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe
|
||||||
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe
|
bind -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 -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 -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 -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
|
bind -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe
|
||||||
|
|
||||||
# window control
|
# window control
|
||||||
bind t new-window -c "#{pane_current_path}"
|
bind t new-window -c "#{pane_current_path}"
|
||||||
bind-key Tab next-window
|
bind Tab next-window
|
||||||
bind-key BTab previous-window
|
bind BTab previous-window
|
||||||
set -g automatic-rename-format "#{?#{==:#{pane_current_path},$HOME},~,#{b:pane_current_path}} (#{pane_current_command})"
|
set -g automatic-rename-format "#{?#{==:#{pane_current_path},$HOME},~,#{b:pane_current_path}} (#{pane_current_command})"
|
||||||
set -g renumber-windows on
|
set -g renumber-windows on
|
||||||
bind-key Q confirm-before -p "kill-window #W? (y/n)" kill-window
|
bind Q confirm-before -p "kill-window #W? (y/n)" kill-window
|
||||||
bind A last-window
|
bind A last-window
|
||||||
|
|
||||||
bind-key 1 select-window -t :0
|
bind 1 select-window -t :0
|
||||||
bind-key 2 select-window -t :1
|
bind 2 select-window -t :1
|
||||||
bind-key 3 select-window -t :2
|
bind 3 select-window -t :2
|
||||||
bind-key 4 select-window -t :3
|
bind 4 select-window -t :3
|
||||||
bind-key 5 select-window -t :4
|
bind 5 select-window -t :4
|
||||||
bind-key 6 select-window -t :5
|
bind 6 select-window -t :5
|
||||||
bind-key 7 select-window -t :6
|
bind 7 select-window -t :6
|
||||||
bind-key 8 select-window -t :7
|
bind 8 select-window -t :7
|
||||||
bind-key 9 select-window -t :8
|
bind 9 select-window -t :8
|
||||||
bind-key 0 select-window -t :9
|
bind 0 select-window -t :9
|
||||||
|
|
||||||
# pane control
|
# pane control
|
||||||
bind h select-pane -L
|
bind h select-pane -L
|
||||||
|
|
@ -111,40 +113,44 @@ inputs@{ machine, ... }:
|
||||||
bind S-Down split-window -v -c "#{pane_current_path}"
|
bind S-Down split-window -v -c "#{pane_current_path}"
|
||||||
bind S-Up split-window -h -b -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 S-Right split-window -v -b -c "#{pane_current_path}"
|
||||||
bind-key -r -T prefix M-h resize-pane -L 5
|
bind -r -T prefix M-h resize-pane -L 5
|
||||||
bind-key -r -T prefix M-j resize-pane -D 5
|
bind -r -T prefix M-j resize-pane -D 5
|
||||||
bind-key -r -T prefix M-k resize-pane -U 5
|
bind -r -T prefix M-k resize-pane -U 5
|
||||||
bind-key -r -T prefix M-l resize-pane -R 5
|
bind -r -T prefix M-l resize-pane -R 5
|
||||||
bind x swap-pane -D
|
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
|
# double-click ^k (or lshift with kanata) for previous pane like ^w in vim
|
||||||
bind -r ^k select-pane -l
|
bind -r ^k select-pane -l
|
||||||
bind-key q confirm-before -p "kill-pane #P? (y/n)" kill-pane
|
bind q confirm-before -p "kill-pane #P? (y/n)" kill-pane
|
||||||
|
|
||||||
# bind-key o choose-tree -wZ
|
# bind o choose-tree -wZ
|
||||||
# bind-key O choose-tree -sZ
|
# bind O choose-tree -sZ
|
||||||
|
|
||||||
# get back command mode and some other basics...
|
# get back command mode and some other basics...
|
||||||
bind : command-prompt
|
bind : command-prompt
|
||||||
bind r source-file ~/.config/tmux/tmux.conf \; display "config reloaded"
|
bind r source-file ~/.config/tmux/tmux.conf \; display "config reloaded"
|
||||||
bind-key ? list-keys
|
bind ? list-keys
|
||||||
|
|
||||||
# Scroll oin man etc
|
# Scroll in man etc
|
||||||
tmux_commands_with_legacy_scroll="nano less more man git"
|
tmux_commands_with_legacy_scroll="nano less more man git"
|
||||||
|
|
||||||
bind-key -T root WheelUpPane \
|
bind -T root WheelUpPane \
|
||||||
if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \
|
if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \
|
||||||
'send -Mt=' \
|
'send -Mt=' \
|
||||||
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
||||||
"send -t= Up" "copy-mode -et="'
|
"send -t= Up" "copy-mode -et="'
|
||||||
|
|
||||||
bind-key -T root WheelDownPane \
|
bind -T root WheelDownPane \
|
||||||
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
|
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
|
||||||
'send -Mt=' \
|
'send -Mt=' \
|
||||||
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
|
||||||
"send -t= Down" "send -Mt="'
|
"send -t= Down" "send -Mt="'
|
||||||
|
|
||||||
bind-key -T copy-mode-vi ] \
|
bind -T copy-mode-vi ] \
|
||||||
send-keys -X clear-selection \; \
|
send-keys -X clear-selection \; \
|
||||||
send-keys -X search-forward "--> " \; \
|
send-keys -X search-forward "--> " \; \
|
||||||
send-keys -X next-word \; \
|
send-keys -X next-word \; \
|
||||||
|
|
@ -152,7 +158,7 @@ inputs@{ machine, ... }:
|
||||||
send-keys -X jump-forward ":" \; \
|
send-keys -X jump-forward ":" \; \
|
||||||
send-keys -X jump-to-forward ":" \;
|
send-keys -X jump-to-forward ":" \;
|
||||||
|
|
||||||
bind-key -T copy-mode-vi [ \
|
bind -T copy-mode-vi [ \
|
||||||
send-keys -X clear-selection \; \
|
send-keys -X clear-selection \; \
|
||||||
send-keys -X start-of-line \; \
|
send-keys -X start-of-line \; \
|
||||||
send-keys -X search-backward "--> " \; \
|
send-keys -X search-backward "--> " \; \
|
||||||
|
|
@ -161,10 +167,8 @@ inputs@{ machine, ... }:
|
||||||
send-keys -X jump-forward ":" \; \
|
send-keys -X jump-forward ":" \; \
|
||||||
send-keys -X jump-to-forward ":" \;
|
send-keys -X jump-to-forward ":" \;
|
||||||
|
|
||||||
bind-key [ copy-mode \; send-keys [
|
bind [ copy-mode \; send-keys [
|
||||||
bind-key ] copy-mode \; send-keys ]
|
bind ] copy-mode \; send-keys ]
|
||||||
|
|
||||||
bind d select-pane -l \; send-keys [
|
|
||||||
|
|
||||||
# f: file search
|
# f: file search
|
||||||
# unbound: git files
|
# unbound: git files
|
||||||
|
|
@ -174,32 +178,31 @@ inputs@{ machine, ... }:
|
||||||
# M-i: ips
|
# M-i: ips
|
||||||
# include line and column numbers in file search
|
# include line and column numbers in file search
|
||||||
# rebind `f` so we can reuse it here
|
# rebind `f` so we can reuse it here
|
||||||
bind-key -T prefix C-f command-prompt { find-window -Z "%%" }
|
bind -T prefix C-f command-prompt { find-window -Z "%%" }
|
||||||
# jyn is so sorry, and so am I now
|
# jyn is so sorry, and so am I now
|
||||||
# https://github.com/jyn514/dotfiles/blob/65be3c004113290f41f858f4d7f1a6799fabab19/config/tmux.conf#L203-L212
|
# https://github.com/jyn514/dotfiles/blob/65be3c004113290f41f858f4d7f1a6799fabab19/config/tmux.conf#L203-L212
|
||||||
# see `search-regex.sh` for wtf this means
|
# see `search-regex.sh` for wtf this means
|
||||||
# TODO: include shell variable names
|
# TODO: include shell variable names
|
||||||
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]+)?))'
|
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]+)?))'
|
||||||
# urls
|
# urls
|
||||||
bind-key u copy-mode \; send-keys -X search-backward '(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&*+-]*'
|
bind u copy-mode \; send-keys -X search-backward '(https?://|git@|git://|ssh://|ftp://|file:///)[[:alnum:]?=%/_.:,;~@!#$&*+-]*'
|
||||||
# hashes
|
# hashes
|
||||||
bind-key g copy-mode \; send-keys -X search-backward '[[:<:]]([0-9a-f]{7,40}|[[:alnum:]]{52}|[0-9a-f]{64})[[:>:]]'
|
bind g copy-mode \; send-keys -X search-backward '[[:<:]]([0-9a-f]{7,40}|[[:alnum:]]{52}|[0-9a-f]{64})[[:>:]]'
|
||||||
# ips
|
# ips
|
||||||
bind-key M-i copy-mode \; send-keys -X search-backward '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
|
bind M-i copy-mode \; send-keys -X search-backward '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
|
||||||
|
|
||||||
bind-key -T copy-mode-vi o send-keys -X copy-pipe \
|
bind -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' \; \
|
'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 }
|
if -F "#{alternate_on}" { send-keys -X cancel }
|
||||||
# save the buffer, then open an editor in the current pane
|
# save the buffer, then open an editor in the current pane
|
||||||
bind-key -T copy-mode-vi O send-keys -X copy-pipe-and-cancel \
|
bind -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"'
|
'tmux send-keys "C-q"; xargs -I {} tmux send-keys "vim {}"; tmux send-keys "C-m"'
|
||||||
# search for the highlighted text
|
# search for the highlighted text
|
||||||
bind-key -T copy-mode-vi s send-keys -X copy-pipe \
|
bind -T copy-mode-vi s send-keys -X copy-pipe \
|
||||||
"cd #{pane_current_path}; xargs -I {} open 'https://www.google.com/search?q={}'" \; \
|
"cd #{pane_current_path}; xargs -I {} open 'https://www.google.com/search?q={}'" \; \
|
||||||
if -F "#{alternate_on}" { send-keys -X cancel }
|
if -F "#{alternate_on}" { send-keys -X cancel }
|
||||||
# save buffer and retype into the shell
|
# save buffer and retype into the shell
|
||||||
bind-key -T copy-mode-vi Tab send-keys -X copy-selection-and-cancel \; paste-buffer -p
|
bind -T copy-mode-vi Tab send-keys -X copy-selection-and-cancel \; paste-buffer -p
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue