{ config, lib, osConfig, perSystem, flake, pkgs, ... }: let inherit (lib) mkIf; inherit (osConfig.virtualisation) libvirtd; inherit (osConfig.hardware) bluetooth; in { imports = with flake.modules.hm-programs; [ yazi helix fish oh-my-posh wezterm ghostty ] ++ [./vicinae.nix]; syncthing.enable = true; systemd.user.settings.Manager.DefaultEnvironment = { TERMINAL = "wezterm"; HISTFILE = ''"$XDG_STATE_HOME"/bash/history''; CARGO_HOME = ''"$XDG_DATA_HOME"/cargo''; DOTNET_CLI_HOME = ''"$XDG_DATA_HOME"/dotnet''; GNUPGHOME = ''"$XDG_DATA_HOME"/gnupg''; ICEAUTHORITY = ''"$XDG_CACHE_HOME"/ICEauthority''; NUGET_PACKAGES = ''"$XDG_CACHE_HOME"/NuGetPackages''; NPM_CONFIG_INIT_MODULE = ''"$XDG_CONFIG_HOME"/npm/config/npm-init.js''; NPM_CONFIG_CACHE = ''"$XDG_CACHE_HOME"/npm''; # NPM_CONFIG_TMP = ''"$XDG_RUNTIME_DIR"/npm''; }; services = { # pueue.enable = true; # process queue in rust ssh-agent.enable = true; }; programs = lib.attrsets.recursiveUpdate { bat.enable = true; # cat in rust btop.enable = true; # direnv.enable = true; distrobox.enable = true; difftastic.enable = true; eza.enable = true; # ls in rust fd.enable = true; # find in rust fzf.enable = true; # fuzzy finder in rust git.enable = true; gitui.enable = true; # git ui in rust jujutsu.enable = true; # vcs in rust keychain.enable = true; nix-index-database.comma.enable = true; nix-index.enable = true; nix-your-shell.enable = true; pay-respects.enable = true; # thefuck in rust ripgrep.enable = true; # grep in rust zellij.enable = true; zk.enable = true; zoxide.enable = true; # fuzzy cd in rust } { btop.settings.update_ms = 200; difftastic.git.enable = true; difftastic.git.diffToolMode = true; git.signing.format = "ssh"; git.settings.alias.cl = "clone"; git.settings.alias.co = "checkout"; keychain.keys = ["id_ed25519"]; }; home.packages = with pkgs; [ # development utils alejandra # nix formatter in rust # devenv # programming deps in rust (mkIf config.programs.jujutsu.enable jj-fzf) # fuzzy finder jujutsu tui just # make in rust silicon # create code pics in rust ] ++ [ # console utils # bluetuith # bluetooth tui in go dua # disk space usage in rust duf # better df in go fend # calculator in rust # mprocs # process runner in rust ouch # archive manager in rust # procs # ps in rust rbw # bitwarden cli in rust sd # sed in rust systemctl-tui # systemctl tui in rust trashy # trash cli in rust up # ultimate plumber in go ] ++ [ (pkgs.writeShellApplication { name = "rbw-ls"; runtimeInputs = with pkgs; [rbw jq csvlens]; text = '' rbw ls --raw \ | jq -r '["name","user","folder","id"], ( .[] | [(.name // "none"), (.user // "none"), (.folder // "none"), .id]) | @csv' \ | csvlens ''; }) (pkgs.writeShellApplication { name = "rbw-get"; runtimeInputs = with pkgs; [rbw wl-clipboard]; text = ''rbw get --clipboard "$1" && sleep 5 && wl-copy -c''; }) (pkgs.writeShellApplication { name = "rbw-totp"; runtimeInputs = with pkgs; [rbw wl-clipboard]; text = ''rbw totp --clipboard "$1" && sleep 5 && wl-copy -c''; }) ] ++ [ # misc apps adwaita-icon-theme # vial # qmk keyboard configuring app pinentry-qt # pinentry for rbw (mkIf libvirtd.enable virt-manager) # libvirt gui # waycheck # check wayland protocols gpu-screen-recorder-gtk ] ++ [ # gui libadwaita apps celluloid # mpv gui in libadwaita # gnome-text-editor helvum # pipewire patchbay in rust # junction # app chooser mission-center # task manager in rust (partly) (mkIf bluetooth.enable overskride) # bluetooth gui in rust pika-backup # borg gui in rust pwvucontrol # pipewire gui in rust perSystem.zmx.default # sonusmix # pipewire routing tool in rust ]; # xdg.desktopEntries.uni = { # actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\""; # categories = ["Utility" "X-Launch" "Network"]; # comment = "Select and open or copy URLs from a list."; # exec = "fish -c \"~/.local/bin/uni\""; # icon = "web-browser"; # name = "Uni URL Handler"; # startupNotify = true; # terminal = false; # type = "Application"; # }; }