{ 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 # dev tools nodePackages_latest.pnpm rustfmt rust-analyzer # desktop ricing bibata-cursors libsForQt5.qtstyleplugin-kvantum libsForQt5.qt5ct papirus-icon-theme libsForQt5.qt5ct ]; services.dunst = { enable = true; catppuccin.enable = true; iconTheme = { name = "Papirus-Dark"; package = pkgs.papirus-icon-theme; size = "32x32"; }; }; services.easyeffects.enable = true; services.easyeffects.package = pkgs.easyeffects; programs.fzf = { enable = true; catppuccin.enable = true; }; programs.wlogout.enable = true; wayland.windowManager.hyprland = import ./modules/desktop/hyprland.nix; # 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"; commit.gpgsign = "true"; user.signingkey = "8F5E6C1AF90976CA7102917A865658ED1FE61EC3"; }; }; programs.lazygit = { enable = true; catppuccin.enable = true; catppuccin.flavor = "macchiato"; settings = { git.paging = { colorArg = "always"; pager = "delta --dark --paging=never"; }; }; }; programs.bat.enable = true; programs.bat.catppuccin = { enable = true; flavor = "macchiato"; }; 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"; }; gtk = { enable = true; catppuccin.enable = true; cursorTheme = { name = "Bibata-Modern-Ice"; size = 26; }; iconTheme = { name = "Papirus-Dark"; }; }; qt = { enable = true; platformTheme.name = "qtct"; style.name = "kvantum"; }; xdg.configFile = { "Kvantum/kvantum.kvconfig".text = '' [General] theme=GraphiteNordDark ''; "Kvantum/GraphiteNord".source = "${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord"; }; programs.rofi = { enable = true; package = pkgs.rofi-wayland; theme = "gruvbox-dark"; }; programs.waybar = import ./modules/desktop/waybar/waybar.nix; 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.zsh = { enable = false; enableCompletion = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; shellAliases = { ls = "eza -l --icons=auto"; update = "sudo nixos-rebuild switch"; }; defaultKeymap = "viins"; # zimfw = { # enable = true; # disableVersionCheck = true; # degit = true; # zmodules = [ # "environment" # "git" # "input" # "termtitle" # "utility" # "exa" # "fzf" # "magic-enter" # ]; # }; }; programs.fish = { enable = true; catppuccin.enable = true; catppuccin.flavor = "mocha"; 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 = '' nix flake update /etc/nixos 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.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; }