diff --git a/configuration/base/kde.nix b/configuration/base/kde.nix index 23e3fea..b24df5d 100644 --- a/configuration/base/kde.nix +++ b/configuration/base/kde.nix @@ -31,11 +31,15 @@ in # For cursor in steam? xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ]; + programs.partition-manager.enable = true; + environment.systemPackages = with pkgs; - [ maliit-keyboard ] ++ (with kdePackages; [ + [ + maliit-keyboard + exfatprogs + ] ++ (with kdePackages; [ sddm-kcm plasma-disks - partitionmanager filelight ffmpegthumbs kcalc diff --git a/configuration/base/nix-settings.nix b/configuration/base/nix-settings.nix index 06109e6..5e9a8e2 100644 --- a/configuration/base/nix-settings.nix +++ b/configuration/base/nix-settings.nix @@ -7,10 +7,10 @@ nix.gc.automatic = true; nix.gc.options = "--delete-older-than 7d"; - # programs.nix-ld = { - # enable = true; - # # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; - # libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; - # }; + programs.nix-ld = { + enable = true; + # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; + # libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; + }; } diff --git a/configuration/modules/virtualisation.nix b/configuration/modules/virtualisation.nix index 1439198..9f29dce 100644 --- a/configuration/modules/virtualisation.nix +++ b/configuration/modules/virtualisation.nix @@ -8,18 +8,26 @@ }; libvirtd = { enable = true; - qemu.vhostUserPackages = [ pkgs.virtiofsd ]; + qemu = { + vhostUserPackages = [ pkgs.virtiofsd ]; + ovmf.enable = true; + }; + }; + podman = { + enable = true; + dockerSocket.enable = true; + dockerCompat = true; }; # remember to add the necessary users to the docker group - docker = { - enable = true; - storageDriver = "btrfs"; - }; + # docker = { + # enable = true; + # storageDriver = "btrfs"; + # }; # waydroid = { # enable = true; # }; }; programs.virt-manager.enable = true; - # environment.systemPackages = with pkgs;[ podman-compose ]; + environment.systemPackages = with pkgs;[ podman-compose ]; } diff --git a/devices/starlite/configuration.nix b/devices/starlite/configuration.nix index 7742eda..1c1dc7e 100644 --- a/devices/starlite/configuration.nix +++ b/devices/starlite/configuration.nix @@ -30,7 +30,7 @@ home-manager = { extraSpecialArgs = { inherit inputs; }; sharedModules = [ - inputs.nix-index-database.hmModules.nix-index + inputs.nix-index-database.homeModules.nix-index ]; users = { "worble" = import ./home.nix; diff --git a/devices/tuxedo/configuration.nix b/devices/tuxedo/configuration.nix index 99f27d9..ec6c412 100644 --- a/devices/tuxedo/configuration.nix +++ b/devices/tuxedo/configuration.nix @@ -39,10 +39,21 @@ services.hardware.openrgb.enable = true; - fileSystems."/mnt/HDD1" = { - #device = "/dev/disk/by-uuid/35763dc3-c736-4714-ade7-40bf49ad50dd"; + # fileSystems."/mnt/HDD1" = { + # fsType = "ext4"; + # label = "HDD1"; + # options = [ + # # If you don't have this options attribute, it'll default to "defaults" + # # boot options for fstab. Search up fstab mount options you can use + # "users" # Allows any user to mount and unmount + # "nofail" # Prevent system from failing if this drive doesn't mount + # "exec" # Permit execution of binaries and other executable files + # ]; + # }; + + fileSystems."/mnt/HDD2" = { fsType = "ext4"; - label = "HDD1"; + label = "HDD2"; options = [ # If you don't have this options attribute, it'll default to "defaults" # boot options for fstab. Search up fstab mount options you can use @@ -76,7 +87,7 @@ useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; }; sharedModules = [ - inputs.nix-index-database.hmModules.nix-index + inputs.nix-index-database.homeModules.nix-index ]; users = { "worble" = import ./home.nix; diff --git a/devices/tuxedo/home.nix b/devices/tuxedo/home.nix index 77af4dc..161117d 100644 --- a/devices/tuxedo/home.nix +++ b/devices/tuxedo/home.nix @@ -5,6 +5,7 @@ ../../home-manager/base.nix ../../home-manager/development/all.nix ../../home-manager/gaming.nix + ../../home-manager/streamlink.nix ]; terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; @@ -45,6 +46,8 @@ dbeaver-bin ruffle popsicle + # for headset tune + headsetcontrol ]; home.file = { @@ -73,16 +76,14 @@ }; mpv = { - enable = true; config = { profile = "gpu-hq"; vo = "gpu-next"; gpu-api = "opengl"; gpu-context = "wayland"; hwdec = "vulkan"; - screenshot-directory = "/mnt/HDD1/Pictures/"; + screenshot-directory = "/mnt/HDD2/Pictures/"; # screenshot-directory = "~/Pictures/"; - screenshot-template = "%F/%F_snapshot_%P"; 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 = '' @@ -114,10 +115,10 @@ services = { rclone-media = { Unit = { - Description = "rclone-media /mnt/HDD1/Videos/"; - After = [ "network.target" "mnt-HDD1.mount" ]; + 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/HDD1/Videos/"; + # RequiresMountsFor = "/mnt/HDD2/Videos/"; }; Install = { @@ -134,7 +135,7 @@ runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ]; text = '' function rclonecopy { file=$1 - changed_rel=''${file#"/mnt/HDD1/Videos"} + 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" @@ -146,7 +147,7 @@ text = '' inotifywait -mr \ --format '%w%f' \ -e close_write \ - /mnt/HDD1/Videos/ | + /mnt/HDD2/Videos/ | while read -r file; do rclonecopy "$file" done diff --git a/flake.nix b/flake.nix index cfd95ad..f72bfb4 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,7 @@ inherit pkgs; extraSpecialArgs = { inherit inputs; }; modules = [ - nix-index-database.hmModules.nix-index + nix-index-database.homeModules.nix-index ./devices/deck/home.nix ]; }; diff --git a/home-manager/base.nix b/home-manager/base.nix index 8605803..d75fd3b 100644 --- a/home-manager/base.nix +++ b/home-manager/base.nix @@ -41,7 +41,7 @@ package = pkgs.brave; }; - mpv = lib.mkDefault { + mpv = { enable = true; package = ( pkgs.mpv-unwrapped.wrapper { @@ -56,8 +56,14 @@ } ); config = { - screenshot-directory = "~/Pictures/"; - screenshot-template = "%F/%F_snapshot_%P"; + screenshot-directory = lib.mkDefault "~/Pictures/"; + screenshot-template = lib.mkDefault "%F/%F_snapshot_%P"; + sub-ass-use-video-data = lib.mkDefault "aspect-ratio"; + }; + scriptOpts = { + uosc = { + time_precision = 2; + }; }; }; }; diff --git a/home-manager/base/terminal.nix b/home-manager/base/terminal.nix index 8d62e79..5338929 100644 --- a/home-manager/base/terminal.nix +++ b/home-manager/base/terminal.nix @@ -106,6 +106,7 @@ with lib; settings = { theme = "dracula"; show_startup_tips = false; + default_mode = "locked"; }; }; diff --git a/home-manager/development/dotnet.nix b/home-manager/development/dotnet.nix index 195453c..03ea64b 100644 --- a/home-manager/development/dotnet.nix +++ b/home-manager/development/dotnet.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, inputs, ... }: { home.packages = with pkgs;[ diff --git a/home-manager/firefox/firefox-profile.nix b/home-manager/firefox/firefox-profile.nix index 0c9b1ea..1b91e66 100644 --- a/home-manager/firefox/firefox-profile.nix +++ b/home-manager/firefox/firefox-profile.nix @@ -55,6 +55,8 @@ "media.hardwaremediakeys.enabled" = false; # restore tabs on startup "browser.startup.page" = 3; + # do not trim http + "browser.urlbar.trimURLs" = false; /* Arkenfox Begin */ diff --git a/home-manager/streamlink.nix b/home-manager/streamlink.nix new file mode 100644 index 0000000..99427de --- /dev/null +++ b/home-manager/streamlink.nix @@ -0,0 +1,42 @@ +{ pkgs, lib, ... }: + +let + proxies = [ + "https://eu.luminous.dev" # (Europe) + "https://eu2.luminous.dev" # (Europe 2) + "https://as.luminous.dev" # (Asia) + "https://lb-eu.cdn-perfprod.com" # (Europe) + "https://lb-eu2.cdn-perfprod.com" # (Europe 2) + "https://lb-eu4.cdn-perfprod.com" # (Europe 4) + "https://lb-eu5.cdn-perfprod.com" # (Europe 5) + "https://lb-eu3.cdn-perfprod.com" # (Europe 3, using Russia-only proxies) + "https://lb-na.cdn-perfprod.com" # (NA) + "https://lb-as.cdn-perfprod.com" # (Asia) + "https://lb-sa.cdn-perfprod.com" # (SA) + ]; +in +{ + programs.streamlink = { + enable = true; + settings = { + player = "${pkgs.mpv}/bin/mpv"; + player-args = "--cache 2048"; + player-no-close = true; + twitch-low-latency = true; + twitch-disable-ads = true; + default-stream = "best"; + }; + plugins = { + # It is important this is called "twitch" and overwrites the default plugin + twitch = { + settings = { + twitch-proxy-playlist = lib.concatStringsSep "," proxies; + }; + src = builtins.readFile (pkgs.fetchurl { + url = "https://github.com/2bc4/streamlink-ttvlol/releases/download/7.0.0-20241105/twitch.py"; + hash = "sha256-WbxLNkxG64BlnfI/RwY5N0bqEkO/D6u14nYMyTuveN8="; + }); + }; + }; + }; +}