{ config, pkgs, lib, ... }: with builtins; with import ./modules/neovim-config.nix { inherit pkgs lib fromGitHub; }; { # 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 evolution srain neovide xdg-ninja schildichat-desktop dino mangohud termpdfpy zellij gimp lollypop skim telegram-desktop picard syncthing armcord tdesktop ripgrep tmate comic-mono comfortaa btop firefox apostrophe warp syncplay virt-manager mpv wl-clipboard adw-gtk3 ] ++ ( with pkgs.gnome; [ gnome-tweaks dconf-editor ] ++ ( with pkgs.gnomeExtensions; [ night-theme-switcher rounded-window-corners appindicator gsconnect ])); # 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 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.git = { enable = true; lfs.enable = true; delta = { enable = true; options = { decorations = { commit-decoration-style = "bold yellow box ul"; file-decoration-style = "none"; file-style = "bold yellow ul"; hunk-header-decoration-style = "cyan box ul"; }; features = "side-by-side line-numbers decorations"; }; }; signing = { key = "DD901BA40FBBB127"; signByDefault = true; }; userEmail = "theotheroracle@disroot.org"; userName = "Bit Borealis"; extraConfig = { init.defaultBranch = "main"; }; }; programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; vimdiffAlias = true; withNodeJs = true; plugins = with pkgs.vimPlugins; [ editorconfig-nvim vim-airline vim-airline-themes lsp_signature-nvim nvim-colorizer-lua nnn-vim nvim-surround nvim-treesitter.withAllGrammars (fromGitHub "HEAD" "hiphish/rainbow-delimiters.nvim") nvim-lspconfig ]; extraConfig = mkConfig { settings = { number = true; linebreak = true; showbreak = "+>"; textwidth = 100; showmatch = true; hlsearch = true; smartcase = true; ignorecase = true; autoindent = true; smartindent = true; smarttab = true; tabstop = 3; shiftwidth = 3; display = "lastline"; formatoptions = "jt"; ruler = true; cc = 101; termguicolors = 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 = { ng = '' set NG ~/.ssh/ng/ if test \( -e $NG/0 \) -a \( -e $NG/1 \) echo (shuf -n 1 $NG/0) (shuf -n 1 $NG/1) else echo missing NG files end ''; edit = '' if test $XDG_SESSION_TYPE != tty neovide $argv #should be fixed later to use VISUAL somehow, reference funced 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_width = "80c"; initial_window_height = "25c"; allow_remote_control = true; shell = "."; editor = "."; font_family = "Comic Mono"; font_size = 13; }; }; programs.browserpass.enable = true; programs.gpg.enable = true; services.etesync-dav = { enable = true; }; # themeing qt = { enable = true; platformTheme = "gnome"; style.name = "adwaita"; }; }