refactor: integrate nix-darwin config

This commit is contained in:
Youwen Wu 2024-08-05 02:51:43 -07:00
parent 79ce8d824b
commit b1f250812d
13 changed files with 509 additions and 38 deletions

View file

@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{ pkgs, ... }: {
fonts = {
enableDefaultPackages = true;
fontconfig = {

View file

@ -1,4 +1,7 @@
{ config, pkgs, ... }: {
{ config, pkgs, self, ... }: {
# Expose the package set, including overlays, for convenience.
darwinPackages = self.darwinConfigurations."Youwens-MacBook-Pro".pkgs;
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [ ];

View file

@ -0,0 +1,14 @@
{ inputs, ... }: {
nix-homebrew = {
enable = true;
enableRosetta = true;
user = "youwen";
taps = {
"homebrew/homebrew-core" = inputs.homebrew-core;
"homebrew/homebrew-cask" = inputs.homebrew-cask;
};
mutableTaps = false;
};
}

23
modules/darwin/yabai.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, pkgs, ... }: {
services.yabai = {
enable = true;
enableScriptingAddition = true;
config = {
focus_follows_mouse = "autoraise";
mouse_follows_focus = "off";
window_placement = "second_child";
window_opacity = "off";
top_padding = 36;
bottom_padding = 10;
left_padding = 10;
right_padding = 10;
window_gap = 10;
};
};
services.skhd = { enable = true; };
services.jankyborders = {
enable = true;
hidpi = true;
};
}

View file

@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{ pkgs, ... }: {
programs.bash.enable = true;
programs.nushell = {
enable = true;
@ -136,7 +135,6 @@
];
};
programs.fd.enable = true;
programs.btop = {

View file

@ -0,0 +1,227 @@
{ inputs, config, pkgs, ... }:
{
home.username = "youwen";
home.homeDirectory = "/Users/youwen";
# link the configuration file in current directory to the specified location in home directory
# home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg;
# link all files in `./scripts` to `~/.config/i3/scripts`
# home.file.".config/i3/scripts" = {
# source = ./scripts;
# recursive = true; # link recursively
# executable = true; # make all files executable
# };
# encode the file content in nix configuration file directly
# home.file.".xxx".text = ''
# xxx
# '';
home.file.".config/neofetch/config.conf".source = ./config/neofetch.conf;
# Packages that should be installed to the user profile.
home.packages = with pkgs; [
neofetch
# archives
zip
xz
unzip
p7zip
# utils
nurl # helps fetch git data for nixpkgs
# nix related
#
# it provides the command `nom` works just like `nix`
# with more details log output
nix-output-monitor
# dev tools
nodePackages_latest.pnpm
rustfmt
rust-analyzer
];
programs.fzf = { enable = true; };
programs.git = {
enable = true;
userName = "Youwen Wu";
userEmail = "youwenw@gmail.com";
delta.enable = true;
extraConfig = {
init.defaultBranch = "main";
commit.gpgsign = "false";
user.signingkey = "8F5E6C1AF90976CA7102917A865658ED1FE61EC3";
};
};
programs.lazygit = {
enable = true;
settings = {
git.paging = {
colorArg = "always";
pager = "delta --dark --paging=never";
};
};
};
programs.bat.enable = true;
programs.ripgrep.enable = true;
programs.kitty = {
enable = true;
theme = "Tokyo Night";
font.name = "CaskaydiaCove Nerd Font";
settings = {
font_size = 12;
window_padding_width = "8 8 0";
confirm_os_window_close = -1;
shell_integration = "enabled";
enable_audio_bell = "no";
background_opacity = "0.8";
};
};
programs.readline = {
enable = true;
extraConfig = "set editing-mode vi";
};
programs.zoxide = {
enable = true;
# enableZshIntegration = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
programs.gh = {
enable = true;
extensions = [ pkgs.github-copilot-cli ];
};
programs.oh-my-posh = {
enable = true;
enableZshIntegration = true;
enableFishIntegration = true;
enableBashIntegration = true;
useTheme = "gruvbox";
};
programs.fish = {
enable = true;
shellAliases = {
rebuild = "sudo nixos-rebuild switch";
ls = "eza -l --icons=auto";
};
functions = {
update-nixos = {
description =
"Update the system flake and attempt to build and switch to the new configuration.";
body = ''
cd /etc/nixos
nix flake update
sudo nixos-rebuild switch
'';
};
};
interactiveShellInit = ''
fish_vi_key_bindings
set -g fish_greeting
'';
plugins = [
{
name = "autopair";
src = pkgs.fetchFromGitHub {
owner = "jorgebucaran";
repo = "autopair.fish";
rev = "4d1752ff5b39819ab58d7337c69220342e9de0e2";
hash = "sha256-qt3t1iKRRNuiLWiVoiAYOu+9E7jsyECyIqZJ/oRIT1A=";
};
}
{
name = "fzf";
src = pkgs.fetchFromGitHub {
owner = "PatrickF1";
repo = "fzf.fish";
rev = "8920367cf85eee5218cc25a11e209d46e2591e7a";
hash = "sha256-T8KYLA/r/gOKvAivKRoeqIwE2pINlxFQtZJHpOy9GMM=";
};
}
{
name = "sponge";
src = pkgs.fetchFromGitHub {
owner = "meaningful-ooo";
repo = "sponge";
rev = "384299545104d5256648cee9d8b117aaa9a6d7be";
hash = "sha256-MdcZUDRtNJdiyo2l9o5ma7nAX84xEJbGFhAVhK+Zm1w=";
};
}
{
name = "done";
src = pkgs.fetchFromGitHub {
owner = "franciscolourenco";
repo = "done";
rev = "eb32ade85c0f2c68cbfcff3036756bbf27a4f366";
hash = "sha256-DMIRKRAVOn7YEnuAtz4hIxrU93ULxNoQhW6juxCoh4o=";
};
}
];
};
programs.nushell = {
enable = true;
configFile.text = ''
$env.config = {
edit_mode: vi,
show_banner: false
}
'';
};
programs.fd.enable = true;
programs.btop = {
enable = true;
settings = {
color_theme = "tokyo-night";
vim_keys = true;
theme_background = false;
};
};
programs.eza = {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
};
programs.bash.enable = true;
programs.zsh.enable = true;
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
};
# This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards
# incompatible changes.
home.stateVersion = "24.05";
#
# You can update home Manager without changing this value. See
# the home Manager release notes for a list of state version
# changes in each release.
# Let home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -1,5 +1,4 @@
{ pkgs, ...}:
{
{ pkgs, ... }: {
wayland.windowManager.hyprland = import ./hyprland-conf.nix;
# Audio effects and EQ tool

View file

@ -0,0 +1,96 @@
{ config, pkgs, ... }:
{
home.username = "youwen";
home.homeDirectory = "/home/youwen";
# link the configuration file in current directory to the specified location in home directory
# home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg;
# link all files in `./scripts` to `~/.config/i3/scripts`
# home.file.".config/i3/scripts" = {
# source = ./scripts;
# recursive = true; # link recursively
# executable = true; # make all files executable
# };
# encode the file content in nix configuration file directly
# home.file.".xxx".text = ''
# xxx
# '';
home.file.".config/neofetch/config.conf".source = ./config/neofetch.conf;
home.file.".wallpapers" = {
source = ./wallpapers;
recursive = true;
};
# Packages that should be installed to the user profile.
home.packages = with pkgs; [
neofetch
# archives
zip
xz
unzip
p7zip
# utils
nurl # helps fetch git data for nixpkgs
# nix related
#
# it provides the command `nom` works just like `nix`
# with more details log output
nix-output-monitor
# system tools
pciutils # lspci
usbutils # lsusb
# desktop utils
wl-clipboard
grim
slurp
swappy
pavucontrol
swww
waypaper
# desktop apps
dolphin
bitwarden-desktop
thunderbird
spotify
vesktop
signal-desktop
modrinth-app
lutris
wine
# dev tools
nodePackages_latest.pnpm
rustfmt
rust-analyzer
# desktop ricing
bibata-cursors
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
papirus-icon-theme
libsForQt5.qt5ct
];
# This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards
# incompatible changes.
home.stateVersion = "24.05";
#
# You can update home Manager without changing this value. See
# the home Manager release notes for a list of state version
# changes in each release.
# Let home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -80,7 +80,6 @@
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;

View file

@ -1,5 +1,4 @@
{ config, ... }:
{
{ config, ... }: {
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;

View file

@ -1,17 +1,17 @@
({ pkgs, lib, ... }: {
environment.systemPackages = [
# For debugging and troubleshooting Secure Boot.
pkgs.sbctl
];
({ pkgs, lib, ... }: {
environment.systemPackages = [
# For debugging and troubleshooting Secure Boot.
pkgs.sbctl
];
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
boot.loader.systemd-boot.enable = lib.mkForce false;
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
})
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
})