{ config, pkgs, ... }: { # Home Manager needs a bit of information about you and the paths it should # manage. home.username = "hive"; home.homeDirectory = "/home/hive"; # 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 = "23.05"; # Please read the comment before changing. # The home.packages option allows you to install Nix packages into your # environment. home.packages = with pkgs; [ bat diceware pwgen git srain neovide schildichat-desktop dino mangohud termpdfpy gimp lollypop skim picard syncthing armcord tdesktop ripgrep tmate comic-mono btop firefox apostrophe warp syncplay mpv wl-clipboard adw-gtk3 # some bullshit to get gnome apps to install withotu a prefix ] ++ ( with pkgs.gnome; [ gnome-boxes gnome-tweaks dconf-editor ] ++ ( with pkgs.gnomeExtensions; [ night-theme-switcher rounded-window-corners appindicator ])); # Home Manager is pretty good at managing dotfiles. The primary way to manage # plain files is through 'home.file'. home.file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. # ".screenrc".source = dotfiles/screenrc; # # You can also set the file content immediately. # ".gradle/gradle.properties".text = '' # org.gradle.console=verbose # org.gradle.daemon.idletimeout=3600000 # ''; }; home.sessionVariables = { # system configuration # EDITOR = "nvim"; VISUAL = "neovide --nofork"; NEOVIDE_MULTIGRID = 1; # fish config fish_greeting = "✨️ heya ${config.home.username}, welcome to $(hostnamectl --pretty) ~"; }; # configure programs programs.home-manager.enable = true; programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; vimdiffAlias = true; withNodeJs = true; coc = { enable = true; }; }; programs.fish = { enable = true; shellAbbrs = { nxs = "nix search nixpkgs"; nxr = "nix run nixpkgs#"; nxsh = "nix shell nixpkgs#"; e = "edit"; nxb = "sudo nixos-rebuild switch"; nxu = "sudo nixos-rebuild boot --upgrade"; nxc = "sudo nix-collect-garbage -d"; }; shellAliases = { aria = "aria2c -c -k1M -x10"; dw = "diceware -n 6 -d -"; ksh = "kitty +kitten ssh"; p = "ping -s 128 -O -c 100 -A -D 1.1.1.1"; pf = "sudo ping -f -c 100 -A 1.1.1.1"; }; functions = { edit = '' if test $XDG_SESSION_TYPE != tty $VISUAL $argv else $EDITOR $argv end ''; fish_prompt = '' set -l last_status $status prompt_login echo -n ' : ' set_color $fish_color_cwd echo -n (prompt_pwd) set_color normal fish_vcs_prompt '|%s' echo " ඞ" if not test $last_status -eq 0 set_color $fish_color_error end echo -n "> " set_color normal ''; }; interactiveShellInit = '' fish_add_path ~/.local/bin fish_add_path ~/.local/bin/scripts fish_add_path ~/.local/share/cargo/bin fish_add_path /var/lib/flatpak/exports/bin fish_vi_key_bindings ''; }; programs.password-store = { enable = true; package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]); settings = { PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass"; PASSWORD_STORE_CLIP_TIME = "60"; }; }; programs.kitty = { enable = true; shellIntegration.enableFishIntegration = true; theme = "Catppuccin-Mocha"; settings = { tab_bar_style = "powerline"; tab_powerline_style = "round"; hide_window_decorations = true; tab_bar_edge = "top"; remember_window_size = false; initial_window_widthc = 216; initial_window_heightc = 168; allow_remote_control = true; shell = "fish"; editor = "nvim"; font_family = "Comic Mono"; font_size = 13; }; }; programs.browserpass.enable = true; programs.gpg.enable = true; # themeing qt = { enable = true; platformTheme = "gnome"; style.name = "adwaita"; }; }