{ config, pkgs, lib, ... }: with builtins; with import ./modules/neovim-config.nix { inherit pkgs lib fromGitHub; }; { 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 = import ./version.nix; # 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 inkscape flare-signal neovide xdg-ninja schildichat-desktop dino jq mangohud nix-index termpdfpy gimp lollypop skim telegram-desktop nix-output-monitor picard syncthing armcord tdesktop ripgrep tmate comic-mono comfortaa btop apostrophe warp syncplay virt-manager mpv wl-clipboard adw-gtk3 (writeShellScriptBin "strings" ''${busybox}/bin/strings "$@"'') ] ++ ( with pkgs.gnome; [ gnome-tweaks dconf-editor gnome-boxes ] ++ ( with pkgs.gnomeExtensions; [ night-theme-switcher unite rounded-window-corners appindicator gsconnect pano unite user-avatar-in-quick-settings ])); # 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; ZELLIJ_AUTO_EXIT = "true"; # fish config fish_greeting = "✨ heya ${config.home.username}, welcome to $(hostnamectl --pretty) ~"; }; # configure programs programs.firefox = { #add options later enable = true; }; programs.home-manager.enable = true; programs.zellij = { enable = true; enableFishIntegration = true; settings = { default_layout = "compact"; ui = { pane_frames = { hide_session_name = true; rounded_corners = true; }; }; }; }; programs.zoxide = { enable = true; enableFishIntegration = 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 = 80; showmatch = true; hlsearch = true; smartcase = true; ignorecase = true; autoindent = true; expandtab = false; smartindent = true; smarttab = true; tabstop = 3; shiftwidth = 3; display = "lastline"; formatoptions = "jt"; ruler = true; colorcolumn = 80; termguicolors = true; }; }; coc = { enable = true; }; }; programs.fish = { enable = true; shellAbbrs = { e = "edit"; nxs = "nix search nixpkgs"; nxr = "nix run nixpkgs#"; nxh = "nix shell nixpkgs#"; nxw = "sudo nixos-rebuild switch"; nxu = "sudo nixos-rebuild boot --upgrade"; nxc = "sudo nix-collect-garbage -d"; hme = "edit ~/.config/home-manager/home.nix"; }; 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.wezterm = { enable = true; enableBashIntegration = true; }; programs.kitty = { enable = true; shellIntegration.enableFishIntegration = true; theme = "Catppuccin-Mocha"; keybindings = {}; settings = { clear_all_shortcuts = true; tab_bar_style = "hidden"; # tab_separator = ""; # tab_powerline_style = "angled"; # tab_bar_edge = "top"; # background_opacity = "0.75"; # background_blur = 25; hide_window_decorations = true; remember_window_size = false; initial_window_width = "86c"; initial_window_height = "28c"; allow_remote_control = true; shell = "."; editor = "."; font_family = "Comic Mono"; font_size = 12; }; }; programs.browserpass.enable = true; programs.gpg.enable = true; services.etesync-dav = { enable = true; }; # themeing qt = { enable = true; platformTheme = "gnome"; style.name = "adwaita"; }; }