2024-07-11 03:56:19 -07:00
|
|
|
{ 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
|
|
|
|
# '';
|
2024-07-31 16:52:12 -07:00
|
|
|
|
2024-07-30 22:44:18 -07:00
|
|
|
home.file.".config/neofetch/config.conf".source = ./config/neofetch.conf;
|
2024-07-31 18:57:17 -07:00
|
|
|
home.file.".wallpapers" = {
|
|
|
|
source = ./wallpapers;
|
|
|
|
recursive = true;
|
|
|
|
};
|
2024-07-11 03:56:19 -07:00
|
|
|
|
|
|
|
# Packages that should be installed to the user profile.
|
|
|
|
home.packages = with pkgs; [
|
|
|
|
neofetch
|
|
|
|
|
|
|
|
# archives
|
|
|
|
zip
|
|
|
|
xz
|
|
|
|
unzip
|
|
|
|
p7zip
|
|
|
|
|
|
|
|
# utils
|
2024-07-30 19:44:17 -07:00
|
|
|
nurl # helps fetch git data for nixpkgs
|
2024-07-11 03:56:19 -07:00
|
|
|
|
|
|
|
# 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
|
2024-07-30 04:36:35 -07:00
|
|
|
|
|
|
|
# desktop utils
|
2024-07-11 21:45:18 -07:00
|
|
|
wl-clipboard
|
2024-07-11 22:06:02 -07:00
|
|
|
grim
|
|
|
|
slurp
|
|
|
|
swappy
|
2024-07-30 04:36:35 -07:00
|
|
|
pavucontrol
|
|
|
|
swww
|
|
|
|
waypaper
|
2024-07-11 03:56:19 -07:00
|
|
|
|
2024-07-30 04:36:35 -07:00
|
|
|
# desktop apps
|
|
|
|
dolphin
|
|
|
|
bitwarden-desktop
|
|
|
|
thunderbird
|
|
|
|
spotify
|
2024-07-11 03:56:19 -07:00
|
|
|
vesktop
|
|
|
|
signal-desktop
|
2024-07-31 16:55:55 -07:00
|
|
|
modrinth-app
|
2024-08-01 02:40:17 -07:00
|
|
|
lutris
|
2024-08-01 03:23:08 -07:00
|
|
|
wine
|
2024-07-11 03:56:19 -07:00
|
|
|
|
2024-07-30 04:36:35 -07:00
|
|
|
# dev tools
|
2024-07-11 03:56:19 -07:00
|
|
|
nodePackages_latest.pnpm
|
|
|
|
rustfmt
|
|
|
|
rust-analyzer
|
|
|
|
|
2024-07-30 04:36:35 -07:00
|
|
|
# desktop ricing
|
2024-07-11 16:57:24 -07:00
|
|
|
bibata-cursors
|
2024-07-11 20:01:04 -07:00
|
|
|
libsForQt5.qtstyleplugin-kvantum
|
|
|
|
libsForQt5.qt5ct
|
2024-07-11 21:56:03 -07:00
|
|
|
papirus-icon-theme
|
|
|
|
libsForQt5.qt5ct
|
2024-07-11 03:56:19 -07:00
|
|
|
];
|
|
|
|
|
2024-07-11 17:25:22 -07:00
|
|
|
services.dunst = {
|
|
|
|
enable = true;
|
|
|
|
catppuccin.enable = true;
|
2024-07-11 23:26:19 -07:00
|
|
|
iconTheme = {
|
|
|
|
name = "Papirus-Dark";
|
|
|
|
package = pkgs.papirus-icon-theme;
|
|
|
|
size = "32x32";
|
|
|
|
};
|
2024-07-11 17:25:22 -07:00
|
|
|
};
|
|
|
|
|
2024-07-30 04:38:35 -07:00
|
|
|
services.easyeffects.enable = true;
|
2024-07-31 16:52:12 -07:00
|
|
|
services.easyeffects.package = pkgs.easyeffects;
|
2024-07-12 00:27:08 -07:00
|
|
|
|
2024-07-11 17:25:22 -07:00
|
|
|
programs.fzf = {
|
|
|
|
enable = true;
|
|
|
|
catppuccin.enable = true;
|
|
|
|
};
|
|
|
|
|
2024-07-30 04:38:35 -07:00
|
|
|
programs.wlogout.enable = true;
|
|
|
|
|
2024-07-30 04:41:53 -07:00
|
|
|
wayland.windowManager.hyprland = import ./modules/desktop/hyprland.nix;
|
2024-07-11 03:56:19 -07:00
|
|
|
|
|
|
|
# basic configuration of git, please change to your own
|
|
|
|
programs.git = {
|
|
|
|
enable = true;
|
|
|
|
userName = "Youwen Wu";
|
|
|
|
userEmail = "youwenw@gmail.com";
|
|
|
|
delta.enable = true;
|
|
|
|
extraConfig = {
|
|
|
|
init.defaultBranch = "main";
|
2024-07-11 22:30:59 -07:00
|
|
|
commit.gpgsign = "true";
|
|
|
|
user.signingkey = "8F5E6C1AF90976CA7102917A865658ED1FE61EC3";
|
2024-07-11 03:56:19 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-07-30 15:44:38 -07:00
|
|
|
programs.lazygit = {
|
|
|
|
enable = true;
|
|
|
|
catppuccin.enable = true;
|
|
|
|
catppuccin.flavor = "macchiato";
|
|
|
|
settings = {
|
|
|
|
git.paging = {
|
|
|
|
colorArg = "always";
|
|
|
|
pager = "delta --dark --paging=never";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-07-11 03:56:19 -07:00
|
|
|
|
2024-07-30 19:44:17 -07:00
|
|
|
programs.bat.enable = true;
|
|
|
|
programs.bat.catppuccin = {
|
|
|
|
enable = true;
|
|
|
|
flavor = "macchiato";
|
|
|
|
};
|
|
|
|
|
|
|
|
programs.ripgrep.enable = true;
|
|
|
|
|
2024-07-11 03:56:19 -07:00
|
|
|
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";
|
2024-07-12 01:12:29 -07:00
|
|
|
enable_audio_bell = "no";
|
2024-07-14 11:46:53 -07:00
|
|
|
background_opacity = "0.8";
|
2024-07-11 03:56:19 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-07-11 16:57:24 -07:00
|
|
|
programs.readline = {
|
|
|
|
enable = true;
|
|
|
|
extraConfig = "set editing-mode vi";
|
|
|
|
};
|
|
|
|
|
2024-07-11 20:01:04 -07:00
|
|
|
gtk = {
|
|
|
|
enable = true;
|
|
|
|
catppuccin.enable = true;
|
|
|
|
cursorTheme = {
|
|
|
|
name = "Bibata-Modern-Ice";
|
2024-07-11 22:26:06 -07:00
|
|
|
size = 26;
|
2024-07-11 20:01:04 -07:00
|
|
|
};
|
2024-07-21 19:02:10 -07:00
|
|
|
iconTheme = { name = "Papirus-Dark"; };
|
2024-07-11 20:01:04 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
qt = {
|
|
|
|
enable = true;
|
2024-07-11 21:15:44 -07:00
|
|
|
platformTheme.name = "qtct";
|
2024-07-11 20:01:04 -07:00
|
|
|
style.name = "kvantum";
|
|
|
|
};
|
|
|
|
|
|
|
|
xdg.configFile = {
|
|
|
|
"Kvantum/kvantum.kvconfig".text = ''
|
|
|
|
[General]
|
|
|
|
theme=GraphiteNordDark
|
|
|
|
'';
|
|
|
|
|
2024-07-21 19:02:10 -07:00
|
|
|
"Kvantum/GraphiteNord".source =
|
|
|
|
"${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord";
|
2024-07-11 20:01:04 -07:00
|
|
|
};
|
|
|
|
|
2024-07-30 15:38:22 -07:00
|
|
|
programs.rofi = {
|
|
|
|
enable = true;
|
|
|
|
package = pkgs.rofi-wayland;
|
|
|
|
theme = "gruvbox-dark";
|
|
|
|
};
|
|
|
|
|
2024-07-30 04:46:28 -07:00
|
|
|
programs.waybar = import ./modules/desktop/waybar/waybar.nix;
|
2024-07-11 03:56:19 -07:00
|
|
|
|
|
|
|
programs.zoxide = {
|
|
|
|
enable = true;
|
2024-07-30 04:12:33 -07:00
|
|
|
# enableZshIntegration = true;
|
|
|
|
enableFishIntegration = true;
|
2024-07-30 20:48:07 -07:00
|
|
|
enableNushellIntegration = true;
|
2024-07-11 03:56:19 -07:00
|
|
|
};
|
|
|
|
|
2024-07-11 23:24:42 -07:00
|
|
|
programs.gh = {
|
|
|
|
enable = true;
|
|
|
|
extensions = [ pkgs.github-copilot-cli ];
|
|
|
|
};
|
|
|
|
|
2024-07-11 23:19:59 -07:00
|
|
|
programs.oh-my-posh = {
|
|
|
|
enable = true;
|
2024-07-30 04:12:33 -07:00
|
|
|
# enableZshIntegration = true;
|
|
|
|
enableFishIntegration = true;
|
2024-07-11 23:20:42 -07:00
|
|
|
enableBashIntegration = true;
|
2024-07-30 22:40:17 -07:00
|
|
|
useTheme = "gruvbox";
|
2024-07-11 23:19:59 -07:00
|
|
|
};
|
|
|
|
|
2024-07-30 04:12:33 -07:00
|
|
|
programs.fish = {
|
|
|
|
enable = true;
|
2024-07-30 21:32:47 -07:00
|
|
|
catppuccin.enable = true;
|
2024-07-30 22:40:31 -07:00
|
|
|
catppuccin.flavor = "mocha";
|
2024-07-30 04:12:33 -07:00
|
|
|
shellAliases = {
|
|
|
|
rebuild = "sudo nixos-rebuild switch";
|
|
|
|
ls = "eza -l --icons=auto";
|
|
|
|
};
|
2024-07-31 18:08:25 -07:00
|
|
|
functions = {
|
|
|
|
update-nixos = {
|
|
|
|
description =
|
|
|
|
"Update the system flake and attempt to build and switch to the new configuration.";
|
|
|
|
body = ''
|
2024-08-01 14:54:21 -07:00
|
|
|
cd /etc/nixos
|
|
|
|
nix flake update
|
2024-07-31 18:08:25 -07:00
|
|
|
sudo nixos-rebuild switch
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
2024-07-30 04:12:33 -07:00
|
|
|
interactiveShellInit = ''
|
|
|
|
fish_vi_key_bindings
|
|
|
|
set -g fish_greeting
|
|
|
|
'';
|
2024-07-30 04:32:21 -07:00
|
|
|
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=";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2024-07-30 20:48:07 -07:00
|
|
|
programs.nushell = {
|
|
|
|
enable = true;
|
|
|
|
configFile.text = ''
|
|
|
|
$env.config = {
|
|
|
|
edit_mode: vi,
|
|
|
|
show_banner: false
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2024-07-30 15:34:38 -07:00
|
|
|
programs.fd.enable = true;
|
|
|
|
|
|
|
|
programs.btop = {
|
|
|
|
enable = true;
|
|
|
|
settings = {
|
|
|
|
color_theme = "tokyo-night";
|
|
|
|
vim_keys = true;
|
|
|
|
theme_background = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-07-30 04:32:21 -07:00
|
|
|
programs.eza = {
|
|
|
|
enable = true;
|
|
|
|
enableFishIntegration = true;
|
|
|
|
enableBashIntegration = true;
|
2024-07-30 04:12:33 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
programs.bash.enable = true;
|
2024-07-11 03:56:19 -07:00
|
|
|
|
|
|
|
programs.librewolf = {
|
|
|
|
enable = true;
|
|
|
|
settings = {
|
|
|
|
"webgl.disabled" = false;
|
|
|
|
"privacy.resistFingerprinting" = false;
|
|
|
|
"privacy.clearOnShutdown.history" = false;
|
|
|
|
"privacy.clearOnShutdown.cookies" = false;
|
|
|
|
"network.cookie.lifetimePolicy" = 0;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|