From 849cae10fa8cf0e017a115f2de31414173fc1857 Mon Sep 17 00:00:00 2001 From: alsaiduq-lab Date: Thu, 15 Jan 2026 13:16:05 -0700 Subject: [PATCH] added --- README.md | 6 +++ flake.nix | 25 ++++++---- home-manager/modules/quickshell.nix | 49 ++++++++++++++++++++ hosts/modules/user.nix | 5 ++ pkgs/README.md | 3 ++ pkgs/default.nix | 3 ++ pkgs/dms-plugins/default.nix | 3 ++ pkgs/dms-plugins/lyrics-on-panel/default.nix | 49 ++++++++++++++++++++ 8 files changed, 135 insertions(+), 8 deletions(-) create mode 100644 pkgs/README.md create mode 100644 pkgs/dms-plugins/default.nix create mode 100644 pkgs/dms-plugins/lyrics-on-panel/default.nix diff --git a/README.md b/README.md index 7611493..174f995 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ My config for Hyprland desktop that I normally use as my daily driver (read: all ## Useful commands +if you're curious what's currently available you can run: + +```bash +nix flake show github:alsaiduq-lab/nix-dotfiles +``` + list generations ```bash diff --git a/flake.nix b/flake.nix index 99f2d0d..8897092 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,10 @@ url = "github:fufexan/nix-gaming"; }; + nix-monitor = { + url = "github:antonjah/nix-monitor"; + }; + proton-cachyos = { url = "github:Arsalan2356/proton-cachyos-flake"; }; @@ -39,6 +43,7 @@ dankMaterialShell = { url = "github:AvengeMedia/DankMaterialShell"; inputs.nixpkgs.follows = "nixpkgs"; + inputs.quickshell.follows = "quickshell"; }; nvim-dots = { @@ -68,7 +73,11 @@ }; nixcord = { - url = "github:FlameFlag/nixcord"; + url = "github:kaylorben/nixcord"; + }; + + dw-proton = { + url = "github:Momoyaan/dwproton-flake"; }; disko = { @@ -105,6 +114,7 @@ disko, nix-index-database, aagl, + dw-proton, #sops-nix, ... } @ inputs: let @@ -126,6 +136,7 @@ rpcs3 clear-sans binary-font + dms-plugins ; }; nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { @@ -145,18 +156,19 @@ hostPlatform = system; overlays = [ (final: prev: { - quickshell = inputs.quickshell.packages.${system}.default; + quickshell = inputs.quickshell.packages.${system}.default.withModules [final.qt6Packages.qtwebsockets]; ghostty = inputs.ghostty.packages.${system}.default; hu-tao-animated-cursor = inputs.hu-tao-cursor.packages.${system}.default; grim-hyprland = inputs.grim-hyprland.packages.${system}.default; dms-shell = inputs.dankMaterialShell.packages.${system}.default; pinix = inputs.pinix.packages.${system}.default; - wine-cachyos = inputs.nix-gaming.packages.${system}.wine-cachyos; + wine-tkg = inputs.nix-gaming.packages.${system}.wine-tkg; proton-cachyos = inputs.proton-cachyos.packages.${system}.proton-cachyos; desktop-gremlin = inputs.linux-desktop-gremlin.packages.${system}.default; ipc-bridge = inputs.nix-gaming.packages.${system}.wine-discord-ipc-bridge; dgop = unstablePkgs.dgop; hyprland = inputs.hyprland.packages.${system}.default; + dw-proton = inputs.dw-proton.packages.${system}.default; }) (final: prev: { inherit @@ -166,13 +178,9 @@ minijinja-cli thorium rpcs3 + dms-plugins ; }) - - (final: prev: { - clear-sans = prev.clear-sans.clear-sans; - binary-font = prev.binary-font.binary-clock-font; - }) ]; }; } @@ -190,6 +198,7 @@ }; sharedModules = [ inputs.nixcord.homeModules.nixcord + inputs.nix-monitor.homeManagerModules.default ]; users.cobray = import ./home-manager/cobray.nix; }; diff --git a/home-manager/modules/quickshell.nix b/home-manager/modules/quickshell.nix index 812573a..96d8ec7 100644 --- a/home-manager/modules/quickshell.nix +++ b/home-manager/modules/quickshell.nix @@ -16,6 +16,38 @@ enableAudioWavelength = true; enableCalendarEvents = true; enableClipboardPaste = true; + + plugins = { + lyricsOnPanel = { + src = "${pkgs.dms-plugins.lyrics-on-panel}/plugin"; + }; + }; + + quickshell.package = pkgs.quickshell; + }; + + programs.nix-monitor = { + enable = true; + rebuildCommand = [ + "bash" + "-c" + "cd ~/nix && nix flake update && sudo pixos-rebuild switch --flake ~/nix 2>&1" + ]; + gcCommand = [ + "bash" + "-c" + "sudo pix-collect-garbage -d 2>&1" + ]; + generationsCommand = ["bash" "-c" "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | wc -l"]; + updateInterval = 1800; + localRevisionCommand = ["bash" "-c" "echo 0"]; + remoteRevisionCommand = [ + "${pkgs.bash}/bin/bash" + "-l" + "-c" + "${pkgs.curl}/bin/curl -s https://api.github.com/repos/NixOS/nixpkgs/git/ref/heads/nixos-25.11 2>/dev/null | ${pkgs.jq}/bin/jq -r '.object.sha' 2>/dev/null | cut -c 1-7 || echo 'N/A'" + ]; + nixpkgsChannel = "nixos-25.11"; }; home.packages = with pkgs; [ @@ -25,5 +57,22 @@ cliphist kdePackages.dolphin ]; + home.sessionPath = ["${pkgs.quickshell}/bin"]; + + systemd.user.services.lyrics-on-panel = { + Unit = { + Description = "Lyrics-on-Panel MPRIS2 Backend"; + After = ["graphical-session.target"]; + }; + Service = { + Type = "simple"; + ExecStart = "${pkgs.dms-plugins.lyrics-on-panel}/bin/lyrics-on-panel-backend"; + Restart = "on-failure"; + RestartSec = 5; + }; + Install = { + WantedBy = ["graphical-session.target"]; + }; + }; } diff --git a/hosts/modules/user.nix b/hosts/modules/user.nix index b2bd5f4..4e763e3 100644 --- a/hosts/modules/user.nix +++ b/hosts/modules/user.nix @@ -14,6 +14,11 @@ security.sudo = { enable = true; wheelNeedsPassword = true; + extraConfig = '' + ${config.theme.user} ALL=(ALL) NOPASSWD: /run/current-system/sw/bin/pixos-rebuild + ${config.theme.user} ALL=(ALL) NOPASSWD: /run/current-system/sw/bin/pix-collect-garbage + ${config.theme.user} ALL=(ALL) NOPASSWD: /run/current-system/sw/bin/nix-env + ''; }; programs."${config.theme.Shell}".enable = true; diff --git a/pkgs/README.md b/pkgs/README.md new file mode 100644 index 0000000..dc8e4fe --- /dev/null +++ b/pkgs/README.md @@ -0,0 +1,3 @@ +## random assorted stuff + +aka stuff that needs to be built for nix (or different flags) diff --git a/pkgs/default.nix b/pkgs/default.nix index b0399b1..d50b7f5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,4 +7,7 @@ minijinja-cli = pkgs.callPackage ./minijinja-cli {}; thorium = pkgs.callPackage ./thorium {}; rpcs3 = pkgs.callPackage ./rpcs3 {}; + dms-plugins = { + lyrics-on-panel = pkgs.callPackage ./dms-plugins/lyrics-on-panel {}; + }; } diff --git a/pkgs/dms-plugins/default.nix b/pkgs/dms-plugins/default.nix new file mode 100644 index 0000000..1472808 --- /dev/null +++ b/pkgs/dms-plugins/default.nix @@ -0,0 +1,3 @@ +{pkgs}: { + lyrics-on-panel = pkgs.callPackage ./lyrics-on-panel {}; +} diff --git a/pkgs/dms-plugins/lyrics-on-panel/default.nix b/pkgs/dms-plugins/lyrics-on-panel/default.nix new file mode 100644 index 0000000..a0f13a0 --- /dev/null +++ b/pkgs/dms-plugins/lyrics-on-panel/default.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + python313, + makeWrapper, +}: let + python = python313.withPackages (ps: [ + ps.websockets + ps.dbus-python + ]); + + src = fetchFromGitHub { + owner = "KangweiZhu"; + repo = "lyrics-on-panel"; + rev = "main"; + hash = "sha256-8H0BUmr7OP5Zq47yj2Uk1hKQxezO4ccs7lfApDXHoE0="; + }; +in + stdenvNoCC.mkDerivation { + pname = "dms-lyrics-on-panel"; + version = "unstable"; + + inherit src; + + nativeBuildInputs = [makeWrapper]; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/plugin $out/bin + cp -r dms/* $out/plugin/ + cp -r backend/src $out/backend + + makeWrapper ${python}/bin/python $out/bin/lyrics-on-panel-backend \ + --add-flags "$out/backend/server.py" + + runHook postInstall + ''; + + meta = { + description = "Lyrics on Panel - DMS plugin and backend"; + homepage = "https://github.com/KangweiZhu/lyrics-on-panel"; + license = lib.licenses.gpl3; + maintainer = ["Cobray"]; + }; + }