Files
nixos/devices/tuxedo/home.nix

157 lines
6.1 KiB
Nix

{ pkgs, ... }:
{
imports = [
../../home-manager/base.nix
../../home-manager/development/all.nix
../../home-manager/gaming.nix
../../home-manager/streamlink.nix
];
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
helix.fullInstall = true;
home.username = "worble";
home.homeDirectory = "/home/worble";
home.stateVersion = "24.05";
home.packages = with pkgs;[
# general
gimp-with-plugins
obsidian
# cmd line tools
rclone
inotify-tools
libnotify
ffmpeg-full
# comms
teams-for-linux
teamspeak6-client
# media
jellyfin-media-player
haruna
# misc
electrum
syncthing
dbeaver-bin
ruffle
popsicle
# for headset tune
headsetcontrol
];
home.file = {
# shaders for mpv
".config/mpv/shaders".source = pkgs.fetchzip {
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
stripRoot = false;
};
};
# Let Home Manager install and manage itself.
programs = {
firefox = {
profiles.work = import ../../home-manager/firefox/firefox-profile.nix // {
id = 1;
name = "work";
isDefault = false;
settings = {
# allow fonts
"browser.display.use_document_fonts" = 1;
# home page
"browser.startup.homepage" = "https://outlook.office.com|https://teams.microsoft.com/v2|https://dev.azure.com/binhsps/Connect/_boards/board/t/Development%20Team/Stories";
};
};
};
mpv = {
config = {
profile = "gpu-hq";
vo = "gpu-next";
gpu-api = "auto";
gpu-context = "auto";
hwdec = "auto";
screenshot-directory = "/mnt/HDD2/Pictures/";
glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl";
};
extraInput = ''
# Optimized shaders for higher-end GPU:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
'';
};
mangohud = {
enable = true;
settings = {
preset = 1;
};
};
kodi = {
enable = true;
package = pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ]);
};
};
systemd.user = {
services = {
rclone-media = {
Unit = {
Description = "rclone-media /mnt/HDD2/Videos/";
After = [ "network.target" "mnt-HDD2.mount" ];
# Maybe? https://unix.stackexchange.com/questions/281650/systemd-unit-requiresmountsfor-vs-conditionpathisdirectory
# RequiresMountsFor = "/mnt/HDD2/Videos/";
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
RestartSec = 10;
Restart = "on-failure";
Type = "exec";
ExecStart = "${pkgs.writeShellApplication {
name = "rclone-media";
runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ];
text = ''
function rclonecopy {
file=$1
changed_rel=''${file#"/mnt/HDD2/Videos"}
notify-send -a "rclone-media" "rclone for $file triggered"
if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then
notify-send -a "rclone-media" "rclone complete for $file"
else
notify-send -u critical -a "rclone-media" "rclone failed for $file"
fi
}
inotifywait -mr \
--format '%w%f' \
-e close_write \
/mnt/HDD2/Videos/ |
while read -r file; do
rclonecopy "$file"
done
'';
}}/bin/rclone-media";
};
};
};
};
}