252 lines
7.6 KiB
Nix
252 lines
7.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
osConfig,
|
|
perSystem,
|
|
flake,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf;
|
|
inherit (osConfig.virtualisation) libvirtd;
|
|
inherit (osConfig.hardware) bluetooth;
|
|
in {
|
|
imports = with flake.modules.homePrograms; [
|
|
atuin
|
|
direnv
|
|
fish
|
|
helix
|
|
oh-my-posh
|
|
syncthing
|
|
wezterm
|
|
wl-kbptr
|
|
yazi
|
|
zed-editor
|
|
];
|
|
|
|
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
|
|
{
|
|
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";
|
|
git.settings.sequence.editor = lib.getExe pkgs.git-interactive-rebase-tool;
|
|
|
|
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 (broken)
|
|
just # make in rust
|
|
silicon # create code pics in rust
|
|
]
|
|
++ [
|
|
# console utils
|
|
# bluetuith # bluetooth tui in go
|
|
codex # openai coding agent in rust
|
|
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
|
|
wiremix # pavucontrol for wireplumber in rust
|
|
]
|
|
++ [
|
|
# various wrappers
|
|
# (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;
|
|
bwrapperOpts.mounts.readWrite = ["$XDG_DOWNLOAD_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 = "bw-get";
|
|
runtimeInputs = with pkgs; [bitwarden-cli jq wl-clipboard csvlens];
|
|
text = ''
|
|
bw get item \
|
|
"$(bw list items \
|
|
| jq -r '["name","user","id"], (.[] | [(.name), (.login.username), (.id)]) | @csv' \
|
|
| csvlens)" \
|
|
| jq -r '.login.password' \
|
|
| wl-copy \
|
|
&& 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
|
|
appimage-run
|
|
adwaita-icon-theme
|
|
# vial # qmk keyboard configuring app
|
|
(perSystem.t3code.desktop.override {withCodex = true;})
|
|
(perSystem.t3code.server.override {withCodex = true;})
|
|
pinentry-gnome3 # 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
|
|
crosspipe # replacing helvum
|
|
# 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";
|
|
# };
|
|
}
|