mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-07-14 00:22:39 +02:00
refactor: development environment
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
{pkgs, catppuccin-alacritty, ...}:
|
||||
###########################################################
|
||||
#
|
||||
# Alacritty Configuration
|
||||
#
|
||||
# Useful Hot Keys for macOS:
|
||||
# 1. Multi-Window: `command + N`
|
||||
# 2. Increase Font Size: `command + =` | `command + +`
|
||||
# 3. Decrease Font Size: `command + -` | `command + _`
|
||||
# 4. Search Text: `command + F`
|
||||
# 5. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||
#
|
||||
# Useful Hot Keys for Linux:
|
||||
# 1. Increase Font Size: `ctrl + shift + =` | `ctrl + shift + +`
|
||||
# 2. Decrease Font Size: `ctrl + shift + -` | `ctrl + shift + _`
|
||||
# 3. Search Text: `ctrl + shift + N`
|
||||
# 4. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||
#
|
||||
# Note: Alacritty do not have support for Tabs, and any graphic protocol.
|
||||
#
|
||||
###########################################################
|
||||
{
|
||||
xdg.configFile."alacritty/theme_catppuccin.yml".source = "${catppuccin-alacritty}/catppuccin-mocha.yml";
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
xdg.configFile."alacritty/alacritty.yml".text =
|
||||
''
|
||||
import:
|
||||
# all alacritty themes can be found at
|
||||
# https://github.com/alacritty/alacritty-theme
|
||||
- ~/.config/alacritty/theme_catppuccin.yml
|
||||
|
||||
window:
|
||||
# Background opacity
|
||||
#
|
||||
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||
opacity: 0.93
|
||||
|
||||
# Startup Mode (changes require restart)
|
||||
#
|
||||
# Values for `startup_mode`:
|
||||
# - Windowed
|
||||
# - Maximized
|
||||
# - Fullscreen
|
||||
#
|
||||
# Values for `startup_mode` (macOS only):
|
||||
# - SimpleFullscreen
|
||||
startup_mode: Maximized
|
||||
|
||||
# Allow terminal applications to change Alacritty's window title.
|
||||
dynamic_title: true
|
||||
|
||||
# Make `Option` key behave as `Alt` (macOS only):
|
||||
# - OnlyLeft
|
||||
# - OnlyRight
|
||||
# - Both
|
||||
# - None (default)
|
||||
option_as_alt: Both
|
||||
|
||||
scrolling:
|
||||
# Maximum number of lines in the scrollback buffer.
|
||||
# Specifying '0' will disable scrolling.
|
||||
history: 10000
|
||||
|
||||
# Scrolling distance multiplier.
|
||||
#multiplier: 3
|
||||
|
||||
# Font configuration
|
||||
font:
|
||||
# Normal (roman) font face
|
||||
bold:
|
||||
family: JetBrainsMono Nerd Font
|
||||
italic:
|
||||
family: JetBrainsMono Nerd Font
|
||||
normal:
|
||||
family: JetBrainsMono Nerd Font
|
||||
bold_italic:
|
||||
# Font family
|
||||
#
|
||||
# If the bold italic family is not specified, it will fall back to the
|
||||
# value specified for the normal font.
|
||||
family: JetBrainsMono Nerd Font
|
||||
''
|
||||
+ (
|
||||
if pkgs.stdenv.isDarwin
|
||||
then ''
|
||||
# Point size
|
||||
size: 14
|
||||
shell: # force nushell as default shell on macOS
|
||||
program: /run/current-system/sw/bin/nu
|
||||
''
|
||||
else ''
|
||||
# holder identation
|
||||
# Point size
|
||||
size: 13
|
||||
''
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./alacritty.nix
|
||||
./kitty.nix
|
||||
./wezterm.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
###########################################################
|
||||
#
|
||||
# Kitty Configuration
|
||||
#
|
||||
# Useful Hot Keys for macOS:
|
||||
# 1. New Tab: `command + t`
|
||||
# 2. Close Tab: `command + w`
|
||||
# 3. Switch Tab: `shift + command + [` | `shift + command + ]`
|
||||
# 4. Increase Font Size: `command + =` | `command + +`
|
||||
# 5. Decrease Font Size: `command + -` | `command + _`
|
||||
# 6. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||
# 7. Search in the current window(show_scrollback): `ctrl + shift + h`
|
||||
# This will open a pager, it's defined by `scrollback_pager`, default is `less`
|
||||
#
|
||||
#
|
||||
# Useful Hot Keys for Linux:
|
||||
# 1. New Tab: `ctrl + shift + t`
|
||||
# 2. Close Tab: `ctrl + shift + q`
|
||||
# 3. Switch Tab: `ctrl + shift + right` | `ctrl + shift + left`
|
||||
# 4. Increase Font Size: `ctrl + shift + =` | `ctrl + shift + +`
|
||||
# 5. Decrease Font Size: `ctrl + shift + -` | `ctrl + shift + _`
|
||||
# 6. And Other common shortcuts such as Copy, Paste, Cursor Move, etc.
|
||||
#
|
||||
###########################################################
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
# kitty has catppuccin theme built-in,
|
||||
# all the built-in themes are packaged into an extra package named `kitty-themes`
|
||||
# and it's installed by home-manager if `theme` is specified.
|
||||
theme = "Catppuccin-Mocha";
|
||||
font = {
|
||||
name = "JetBrainsMono Nerd Font";
|
||||
# use different font size on macOS
|
||||
size =
|
||||
if pkgs.stdenv.isDarwin
|
||||
then 14
|
||||
else 13;
|
||||
};
|
||||
|
||||
settings =
|
||||
{
|
||||
background_opacity = "0.93";
|
||||
macos_option_as_alt = true; # Option key acts as Alt on macOS
|
||||
scrollback_lines = 10000;
|
||||
enable_audio_bell = false;
|
||||
tab_bar_edge = "top"; # tab bar on top
|
||||
}
|
||||
// (
|
||||
if pkgs.stdenv.isDarwin
|
||||
then {
|
||||
# macOS specific settings, force kitty to use nushell as default shell
|
||||
shell = "/run/current-system/sw/bin/nu";
|
||||
}
|
||||
else {}
|
||||
);
|
||||
|
||||
# macOS specific settings
|
||||
darwinLaunchOptions = ["--start-as=maximized"];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
catppuccin-wezterm,
|
||||
...
|
||||
}:
|
||||
###########################################################
|
||||
#
|
||||
# Wezterm Configuration
|
||||
#
|
||||
###########################################################
|
||||
{
|
||||
# wezterm has catppuccin theme built-in,
|
||||
# it's not necessary to install it separately.
|
||||
# xdg.configFile."wezterm/colors".source = "${catppuccin-wezterm}/dist";
|
||||
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
|
||||
extraConfig =
|
||||
let
|
||||
fontsize = if pkgs.stdenv.isDarwin then "14.0" else "13.0";
|
||||
in
|
||||
''
|
||||
-- Pull in the wezterm API
|
||||
local wezterm = require 'wezterm'
|
||||
|
||||
-- This table will hold the configuration.
|
||||
local config = {}
|
||||
|
||||
-- In newer versions of wezterm, use the config_builder which will
|
||||
-- help provide clearer error messages
|
||||
if wezterm.config_builder then
|
||||
config = wezterm.config_builder()
|
||||
end
|
||||
|
||||
-- This is where you actually apply your config choices
|
||||
config.color_scheme = "Catppuccin Mocha"
|
||||
config.font = wezterm.font("JetBrains Mono")
|
||||
config.hide_tab_bar_if_only_one_tab = true
|
||||
config.scrollback_lines = 10000
|
||||
config.enable_scroll_bar = true
|
||||
|
||||
config.font_size = ${fontsize}
|
||||
'' + (if pkgs.stdenv.isDarwin then ''
|
||||
-- Spawn a fish shell in login mod
|
||||
config.default_prog = { '/run/current-system/sw/bin/nu', '-l' }
|
||||
'' else "") + ''
|
||||
return config
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user