dotfiles/desktop-niri.nix
2026-07-29 19:19:53 -04:00

113 lines
4.3 KiB
Nix

{ config, pkgs, nirimon, aw-watcher-afk-input, dotfilesPath, ...}: {
imports = [
./nix/hm-sublime-text.nix
./nix/hm-firefox.nix
];
home.packages = with pkgs; [
activitywatch
dos2unix
ffmpeg
nmap
xclip
nodejs_26 # Cannot use slim (need npm or sublime lsp-typescript complains)
pnpm
typescript
typescript-language-server
gucharmap
# TODO: This needs other things to integrate with niri. The Pipewire source doesnt work out of the box
# see https://niri-wm.github.io/niri/Screencasting.html
obs-studio
# Other dev tools
git-filter-repo
# Kmonad keybinds
kmonad
wtype
# Desktop stuff
# Desktop environment
niri
ycwd # For keybind to open new terminal in the same cwd as focused one
# Statusbar
waybar
font-awesome # for waybar
# Backdrop
swaybg
# Required for micro to copy to clipboard of desktop environment
wl-clipboard
# Display adjustment TUI
# TODO: I dont quite like this one it has issues
# * Negative numbers cause a niri msg issue
# * Alignment snapping doesn't quite work, you have to use ^v<> keys to get it to snap which is hard to remember
# * Sometimes it just completely outputs the wrong display positions and you have to revert
# ...
# I tried nwg-displays but it would not read back the niri config
# I also kinda wish this output a .kdl file instead of using niri msg because it means you have to call it all the time
# to set resolution...
# Hmm...
nirimon.packages.x86_64-linux.default
# niri_window_buttons
(pkgs.callPackage ./nix/niri-window-buttons.nix { })
# Screenshots (flameshot replacement)
grim
slurp
satty
# This pulls a binary, I'm pretty annoyed with this, but this is how I edit some of my notes
obsidian
#zettlr
#dejavu_fonts
];
home.file.".config/waybar/config.jsonc".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/config.jsonc";
home.file.".config/waybar/style.css".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/style.css";
home.file.".config/waybar/power_menu.xml".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/power_menu.xml";
home.file.".config/flameshot/flameshot.ini".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/flameshot/flameshot.ini";
home.file.".config/niri/config.kdl".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/niri/config.kdl";
home.file.".config/nirimon/profiles".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/nirimon/profiles";
services.activitywatch = {
enable = true;
watchers = {
#aw-watcher-afk = {};
#aw-watcher-window = {};
aw-watcher-window-wayland = {
package = pkgs.aw-watcher-window-wayland;
};
aw-watcher-afk-input = {
package = aw-watcher-afk-input;
};
};
};
}
# TODO:
# Krita, symlink the whole config folder
# home.packages = with pkgs; [ krita ];
# home.file.".local/share/krita".source = config.lib.file.mkOutOfStoreSymlink "/dotfiles/krita";
# TODO: I need to audit these more in depth still, or possibly run these differently
# like with a Dockerized desktop?
# home.packages = with pkgs; [ dbeaver-bin ungoogled-chromium seafile-client signal-desktop sqlitebrowser vlc ];
#Desktop Files
# TODO: I dont think I need this because I am no longer using an app image?
# home.file.".local/share/applications/obsidian.desktop".source = config.lib.file.mkOutOfStoreSymlink "/dotfiles/desktop/obsidian.desktop";
# home.file.".local/share/applications/krita.desktop".source = config.lib.file.mkOutOfStoreSymlink "/dotfiles/desktop/krita.desktop";
# TODO: Not covered: Balena etcher, activitywatch, DiscordChatExporter,
# TODO: Not researched: Blender
# TODO: Come back to this if I really end up caring again...
# Fonts
# fontsPath = f"{userHome}/.local/share/fonts"
# SymLinkOp(env(f"{os.path.realpath(scriptDir)}/fonts/Blobmoji.ttf"), f"{fontsPath}/Blobmoji.ttf")()
# SymLinkOp(env(f"{os.path.realpath(scriptDir)}/fonts/TwitterColorEmoji-SVGinOT.ttf"), f"{fontsPath}/TwitterColorEmoji-SVGinOT.ttf")()
# RemoveFileOp(f"/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf")() # Delete normal NotoColorEmoji font