{ 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 evolution prismlauncher ungoogled-chromium mission-center mgba srain dconf2nix inkscape minetest vscodium distrobox flare-signal aria pwgen josm xdg-ninja schildichat-desktop dino jq lapce 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 gamemode ])); home.file = { # If managing individual files is needed }; home.sessionVariables = { # fish config fish_greeting = "✨ heya ${config.home.username}, welcome to $(hostnamectl --pretty) ~"; EDITOR = "nvim"; NIXPKGS_ALLOW_UNFREE = 1; GAMEMODERUNEXEC = "nvidia-offload"; }; # configure dconf # use dconf watch / to monitor for changes # use dconf dump /path/to/keys | dconf2nix to generate automatically dconf.settings = with lib.hm.gvariant; { "org/gnome/shell" = { disable-user-extensions = false; disable-extension-version-validation = true; enabled-extensions = [ "rounded-window-corners@yilozt" "gsconnect@andyholmes.github.io" "unite@hardpixel.eu" "pano@elhan.io" "quick-settings-avatar@d-go" "appindicatorsupport@rgcjonas.gmail.com" "gamemode@christian.kellner.me" ]; disabled-extensions = []; favorite-apps = [ "firefox.desktop" "org.gnome.Nautilus.desktop" "org.gnome.Software.desktop" ]; }; "org/gnome/shell/extensions/unite" = { extend-left-box = true; show-window-buttons = "never"; show-window-title = "always"; }; "org/gnome/shell/extensions/rounded-window-corners" = { custom-rounded-corner-settings = [(mkDictionaryEntry [ "org.wezfurlong.wezterm" (mkVariant [ (mkDictionaryEntry [ "padding" (mkVariant [ (mkDictionaryEntry [ "left" (mkVariant (mkUint32 13)) ]) (mkDictionaryEntry [ "right" (mkVariant (mkUint32 14)) ]) (mkDictionaryEntry [ "top" (mkVariant (mkUint32 29)) ]) (mkDictionaryEntry [ "bottom" (mkVariant (mkUint32 13)) ]) ]) ]) (mkDictionaryEntry [ "keep_rounded_corners" (mkVariant [ (mkDictionaryEntry [ "maximized" (mkVariant false) ]) (mkDictionaryEntry [ "fullscreen" (mkVariant false) ]) ]) ]) (mkDictionaryEntry [ "border_radius" (mkVariant (mkUint32 13)) ]) (mkDictionaryEntry [ "smoothing" (mkVariant (mkUint32 0)) ]) (mkDictionaryEntry [ "enabled" (mkVariant true) ]) ]) ])]; }; "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.direnv = { enable = true; }; programs.firefox = { # TODO add options later enable = true; }; programs.home-manager.enable = true; programs.zoxide = { enable = true; enableFishIntegration = true; options = [ "--cmd cd" ]; }; 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"; nvim = "edit"; nxs = "nix search nixpkgs"; nxr = "nix run nixpkgs#"; nxh = "nix shell nixpkgs#"; nxc = "sudo nix-collect-garbage -d"; }; shellAliases = { edit = "$EDITOR"; csk = "cd (sk -e)"; nxu = ''sudo sh -c "nixos-rebuild boot --upgrade --log-format internal-json -v |& nom --json"''; nxw = ''sudo sh -c "nixos-rebuild switch --log-format internal-json -v |& nom --json"''; aria = "aria2c -c -k1M -x10"; dw = "diceware -n 6 -d -"; pw = "pwgen -By"; 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 = { hme = '' set -l hm_before_commit $PWD cd ~/.config/home-manager/ git pull cd $hm_before_commit edit ~/.config/home-manager/home.nix ''; hmu = '' set -l hm_before_commit $PWD cd ~/.config/home-manager/ gacp cd $hm_before_commit ''; gacp = '' git diff set gacp_read $(read -P 'continue ? [Y/n] ') set gacp_n n if [ "$gacp_read" != $gacp_n ] git add . git commit git push else echo "cancelled ." end ''; 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 ''; 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 ~/.local/share/flatpak/exports/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; extraConfig = '' return { font = wezterm.font("Comic Mono"), font_size = 12.0, color_scheme = "Catppuccin Mocha", hide_mouse_cursor_when_typing = false, window_decorations = "INTEGRATED_BUTTONS | RESIZE", integrated_title_button_style = "Gnome", integrated_title_buttons = { 'Close' }, initial_cols = 84, initial_rows = 28, window_frame = { inactive_titlebar_bg = '#1e1e2e', active_titlebar_bg = '#1e1e2e', font = wezterm.font { family = "Comic Mono", weight = "Regular", }, }, } ''; }; 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"; }; }