mirror of
https://github.com/nmasur/dotfiles
synced 2025-07-06 07:20:13 +00:00
initial refactoring
This commit is contained in:
@ -1,656 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# MacOS-specific settings for Alacritty
|
||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
programs.alacritty.settings = {
|
||||
font.size = lib.mkForce 20.0;
|
||||
shell.program = "${pkgs.fish}/bin/fish";
|
||||
window.startup_mode = "SimpleFullScreen";
|
||||
key_bindings = [
|
||||
{
|
||||
key = "F";
|
||||
mods = "Super";
|
||||
action = "ToggleSimpleFullscreen";
|
||||
}
|
||||
{
|
||||
key = "F";
|
||||
mods = "Control|Shift";
|
||||
action = "SearchForward";
|
||||
}
|
||||
{
|
||||
key = "L";
|
||||
mods = "Super";
|
||||
chars = "\\x1F";
|
||||
}
|
||||
# Some Mac key combinations need to be manually added
|
||||
{
|
||||
key = "Return";
|
||||
mods = "Shift";
|
||||
chars = "\\x1b[13;2u";
|
||||
}
|
||||
{
|
||||
key = "Return";
|
||||
mods = "Control";
|
||||
chars = "\\x1b[13;5u";
|
||||
}
|
||||
{
|
||||
key = "Return";
|
||||
mods = "Control|Shift";
|
||||
chars = "\\x1b[13;6u";
|
||||
}
|
||||
|
||||
{
|
||||
key = "N";
|
||||
mods = "Command";
|
||||
action = "SpawnNewInstance";
|
||||
}
|
||||
{
|
||||
key = "PageUp";
|
||||
action = "ScrollPageUp";
|
||||
}
|
||||
{
|
||||
key = "PageUp";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B[5~";
|
||||
}
|
||||
{
|
||||
key = "PageUp";
|
||||
mods = "Shift";
|
||||
chars = "\\x1B[5~";
|
||||
}
|
||||
{
|
||||
key = "PageDown";
|
||||
action = "ScrollPageDown";
|
||||
}
|
||||
{
|
||||
key = "PageDown";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B[6~";
|
||||
}
|
||||
{
|
||||
key = "PageDown";
|
||||
mods = "Shift";
|
||||
chars = "\\x1B[6~";
|
||||
}
|
||||
{
|
||||
key = "Home";
|
||||
action = "ScrollToTop";
|
||||
}
|
||||
{
|
||||
key = "Home";
|
||||
mods = "Alt";
|
||||
chars = "\\x1BOH";
|
||||
}
|
||||
{
|
||||
key = "Home";
|
||||
mods = "Shift";
|
||||
chars = "\\x1B[H";
|
||||
}
|
||||
{
|
||||
key = "End";
|
||||
action = "ScrollToBottom";
|
||||
}
|
||||
{
|
||||
key = "End";
|
||||
mods = "Alt";
|
||||
chars = "\\x1BOF";
|
||||
}
|
||||
{
|
||||
key = "End";
|
||||
mods = "Shift";
|
||||
chars = "\\x1B[F";
|
||||
}
|
||||
{
|
||||
key = "Tab";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B ";
|
||||
}
|
||||
{
|
||||
key = "Tab";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx1B[Z";
|
||||
}
|
||||
# {
|
||||
# key = "Back";
|
||||
# chars = "\\x7F";
|
||||
# }
|
||||
{
|
||||
key = "Back";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bx7F";
|
||||
}
|
||||
{
|
||||
key = "Back";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx08";
|
||||
}
|
||||
{
|
||||
key = "Space";
|
||||
mods = "Control";
|
||||
chars = "\\x00";
|
||||
}
|
||||
{
|
||||
key = "Space";
|
||||
mods = "Alt";
|
||||
chars = "\\x20";
|
||||
}
|
||||
{
|
||||
key = "Left";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bb";
|
||||
}
|
||||
{
|
||||
key = "Left";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx1B[D";
|
||||
}
|
||||
{
|
||||
key = "Right";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bf";
|
||||
}
|
||||
{
|
||||
key = "Right";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx1B[C";
|
||||
}
|
||||
{
|
||||
key = "Down";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bx1B[B";
|
||||
}
|
||||
{
|
||||
key = "Down";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx1B[B";
|
||||
}
|
||||
{
|
||||
key = "Up";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bx1B[A";
|
||||
}
|
||||
{
|
||||
key = "Up";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1Bx1B[A";
|
||||
}
|
||||
{
|
||||
key = "A";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Ba";
|
||||
}
|
||||
{
|
||||
key = "A";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BA";
|
||||
}
|
||||
{
|
||||
key = "B";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bb";
|
||||
}
|
||||
{
|
||||
key = "B";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BB";
|
||||
}
|
||||
{
|
||||
key = "C";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bc";
|
||||
}
|
||||
{
|
||||
key = "C";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BC";
|
||||
}
|
||||
{
|
||||
key = "D";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bd";
|
||||
}
|
||||
{
|
||||
key = "D";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BD";
|
||||
}
|
||||
{
|
||||
key = "E";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Be";
|
||||
}
|
||||
{
|
||||
key = "E";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BE";
|
||||
}
|
||||
{
|
||||
key = "F";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bf";
|
||||
}
|
||||
{
|
||||
key = "F";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BF";
|
||||
}
|
||||
{
|
||||
key = "G";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bg";
|
||||
}
|
||||
{
|
||||
key = "G";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BG";
|
||||
}
|
||||
{
|
||||
key = "H";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bh";
|
||||
}
|
||||
{
|
||||
key = "H";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BH";
|
||||
}
|
||||
{
|
||||
key = "I";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bi";
|
||||
}
|
||||
{
|
||||
key = "I";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BI";
|
||||
}
|
||||
{
|
||||
key = "J";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bj";
|
||||
}
|
||||
{
|
||||
key = "J";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BJ";
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bk";
|
||||
}
|
||||
{
|
||||
key = "K";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BK";
|
||||
}
|
||||
{
|
||||
key = "L";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bl";
|
||||
}
|
||||
{
|
||||
key = "L";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BL";
|
||||
}
|
||||
{
|
||||
key = "M";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bm";
|
||||
}
|
||||
{
|
||||
key = "M";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BM";
|
||||
}
|
||||
{
|
||||
key = "N";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bn";
|
||||
}
|
||||
{
|
||||
key = "N";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BN";
|
||||
}
|
||||
{
|
||||
key = "O";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bo";
|
||||
}
|
||||
{
|
||||
key = "O";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BO";
|
||||
}
|
||||
{
|
||||
key = "P";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bp";
|
||||
}
|
||||
{
|
||||
key = "P";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BP";
|
||||
}
|
||||
{
|
||||
key = "Q";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bq";
|
||||
}
|
||||
{
|
||||
key = "Q";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BQ";
|
||||
}
|
||||
{
|
||||
key = "R";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Br";
|
||||
}
|
||||
{
|
||||
key = "R";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BR";
|
||||
}
|
||||
{
|
||||
key = "S";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bs";
|
||||
}
|
||||
{
|
||||
key = "S";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BS";
|
||||
}
|
||||
{
|
||||
key = "T";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bt";
|
||||
}
|
||||
{
|
||||
key = "T";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BT";
|
||||
}
|
||||
{
|
||||
key = "U";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bu";
|
||||
}
|
||||
{
|
||||
key = "U";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BU";
|
||||
}
|
||||
{
|
||||
key = "V";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bv";
|
||||
}
|
||||
{
|
||||
key = "V";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BV";
|
||||
}
|
||||
{
|
||||
key = "W";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bw";
|
||||
}
|
||||
{
|
||||
key = "W";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BW";
|
||||
}
|
||||
{
|
||||
key = "X";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bx";
|
||||
}
|
||||
{
|
||||
key = "X";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BX";
|
||||
}
|
||||
{
|
||||
key = "Y";
|
||||
mods = "Alt";
|
||||
chars = "\\x1By";
|
||||
}
|
||||
{
|
||||
key = "Y";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BY";
|
||||
}
|
||||
{
|
||||
key = "Z";
|
||||
mods = "Alt";
|
||||
chars = "\\x1Bz";
|
||||
}
|
||||
{
|
||||
key = "Z";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1BZ";
|
||||
}
|
||||
{
|
||||
key = "Key1";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B1";
|
||||
}
|
||||
{
|
||||
key = "Key1";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B!";
|
||||
}
|
||||
{
|
||||
key = "Key2";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B2";
|
||||
}
|
||||
{
|
||||
key = "Key2";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B#";
|
||||
}
|
||||
{
|
||||
key = "Key3";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B3";
|
||||
}
|
||||
{
|
||||
key = "Key3";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B#";
|
||||
}
|
||||
{
|
||||
key = "Key4";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B4";
|
||||
}
|
||||
{
|
||||
key = "Key4";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B$";
|
||||
}
|
||||
{
|
||||
key = "Key5";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B5";
|
||||
}
|
||||
{
|
||||
key = "Key5";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B%";
|
||||
}
|
||||
{
|
||||
key = "Key6";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B6";
|
||||
}
|
||||
{
|
||||
key = "Key6";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B^";
|
||||
}
|
||||
{
|
||||
key = "Key7";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B7";
|
||||
}
|
||||
{
|
||||
key = "Key7";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B&";
|
||||
}
|
||||
{
|
||||
key = "Key8";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B8";
|
||||
}
|
||||
{
|
||||
key = "Key8";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B*";
|
||||
}
|
||||
{
|
||||
key = "Key9";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B9";
|
||||
}
|
||||
{
|
||||
key = "Key9";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B(";
|
||||
}
|
||||
{
|
||||
key = "Key0";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B0";
|
||||
}
|
||||
{
|
||||
key = "Key0";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B)";
|
||||
}
|
||||
{
|
||||
key = "Minus";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B-";
|
||||
}
|
||||
{
|
||||
key = "Minus";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B_";
|
||||
}
|
||||
{
|
||||
key = "Equals";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B=";
|
||||
}
|
||||
{
|
||||
key = "Equals";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B+";
|
||||
}
|
||||
{
|
||||
key = "LBracket";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B[";
|
||||
}
|
||||
{
|
||||
key = "LBracket";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B{";
|
||||
}
|
||||
{
|
||||
key = "RBracket";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B]";
|
||||
}
|
||||
{
|
||||
key = "RBracket";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B}";
|
||||
}
|
||||
{
|
||||
key = "Backslash";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B\\\\";
|
||||
}
|
||||
{
|
||||
key = "Backslash";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B|";
|
||||
}
|
||||
{
|
||||
key = "Semicolon";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B;";
|
||||
}
|
||||
{
|
||||
key = "Semicolon";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B =";
|
||||
}
|
||||
{
|
||||
key = "Apostrophe";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B'";
|
||||
}
|
||||
{
|
||||
key = "Apostrophe";
|
||||
mods = "Alt|Shift";
|
||||
chars = ''\x1B"'';
|
||||
}
|
||||
{
|
||||
key = "Comma";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B;";
|
||||
}
|
||||
{
|
||||
key = "Comma";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B<";
|
||||
}
|
||||
{
|
||||
key = "Period";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B.";
|
||||
}
|
||||
{
|
||||
key = "Period";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B>";
|
||||
}
|
||||
{
|
||||
key = "Slash";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B/";
|
||||
}
|
||||
{
|
||||
key = "Slash";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B?";
|
||||
}
|
||||
{
|
||||
key = "Grave";
|
||||
mods = "Alt";
|
||||
chars = "\\x1B`";
|
||||
}
|
||||
{
|
||||
key = "Grave";
|
||||
mods = "Alt|Shift";
|
||||
chars = "\\x1B~";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
|
||||
imports = [
|
||||
./alacritty.nix
|
||||
./fish.nix
|
||||
./fonts.nix
|
||||
./hammerspoon.nix
|
||||
./homebrew.nix
|
||||
./kitty.nix
|
||||
./networking.nix
|
||||
./nixpkgs.nix
|
||||
./system.nix
|
||||
./tmux.nix
|
||||
./user.nix
|
||||
./utilities.nix
|
||||
];
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
||||
config = {
|
||||
|
||||
# MacOS-specific settings for Fish
|
||||
programs.fish.useBabelfish = true;
|
||||
programs.fish.babelfishPackage = pkgs.babelfish;
|
||||
};
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# Hammerspoon - MacOS custom automation scripting
|
||||
|
||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
home-manager.users.${config.user} = {
|
||||
xdg.configFile."hammerspoon/init.lua".source = ./hammerspoon/init.lua;
|
||||
xdg.configFile."hammerspoon/Spoons/ControlEscape.spoon".source = ./hammerspoon/Spoons/ControlEscape.spoon;
|
||||
xdg.configFile."hammerspoon/Spoons/DismissAlerts.spoon".source = ./hammerspoon/Spoons/DismissAlerts.spoon;
|
||||
xdg.configFile."hammerspoon/Spoons/Launcher.spoon/init.lua".source = pkgs.substituteAll {
|
||||
src = ./hammerspoon/Spoons/Launcher.spoon/init.lua;
|
||||
firefox = "${pkgs.firefox-bin}/Applications/Firefox.app";
|
||||
discord = "${pkgs.discord}/Applications/Discord.app";
|
||||
wezterm = "${pkgs.wezterm}/Applications/WezTerm.app";
|
||||
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
|
||||
slack = "${pkgs.slack}/Applications/Slack.app";
|
||||
};
|
||||
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source = ./hammerspoon/Spoons/MoveWindow.spoon;
|
||||
|
||||
home.activation.reloadHammerspoon =
|
||||
config.home-manager.users.${config.user}.lib.dag.entryAfter [ "writeBoundary" ]
|
||||
''
|
||||
$DRY_RUN_CMD /Applications/Hammerspoon.app/Contents/Frameworks/hs/hs -c "hs.reload()"
|
||||
$DRY_RUN_CMD sleep 1
|
||||
$DRY_RUN_CMD /Applications/Hammerspoon.app/Contents/Frameworks/hs/hs -c "hs.console.clearConsole()"
|
||||
'';
|
||||
};
|
||||
|
||||
homebrew.casks = [ "hammerspoon" ];
|
||||
|
||||
system.activationScripts.postUserActivation.text = ''
|
||||
defaults write org.hammerspoon.Hammerspoon MJConfigFile "${config.homePath}/.config/hammerspoon/init.lua"
|
||||
sudo killall Dock
|
||||
'';
|
||||
};
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# Homebrew - Mac-specific packages that aren't in Nix
|
||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
# Requires Homebrew to be installed
|
||||
system.activationScripts.preUserActivation.text = ''
|
||||
if ! xcode-select --version 2>/dev/null; then
|
||||
$DRY_RUN_CMD xcode-select --install
|
||||
fi
|
||||
if ! /opt/homebrew/bin/brew --version 2>/dev/null; then
|
||||
$DRY_RUN_CMD /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
'';
|
||||
|
||||
# Add homebrew paths to CLI path
|
||||
home-manager.users.${config.user}.home.sessionPath = [ "/opt/homebrew/bin/" ];
|
||||
|
||||
homebrew = {
|
||||
enable = true;
|
||||
onActivation = {
|
||||
autoUpdate = false; # Don't update during rebuild
|
||||
cleanup = "zap"; # Uninstall all programs not declared
|
||||
upgrade = true;
|
||||
};
|
||||
global = {
|
||||
brewfile = true; # Run brew bundle from anywhere
|
||||
lockfiles = false; # Don't save lockfile (since running from anywhere)
|
||||
};
|
||||
brews = [
|
||||
"trash" # Delete files and folders to trash instead of rm
|
||||
];
|
||||
casks = [
|
||||
"1password" # 1Password will not launch from Nix on macOS
|
||||
# "gitify" # Git notifications in menu bar (downgrade manually from 4.6.1)
|
||||
"keybase" # GUI on Nix not available for macOS
|
||||
# "logitech-g-hub" # Mouse and keyboard management
|
||||
"logitune" # Logitech webcam firmware
|
||||
"meetingbar" # Show meetings in menu bar
|
||||
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
||||
"notunes" # Don't launch Apple Music with the play button
|
||||
"steam" # Not packaged for Nixon macOS
|
||||
"epic-games" # Not packaged for Nix
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# MacOS-specific settings for Kitty
|
||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
programs.kitty = {
|
||||
font.size = lib.mkForce 20;
|
||||
settings = {
|
||||
shell = "/run/current-system/sw/bin/fish";
|
||||
macos_traditional_fullscreen = true;
|
||||
macos_quit_when_last_window_closed = true;
|
||||
disable_ligatures = "always";
|
||||
macos_option_as_alt = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
# config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
# networking = {
|
||||
# computerName = config.networking.hostName;
|
||||
# # Adjust if necessary
|
||||
# # hostName = "";
|
||||
# };
|
||||
# };
|
||||
# }
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
programs.fish = {
|
||||
shellAbbrs = {
|
||||
nr = {
|
||||
function = lib.mkForce "rebuild-darwin";
|
||||
};
|
||||
nro = {
|
||||
function = lib.mkForce "rebuild-darwin-offline";
|
||||
};
|
||||
};
|
||||
functions = {
|
||||
rebuild-darwin = {
|
||||
body = ''
|
||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||
echo "darwin-rebuild switch --flake ${config.dotfilesPath}#lookingglass"
|
||||
'';
|
||||
};
|
||||
rebuild-darwin-offline = {
|
||||
body = ''
|
||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||
echo "darwin-rebuild switch --option substitute false --flake ${config.dotfilesPath}#lookingglass"
|
||||
'';
|
||||
};
|
||||
rebuild-home = lib.mkForce {
|
||||
body = ''
|
||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||
echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,222 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
options = {
|
||||
terminal = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
description = "Path to executable for terminal emulator program.";
|
||||
default = null;
|
||||
};
|
||||
terminalLaunchCommand = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
description = "Command for using the terminal to launch a new window with a program.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
services.nix-daemon.enable = true;
|
||||
|
||||
# This setting only applies to Darwin, different on NixOS
|
||||
nix.gc.interval = {
|
||||
Hour = 12;
|
||||
Minute = 15;
|
||||
Day = 1;
|
||||
};
|
||||
|
||||
environment.shells = [ pkgs.fish ];
|
||||
|
||||
security.pam.enableSudoTouchIdAuth = true;
|
||||
|
||||
system = {
|
||||
|
||||
stateVersion = 5;
|
||||
|
||||
keyboard = {
|
||||
remapCapsLockToControl = true;
|
||||
enableKeyMapping = true; # Allows for skhd
|
||||
};
|
||||
|
||||
defaults = {
|
||||
NSGlobalDomain = {
|
||||
|
||||
# Set to dark mode
|
||||
AppleInterfaceStyle = "Dark";
|
||||
|
||||
# Don't change from dark to light automatically
|
||||
# AppleInterfaceSwitchesAutomatically = false;
|
||||
|
||||
# Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
|
||||
AppleKeyboardUIMode = 3;
|
||||
|
||||
# Only hide menu bar in fullscreen
|
||||
_HIHideMenuBar = false;
|
||||
|
||||
# Expand save panel by default
|
||||
NSNavPanelExpandedStateForSaveMode = true;
|
||||
|
||||
# Expand print panel by default
|
||||
PMPrintingExpandedStateForPrint = true;
|
||||
|
||||
# Replace press-and-hold with key repeat
|
||||
ApplePressAndHoldEnabled = false;
|
||||
|
||||
# Set a fast key repeat rate
|
||||
KeyRepeat = 2;
|
||||
|
||||
# Shorten delay before key repeat begins
|
||||
InitialKeyRepeat = 12;
|
||||
|
||||
# Save to local disk by default, not iCloud
|
||||
NSDocumentSaveNewDocumentsToCloud = false;
|
||||
|
||||
# Disable autocorrect capitalization
|
||||
NSAutomaticCapitalizationEnabled = false;
|
||||
|
||||
# Disable autocorrect smart dashes
|
||||
NSAutomaticDashSubstitutionEnabled = false;
|
||||
|
||||
# Disable autocorrect adding periods
|
||||
NSAutomaticPeriodSubstitutionEnabled = false;
|
||||
|
||||
# Disable autocorrect smart quotation marks
|
||||
NSAutomaticQuoteSubstitutionEnabled = false;
|
||||
|
||||
# Disable autocorrect spellcheck
|
||||
NSAutomaticSpellingCorrectionEnabled = false;
|
||||
};
|
||||
|
||||
dock = {
|
||||
# Automatically show and hide the dock
|
||||
autohide = true;
|
||||
|
||||
# Add translucency in dock for hidden applications
|
||||
showhidden = true;
|
||||
|
||||
# Enable spring loading on all dock items
|
||||
enable-spring-load-actions-on-all-items = true;
|
||||
|
||||
# Highlight hover effect in dock stack grid view
|
||||
mouse-over-hilite-stack = true;
|
||||
|
||||
mineffect = "genie";
|
||||
orientation = "bottom";
|
||||
show-recents = false;
|
||||
tilesize = 44;
|
||||
|
||||
persistent-apps = [
|
||||
"/Applications/1Password.app"
|
||||
"${pkgs.slack}/Applications/Slack.app"
|
||||
"/System/Applications/Calendar.app"
|
||||
"${pkgs.firefox-bin}/Applications/Firefox.app"
|
||||
"/System/Applications/Messages.app"
|
||||
"/System/Applications/Mail.app"
|
||||
"/Applications/zoom.us.app"
|
||||
"${pkgs.discord}/Applications/Discord.app"
|
||||
"${pkgs.obsidian}/Applications/Obsidian.app"
|
||||
"${pkgs.wezterm}/Applications/WezTerm.app"
|
||||
];
|
||||
};
|
||||
|
||||
finder = {
|
||||
|
||||
# Default Finder window set to column view
|
||||
FXPreferredViewStyle = "clmv";
|
||||
|
||||
# Finder search in current folder by default
|
||||
FXDefaultSearchScope = "SCcf";
|
||||
|
||||
# Disable warning when changing file extension
|
||||
FXEnableExtensionChangeWarning = false;
|
||||
|
||||
# Allow quitting of Finder application
|
||||
QuitMenuItem = true;
|
||||
};
|
||||
|
||||
# Disable "Are you sure you want to open" dialog
|
||||
LaunchServices.LSQuarantine = false;
|
||||
|
||||
# Disable trackpad tap to click
|
||||
trackpad.Clicking = false;
|
||||
|
||||
# Where to save screenshots
|
||||
screencapture.location = "~/Downloads";
|
||||
|
||||
# Show seconds on the clock
|
||||
menuExtraClock.ShowSeconds = true;
|
||||
|
||||
CustomUserPreferences = {
|
||||
# Disable disk image verification
|
||||
"com.apple.frameworks.diskimages" = {
|
||||
skip-verify = true;
|
||||
skip-verify-locked = true;
|
||||
skip-verify-remote = true;
|
||||
};
|
||||
# Avoid creating .DS_Store files on network or USB volumes
|
||||
"com.apple.desktopservices" = {
|
||||
DSDontWriteNetworkStores = true;
|
||||
DSDontWriteUSBStores = true;
|
||||
};
|
||||
"com.apple.dock" = {
|
||||
magnification = true;
|
||||
largesize = 48;
|
||||
};
|
||||
# Require password immediately after screen saver begins
|
||||
"com.apple.screensaver" = {
|
||||
askForPassword = 1;
|
||||
askForPasswordDelay = 0;
|
||||
};
|
||||
"com.apple.finder" = {
|
||||
# Disable the warning before emptying the Trash
|
||||
WarnOnEmptyTrash = false;
|
||||
|
||||
# Finder search in current folder by default
|
||||
FXDefaultSearchScope = "SCcf";
|
||||
|
||||
# Default Finder window set to column view
|
||||
FXPreferredViewStyle = "clmv";
|
||||
};
|
||||
"leits.MeetingBar" = {
|
||||
eventTimeFormat = ''"show"'';
|
||||
eventTitleFormat = ''"none"'';
|
||||
eventTitleIconFormat = ''"iconCalendar"'';
|
||||
slackBrowser = ''{"deletable":true,"arguments":"","name":"Slack","path":""}'';
|
||||
zoomBrowser = ''{"deletable":true,"arguments":"","name":"Zoom","path":""}'';
|
||||
teamsBrowser = ''{"deletable":true,"arguments":"","name":"Teams","path":""}'';
|
||||
KeyboardShortcuts_joinEventShortcut = ''{"carbonModifiers":6400,"carbonKeyCode":38}'';
|
||||
timeFormat = ''"12-hour"'';
|
||||
};
|
||||
};
|
||||
|
||||
CustomSystemPreferences = {
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
# Settings that don't have an option in nix-darwin
|
||||
activationScripts.postActivation.text = ''
|
||||
echo "Allow apps from anywhere"
|
||||
SPCTL=$(spctl --status)
|
||||
if ! [ "$SPCTL" = "assessments disabled" ]; then
|
||||
sudo spctl --master-disable
|
||||
fi
|
||||
'';
|
||||
|
||||
# User-level settings
|
||||
activationScripts.postUserActivation.text = ''
|
||||
echo "Show the ~/Library folder"
|
||||
chflags nohidden ~/Library
|
||||
|
||||
echo "Reduce Menu Bar padding"
|
||||
defaults write -globalDomain NSStatusItemSelectionPadding -int 6
|
||||
defaults write -globalDomain NSStatusItemSpacing -int 6
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
@ -1,137 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
options.tmux.enable = lib.mkEnableOption "Tmux terminal multiplexer";
|
||||
|
||||
config.home-manager.users.${config.user} = lib.mkIf config.tmux.enable {
|
||||
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
baseIndex = 1; # Start windows and panes at 1
|
||||
escapeTime = 0; # Wait time after escape is input
|
||||
historyLimit = 100000;
|
||||
keyMode = "vi";
|
||||
newSession = true; # Automatically spawn new session
|
||||
plugins = [ ];
|
||||
resizeAmount = 10;
|
||||
shell = "${pkgs.fish}/bin/fish";
|
||||
terminal = "screen-256color";
|
||||
extraConfig = ''
|
||||
# Horizontal and vertical splits
|
||||
bind \\ split-window -h -c '#{pane_current_path}'
|
||||
bind - split-window -v -c '#{pane_current_path}'
|
||||
|
||||
# Move between panes with vi keys
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind K select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
# Split out pane
|
||||
bind b break-pane
|
||||
|
||||
# Synchronize panes
|
||||
bind S set-window-option synchronize-panes
|
||||
|
||||
# Copy mode works as Vim
|
||||
bind Escape copy-mode
|
||||
bind k copy-mode
|
||||
bind C-[ copy-mode
|
||||
|
||||
# Use v to trigger selection
|
||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||
|
||||
# Use y to yank current selection
|
||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
|
||||
# Enable mouse mode
|
||||
set -g mouse on
|
||||
|
||||
# Status bar
|
||||
set -g status-interval 60 # Seconds between refreshes
|
||||
set -g renumber-windows on
|
||||
set-option -g status-position bottom
|
||||
|
||||
## COLORSCHEME: gruvbox dark
|
||||
set-option -g status "on"
|
||||
|
||||
# Default statusbar color
|
||||
set-option -g status-style bg=colour237,fg=colour223 # bg=bg1, fg=fg1
|
||||
|
||||
# Default window title colors
|
||||
set-window-option -g window-status-style bg=colour214,fg=colour237 # bg=yellow, fg=bg1
|
||||
|
||||
# Default window with an activity alert
|
||||
set-window-option -g window-status-activity-style bg=colour237,fg=colour248 # bg=bg1, fg=fg3
|
||||
|
||||
# Active window title colors
|
||||
set-window-option -g window-status-current-style bg=red,fg=colour237 # fg=bg1
|
||||
|
||||
# Pane border
|
||||
set-option -g pane-active-border-style fg=colour250 #fg2
|
||||
set-option -g pane-border-style fg=colour237 #bg1
|
||||
|
||||
# Message infos
|
||||
set-option -g message-style bg=colour239,fg=colour223 # bg=bg2, fg=fg1
|
||||
|
||||
# Writing commands inactive
|
||||
set-option -g message-command-style bg=colour239,fg=colour223 # bg=fg3, fg=bg1
|
||||
|
||||
# Pane number display
|
||||
set-option -g display-panes-active-colour colour250 #fg2
|
||||
set-option -g display-panes-colour colour237 #bg1
|
||||
|
||||
# Clock
|
||||
set-window-option -g clock-mode-colour colour109 #blue
|
||||
|
||||
# Bell
|
||||
set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg
|
||||
|
||||
# Theme settings mixed with colors (unfortunately, but there is no cleaner way)
|
||||
set-option -g status-justify "left"
|
||||
set-option -g status-left-style none
|
||||
set-option -g status-left-length "80"
|
||||
set-option -g status-right-style none
|
||||
set-option -g status-right-length "80"
|
||||
set-window-option -g window-status-separator ""
|
||||
|
||||
set-option -g status-left "#[fg=colour248, bg=colour241] #S #[fg=colour241, bg=colour237, nobold, noitalics, nounderscore]"
|
||||
set-option -g status-right "#[fg=colour239, bg=colour237, nobold, nounderscore, noitalics]#[fg=colour246,bg=colour239] %Y-%m-%d %H:%M #[fg=colour248, bg=colour239, nobold, noitalics, nounderscore]"
|
||||
|
||||
set-window-option -g window-status-current-format "#[fg=colour237, bg=colour214, nobold, noitalics, nounderscore]#[fg=colour239, bg=colour214] #I #[fg=colour239, bg=colour214, bold] #W #[fg=colour214, bg=colour237, nobold, noitalics, nounderscore]"
|
||||
set-window-option -g window-status-format "#[fg=colour237,bg=colour239,noitalics]#[fg=colour223,bg=colour239] #I #[fg=colour223, bg=colour239] #W #[fg=colour239, bg=colour237, noitalics]"
|
||||
'';
|
||||
};
|
||||
|
||||
programs.alacritty.settings = {
|
||||
# shell.args = [
|
||||
# "--login"
|
||||
# "--init-command"
|
||||
# "tmux attach-session -t noah || tmux new-session -s noah"
|
||||
# ];
|
||||
key_bindings = [
|
||||
{
|
||||
key = "H";
|
||||
mods = "Super|Shift";
|
||||
chars = "\\x02p"; # Previous tmux window
|
||||
}
|
||||
{
|
||||
key = "L";
|
||||
mods = "Super|Shift";
|
||||
chars = "\\x02n"; # Next tmux window
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.fish.shellAbbrs = {
|
||||
ta = "tmux attach-session";
|
||||
tan = "tmux attach-session -t noah";
|
||||
tnn = "tmux new-session -s noah";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
users.users."${config.user}" = {
|
||||
# macOS user
|
||||
home = config.homePath;
|
||||
uid = 502;
|
||||
# shell = pkgs.fish; # Default shell
|
||||
};
|
||||
|
||||
# This might fix the shell issues
|
||||
users.knownUsers = [ config.user ];
|
||||
|
||||
home-manager.users.${config.user} = {
|
||||
|
||||
# Default shell setting doesn't work
|
||||
home.sessionVariables = {
|
||||
SHELL = "${pkgs.fish}/bin/fish";
|
||||
};
|
||||
|
||||
# Used for aerc
|
||||
xdg.enable = true;
|
||||
};
|
||||
|
||||
# Fix for: 'Error: HOME is set to "/var/root" but we expect "/var/empty"'
|
||||
home-manager.users.root.home.homeDirectory = lib.mkForce "/var/root";
|
||||
};
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
unfreePackages = [
|
||||
"consul"
|
||||
"vault-bin"
|
||||
# "teams"
|
||||
];
|
||||
|
||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||
|
||||
home.packages = [
|
||||
pkgs.visidata # CSV inspector
|
||||
pkgs.dos2unix # Convert Windows text files
|
||||
pkgs.inetutils # Includes telnet
|
||||
pkgs.pandoc # Convert text documents
|
||||
pkgs.mpd # TUI slideshows
|
||||
pkgs.mpv # Video player
|
||||
pkgs.gnupg # Encryption
|
||||
pkgs.awscli2
|
||||
pkgs.ssm-session-manager-plugin
|
||||
pkgs.awslogs
|
||||
pkgs.stu # TUI for AWS S3
|
||||
pkgs.google-cloud-sdk
|
||||
pkgs.vault-bin
|
||||
pkgs.consul
|
||||
pkgs.noti # Create notifications programmatically
|
||||
pkgs.ipcalc # Make IP network calculations
|
||||
# pkgs.teams
|
||||
pkgs.cloudflared # Allow connecting to Cloudflare tunnels
|
||||
pkgs.monitorcontrol # Allows adjusting external displays
|
||||
(pkgs.writeShellApplication {
|
||||
name = "ocr";
|
||||
runtimeInputs = [ pkgs.tesseract ];
|
||||
text = builtins.readFile ../../modules/common/shell/bash/scripts/ocr.sh;
|
||||
})
|
||||
(pkgs.writeShellApplication {
|
||||
name = "ec2";
|
||||
runtimeInputs = [
|
||||
pkgs.awscli2
|
||||
pkgs.jq
|
||||
pkgs.fzf
|
||||
];
|
||||
text = builtins.readFile ../../modules/common/shell/bash/scripts/aws-ec2.sh;
|
||||
})
|
||||
(pkgs.writeShellApplication {
|
||||
name = "tfinit";
|
||||
runtimeInputs = [
|
||||
pkgs.terraform
|
||||
pkgs.gawk
|
||||
pkgs.git
|
||||
];
|
||||
text = builtins.readFile ../../modules/common/shell/bash/scripts/terraform-init.sh;
|
||||
})
|
||||
];
|
||||
|
||||
programs.fish.shellAbbrs = {
|
||||
# Add noti for ghpr in Darwin
|
||||
ghpr = lib.mkForce "gh pr create && sleep 3 && noti gh run watch";
|
||||
grw = lib.mkForce "noti gh run watch";
|
||||
|
||||
# Shortcut to edit hosts file
|
||||
hosts = "sudo nvim /etc/hosts";
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user