{ config, lib, osConfig, perSystem, flake, pkgs, ... }: let inherit (lib) mkIf; inherit (osConfig.virtualisation) libvirtd; inherit (osConfig.hardware) bluetooth; in { imports = with flake.homeModules; [ programs ]; 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''; }; programs = lib.attrsets.recursiveUpdate { atuin.enable = true; fish.enable = true; # friendly interactive shell in rust oh-my-posh.enable = true; helix.enable = true; yazi.enable = true; wezterm.enable = true; ghostty.enable = true; 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; obsidian.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; btop.package = pkgs.btop-rocm; difftastic.git.enable = true; difftastic.git.diffToolMode = true; helix.defaultEditor = true; git.signing.format = "ssh"; git.settings.alias.cl = "clone"; git.settings.alias.co = "checkout"; keychain.keys = ["id_ed25519"]; obsidian.package = perSystem.mypackages.obsidian-bwrapped.override { bwrapperOpts = { sockets.x11 = false; mounts.readWrite = [ "$HOME/Obsidian" ]; }; }; # obsidian.vaults = { # personal.target = "Obsidian/Personal"; # university.target = "Obsidian/University"; # }; }; 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 (perSystem.mypackages.prismlauncher-bwrapped.override { addPkgs = with pkgs; [mangohud gamemode gamescope glfw3-minecraft]; packageOverrides = { jdks = with pkgs; [ # graalvmPackages.graalvm-ce # zulu8 zulu17 zulu ]; }; }) (perSystem.mypackages.zen-browser-bwrapped.override { bwrapperOpts = { sockets.x11 = false; }; }) (perSystem.mypackages.legcord-bwrapped.override { bwrapperOpts = { sockets.x11 = false; }; }) (perSystem.mypackages.helium-browser-bwrapped.override { bwrapperOpts = { sockets.x11 = false; mounts.readWrite = [ # "$XDG_DOCUMENTS_DIR" "$XDG_DOWNLOAD_DIR" # "$XDG_MUSIC_DIR" # "$XDG_VIDEOS_DIR" # "$XDG_PICTURES_DIR" ]; }; }) (pkgs.mkBwrapper rec { app = { addPkgs = with pkgs; [mangohud gamemode gamescope]; package = pkgs.heroic.override { extraPkgs = pkgs: app.addPkgs; }; id = "com.heroicgameslauncher.hgl_bwrapper"; runScript = "heroic"; # isFhsenv = true; }; dbus.session.talks = [ "com.canonical.Unity" "org.freedesktop.Notifications" "org.freedesktop.PowerManagement" "org.freedesktop.ScreenSaver" "org.gnome.SettingsDaemon.MediaKeys" "org.kde.StatusNotifierWatcher" ]; dbus.system.talks = [ "org.freedesktop.UDisks2" "org.freedesktop.UPower" ]; mounts.readWrite = [ "/storage/games/heroic" "$HOME/.config/wine-tools" ]; mounts.read = [ "$XDG_CONFIG_HOME/mangohud" ]; }) ] ++ [ (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.systemDirs.data = ["/home/user/.bwrapper/helium/local/share"]; # 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"; # }; }