From 502359be519e81f4a6920cf37b957b788c16f4fb Mon Sep 17 00:00:00 2001 From: Kagura Date: Tue, 3 Sep 2024 14:05:20 +0800 Subject: [PATCH] Init repo --- home.nix | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 home.nix diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..86ef0a8 --- /dev/null +++ b/home.nix @@ -0,0 +1,122 @@ +{ config, pkgs, ... }: + +let + basicPackages = with pkgs; [ + # Zsh packages + zsh + zsh-powerlevel10k + oh-my-zsh + thefuck + fzf + zsh-fzf-tab + + git + eza + kitty + fuzzel + hyfetch + btop + vlc + ]; + nixosOnlyPackages = with pkgs; [ + # Dev tools + rustup + clang-tools + pkg-config + openssl + zlib + ]; + otherOnlyPackages = with pkgs; [ + helix + ]; +in +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "kagura"; + home.homeDirectory = "/home/kagura"; + + # 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. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "24.05"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = if (builtins.pathExists /etc/NIXOS) then + (basicPackages) ++ (nixosOnlyPackages) + else (basicPackages) ++ (otherOnlyPackages); + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + + }; + + home.sessionVariables = { + EDITOR = "hx"; + + PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; + + INPUT_METHOD = "fcitx"; + QT_IM_MODULE = "fcitx"; + GTK_IM_MODULE = "fcitx"; + XIM_SERVERS = "fcitx"; + }; + + programs.home-manager.enable = true; + + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + + programs.zsh = { + enable = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + + shellAliases = { + ls = "eza"; + ll = "eza --icons -l"; + la = "eza --icons -al"; + + vi = "hx"; + vim = "hx"; + + update = "sudo nixos-rebuild switch"; + home-update = "home-manager switch"; + }; + + history = { + size = 10000; + path = "${config.xdg.dataHome}/zsh/history"; + }; + + zplug = { + enable = true; + plugins = [{ name = "zsh-users/zsh-autosuggestions"; }]; + }; + + plugins = [{ + name = "powerlevel10k"; + src = pkgs.zsh-powerlevel10k; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + }]; + + oh-my-zsh = { + enable = true; + plugins = [ "git" "thefuck" ]; + theme = "agnoster"; + }; + + initExtra = '' + [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + source ${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh + ''; + }; +}