[feat] Update flake.lock and add start-tmux script
This commit is contained in:
30
config/nix/flake.lock
generated
30
config/nix/flake.lock
generated
@@ -44,11 +44,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704982712,
|
"lastModified": 1706830856,
|
||||||
"narHash": "sha256-2Ptt+9h8dczgle2Oo6z5ni5rt/uLMG47UFTR1ry/wgg=",
|
"narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "07f6395285469419cf9d078f59b5b49993198c00",
|
"rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -125,11 +125,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707683400,
|
"lastModified": 1707919853,
|
||||||
"narHash": "sha256-Zc+J3UO1Xpx+NL8UB6woPHyttEy9cXXtm+0uWwzuYDc=",
|
"narHash": "sha256-qxmBGDzutuJ/tsX4gp+Mr7fjxOZBbeT9ixhS5o4iFOw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "21b078306a2ab68748abf72650db313d646cf2ca",
|
"rev": "043ba285c6dc20f36441d48525402bcb9743c498",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -148,11 +148,11 @@
|
|||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "contrib",
|
"dir": "contrib",
|
||||||
"lastModified": 1706140641,
|
"lastModified": 1707868264,
|
||||||
"narHash": "sha256-H1qHhkf7sF7yrG2rb9Ks1Y4EtLY3cXGp16KCGveJWY4=",
|
"narHash": "sha256-Ewc5fxKb09XQeO6LeKmko0x7MxKmVCGUYwKq7w8sZD0=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "neovim",
|
"repo": "neovim",
|
||||||
"rev": "4e59422e1d4950a3042bad41a7b81c8db4f8b648",
|
"rev": "a376d979bda103fa9998d05c3cc4ba56d3c3cece",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -171,11 +171,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706141075,
|
"lastModified": 1707935913,
|
||||||
"narHash": "sha256-o66/XFTXmcJSpEcO508V5r765HtgT8qtr+H4LRIB9BY=",
|
"narHash": "sha256-uAkWeyJUNyZS9/u9huCoAJXyTiHw1F+5a91IDujPppk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "neovim-nightly-overlay",
|
"repo": "neovim-nightly-overlay",
|
||||||
"rev": "1da2e054a16309d7d7f7669438c8b9a5ef1b4642",
|
"rev": "b57bf64254630de4920177333f06b341653b1f28",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -186,11 +186,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706006310,
|
"lastModified": 1707877513,
|
||||||
"narHash": "sha256-nDPz0fj0IFcDhSTlXBU2aixcnGs2Jm4Zcuoj0QtmiXQ=",
|
"narHash": "sha256-sp0w2apswd3wv0sAEF7StOGHkns3XUQaO5erhWFZWXk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b43bb235efeab5324c5e486882ef46749188eee2",
|
"rev": "89653a03e0915e4a872788d10680e7eec92f8600",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -2,177 +2,178 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
# https://mipmip.github.io/home-manager-option-search/
|
start-tmux = (import ./scripts/start-tmux.nix) pkgs;
|
||||||
{
|
in
|
||||||
imports = [
|
# https://mipmip.github.io/home-manager-option-search/
|
||||||
# Include the results of the hardware scan.
|
{
|
||||||
./tmux.nix
|
imports = [
|
||||||
./wezterm.nix
|
# Include the results of the hardware scan.
|
||||||
./hyprland.nix
|
./tmux.nix
|
||||||
];
|
./wezterm.nix
|
||||||
|
./hyprland.nix
|
||||||
programs = {
|
|
||||||
fish = {
|
|
||||||
enable = true;
|
|
||||||
shellAbbrs = {
|
|
||||||
vim = "nvim";
|
|
||||||
vi = "nvim";
|
|
||||||
nv = "nvim";
|
|
||||||
g = "git";
|
|
||||||
cd = "z";
|
|
||||||
ls = "exa";
|
|
||||||
};
|
|
||||||
interactiveShellInit = ''
|
|
||||||
set fish_greeting
|
|
||||||
${pkgs.macchina.outPath}/bin/macchina
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
nushell = {
|
|
||||||
enable = true;
|
|
||||||
shellAliases = {
|
|
||||||
"cd" = "z";
|
|
||||||
};
|
|
||||||
package = pkgs.nushellFull;
|
|
||||||
configFile.text = ''
|
|
||||||
$env.config = {
|
|
||||||
show_banner: false,
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
eza = {
|
|
||||||
enable = true;
|
|
||||||
enableAliases = true;
|
|
||||||
git = true;
|
|
||||||
icons = true;
|
|
||||||
};
|
|
||||||
carapace = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.fzf;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
tmux.enableShellIntegration = true;
|
|
||||||
};
|
|
||||||
keychain = {
|
|
||||||
enable = true;
|
|
||||||
keys = ["id_ed25519"];
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
yazi = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
foot = {
|
|
||||||
enable = pkgs.stdenv.isLinux;
|
|
||||||
server.enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
shell = "${pkgs.fish.outPath}/bin/fish";
|
|
||||||
font = "Hasklug Nerd Font Mono:size=13";
|
|
||||||
initial-window-size-pixels = "1440x800";
|
|
||||||
};
|
|
||||||
colors = {
|
|
||||||
foreground = "f8f8f2";
|
|
||||||
background = 000000;
|
|
||||||
alpha = 0.8;
|
|
||||||
|
|
||||||
"136" = "af8700";
|
|
||||||
|
|
||||||
regular0 = "21222c";
|
|
||||||
regular1 = "ff5555";
|
|
||||||
regular2 = "50fa7b";
|
|
||||||
regular3 = "f1fa8c";
|
|
||||||
regular4 = "bd93f9";
|
|
||||||
regular5 = "ff79c6";
|
|
||||||
regular6 = "8be9fd";
|
|
||||||
regular7 = "f8f8f2";
|
|
||||||
|
|
||||||
bright0 = "6272a4";
|
|
||||||
bright1 = "ff6e6e";
|
|
||||||
bright2 = "69ff94";
|
|
||||||
bright3 = "ffffa5";
|
|
||||||
bright4 = "d6acff";
|
|
||||||
bright5 = "ff92df";
|
|
||||||
bright6 = "a4ffff";
|
|
||||||
bright7 = "ffffff";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
home-manager = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
|
||||||
# manage.
|
|
||||||
username = "fs0c131y";
|
|
||||||
homeDirectory = "/home/fs0c131y";
|
|
||||||
|
|
||||||
stateVersion = "23.11";
|
|
||||||
|
|
||||||
packages = [
|
|
||||||
pkgs.macchina
|
|
||||||
pkgs.alejandra
|
|
||||||
pkgs.neovim-nightly
|
|
||||||
pkgs.cachix
|
|
||||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
|
||||||
# # "Hello, world!" when run.
|
|
||||||
# pkgs.hello
|
|
||||||
|
|
||||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
|
||||||
# # overrides. You can do that directly here, just don't forget the
|
|
||||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
|
||||||
# # fonts?
|
|
||||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
|
||||||
|
|
||||||
# # You can also create simple shell scripts directly inside your
|
|
||||||
# # configuration. For example, this adds a command 'my-hello' to your
|
|
||||||
# # environment:
|
|
||||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
|
||||||
# echo "Hello, ${config.home.username}!"
|
|
||||||
# '')
|
|
||||||
];
|
];
|
||||||
|
|
||||||
file = {
|
programs = {
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
fish = {
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
enable = true;
|
||||||
# # symlink to the Nix store copy.
|
shellAbbrs = {
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
vim = "nvim";
|
||||||
|
vi = "nvim";
|
||||||
|
nv = "nvim";
|
||||||
|
g = "git";
|
||||||
|
cd = "z";
|
||||||
|
ls = "exa";
|
||||||
|
t = "${start-tmux}";
|
||||||
|
};
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set fish_greeting
|
||||||
|
${pkgs.macchina.outPath}/bin/macchina
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
nushell = {
|
||||||
# ".gradle/gradle.properties".text = ''
|
enable = true;
|
||||||
# org.gradle.console=verbose
|
shellAliases = {
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
"cd" = "z";
|
||||||
# '';
|
};
|
||||||
|
package = pkgs.nushellFull;
|
||||||
|
configFile.text = ''
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false,
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
eza = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
carapace = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fzf;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
tmux.enableShellIntegration = true;
|
||||||
|
};
|
||||||
|
keychain = {
|
||||||
|
enable = true;
|
||||||
|
keys = ["id_ed25519"];
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
foot = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
server.enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
shell = "${pkgs.fish.outPath}/bin/fish";
|
||||||
|
font = "Hasklug Nerd Font Mono:size=13";
|
||||||
|
initial-window-size-pixels = "1440x800";
|
||||||
|
};
|
||||||
|
colors = {
|
||||||
|
foreground = "f8f8f2";
|
||||||
|
background = 000000;
|
||||||
|
alpha = 0.8;
|
||||||
|
|
||||||
|
"136" = "af8700";
|
||||||
|
|
||||||
|
regular0 = "21222c";
|
||||||
|
regular1 = "ff5555";
|
||||||
|
regular2 = "50fa7b";
|
||||||
|
regular3 = "f1fa8c";
|
||||||
|
regular4 = "bd93f9";
|
||||||
|
regular5 = "ff79c6";
|
||||||
|
regular6 = "8be9fd";
|
||||||
|
regular7 = "f8f8f2";
|
||||||
|
|
||||||
|
bright0 = "6272a4";
|
||||||
|
bright1 = "ff6e6e";
|
||||||
|
bright2 = "69ff94";
|
||||||
|
bright3 = "ffffa5";
|
||||||
|
bright4 = "d6acff";
|
||||||
|
bright5 = "ff92df";
|
||||||
|
bright6 = "a4ffff";
|
||||||
|
bright7 = "ffffff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
home-manager = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sessionVariables = {
|
home = {
|
||||||
EDITOR = "nvim";
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
SHELL = "${pkgs.fish.outPath}/bin/fish";
|
# manage.
|
||||||
|
username = "fs0c131y";
|
||||||
|
homeDirectory = "/home/fs0c131y";
|
||||||
|
|
||||||
|
stateVersion = "23.11";
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
pkgs.macchina
|
||||||
|
pkgs.alejandra
|
||||||
|
pkgs.neovim-nightly
|
||||||
|
pkgs.cachix
|
||||||
|
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||||
|
# # "Hello, world!" when run.
|
||||||
|
# pkgs.hello
|
||||||
|
|
||||||
|
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||||
|
# # overrides. You can do that directly here, just don't forget the
|
||||||
|
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||||
|
# # fonts?
|
||||||
|
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||||
|
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
];
|
||||||
|
|
||||||
|
file = {
|
||||||
|
".config/tmux/sessions".source = ../tmux/sessions;
|
||||||
|
".config/nvim".source = ../nvim;
|
||||||
|
|
||||||
|
# # You can also set the file content immediately.
|
||||||
|
# ".gradle/gradle.properties".text = ''
|
||||||
|
# org.gradle.console=verbose
|
||||||
|
# org.gradle.daemon.idletimeout=3600000
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
|
||||||
|
sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
SHELL = "${pkgs.fish.outPath}/bin/fish";
|
||||||
|
};
|
||||||
|
sessionPath = [
|
||||||
|
"${config.home.homeDirectory}/.local/bin"
|
||||||
|
"${config.home.homeDirectory}/.nix-profile/bin"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
sessionPath = [
|
}
|
||||||
"${config.home.homeDirectory}/.local/bin"
|
|
||||||
"${config.home.homeDirectory}/.nix-profile/bin"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
48
config/nix/scripts/start-tmux.nix
Normal file
48
config/nix/scripts/start-tmux.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
pkgs.writeShellScript "start-tmux" ''
|
||||||
|
live_sessions=$(${pkgs.tmux}/bin/tmux list-sessions 2>/dev/null)
|
||||||
|
all_sessions=$(${pkgs.findutils}/bin/find -L ~/.config/tmux/sessions -type f -executable -printf '%f\n'| sort)
|
||||||
|
TMUX_SESSIONS="$HOME/.config/tmux/sessions"
|
||||||
|
# for some reason ~/.config/tmux/session doesn't work if made with quotes
|
||||||
|
# TMUX_SESSIONS=$XDG_CONFIG_HOME/tmux/sessions
|
||||||
|
if ! [ -z "$TMUX" ];then
|
||||||
|
echo "Nested tmux sessions are a bad idea?"
|
||||||
|
echo "If you want to really do this unset TMUX environment variable"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
IFS=$'\n'
|
||||||
|
for live_session in $live_sessions;do
|
||||||
|
live_session_name=$(echo $live_session | ${pkgs.coreutils}/bin/cut -d: -f1)
|
||||||
|
if [ -z "''\${all_sessions##*$live_session_name*}" ];then # see https://stackoverflow.com/questions/229551/how-to-check-if-a-string-contains-a-substring-in-bash
|
||||||
|
all_sessions="$(echo "$all_sessions" | sed "s/$live_session_name/$live_session/g")"
|
||||||
|
else
|
||||||
|
all_sessions=$(echo -e "$all_sessions\n$live_session")
|
||||||
|
# Okay I know this is ugly it is 5:13 my brain is not working
|
||||||
|
fi
|
||||||
|
session=$(echo "''\$all_sessions" | fzf)
|
||||||
|
session_name=$(echo $session | cut -d: -f1)
|
||||||
|
if [ -z "$session" ];then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if ! [ -z "''\${session##*created*}" ];then
|
||||||
|
if [ -x "$TMUX_SESSIONS/$session_name" ];then
|
||||||
|
source $TMUX_SESSIONS/$session_name
|
||||||
|
else
|
||||||
|
echo $TMUX_SESSIONS/$session_name not found or is not executable
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "''\${session##*attached*}" ];then
|
||||||
|
read -r -p "The session is already attached somewhere else. Attach it here too ? (y/N): " choice
|
||||||
|
if [ "$choice" == "y" ] || [ "$choice" == "Y" ];then
|
||||||
|
tmux attach-session -t$session_name
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
tmux attach-session -t$session_name
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
''
|
||||||
|
|
||||||
Reference in New Issue
Block a user