{ config, pkgs, lib, ... }: with builtins; with import ./modules/neovim-config.nix { inherit pkgs lib fromGitHub; }; { home.username = "hive"; home.homeDirectory = "/home/hive"; home.stateVersion = import ./version.nix; home.packages = with pkgs; [ bat diceware pwgen evolution srain dconf2nix 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.file = { # If managing individual files is needed }; 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 dconf dconf.settings = { "org/gnome/mutter".center-new-windows = true; "org/gnome/desktop/sound".allow-volume-above-100-percent = true; "org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" ]; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { binding = "t"; command = "wezterm"; name = "Wezterm"; }; }; # 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 = { hmu = '' set -l hm_before_commit $PWD cd ~/.config/home-manager/ git diff git add . git commit git push cd $hm_before_commit ''; 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; enableZshIntegration = true; }; programs.kitty = { enable = true; shellIntegration.enableFishIntegration = true; theme = "Catppuccin-Mocha"; keybindings = {}; settings = { clear_all_shortcuts = true; tab_bar_style = "hidden"; 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 = { # TODO configure this enable = true; }; # themeing qt = { enable = true; platformTheme = "gnome"; style.name = "adwaita"; }; }