From 4453c280bfb79c4bb4b6f5e146196acf78b74ceb Mon Sep 17 00:00:00 2001 From: tux Date: Mon, 24 Aug 2026 20:38:17 +0530 Subject: [PATCH] build(nix): add package derivation for tshell --- flake.nix | 9 ++++++- package.nix | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 package.nix diff --git a/flake.nix b/flake.nix index 04da53a..53bf147 100644 --- a/flake.nix +++ b/flake.nix @@ -42,9 +42,16 @@ }; }; in - { + rec { formatter.${system} = treefmtEval.config.build.wrapper; + packages.${system} = { + tshell = pkgs.callPackage ./package.nix { + inherit quickshellWithModules; + }; + default = packages.${system}.tshell; + }; + devShells.${system}.default = pkgs.mkShell { packages = [ quickshellWithModules diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..d62b9d0 --- /dev/null +++ b/package.nix @@ -0,0 +1,68 @@ +{ + lib, + stdenv, + makeWrapper, + makeFontsConf, + quickshellWithModules, + cava, + wallust, + nerd-fonts, + extraRuntimeDeps ? [ ], +}: +let + version = "0.1.0"; + + runtimeDeps = [ + cava + wallust + ] + ++ extraRuntimeDeps; + + fontconfig = makeFontsConf { + fontDirectories = [ nerd-fonts.fira-code ]; + }; +in +stdenv.mkDerivation { + inherit version; + pname = "tshell"; + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./shell.qml + ./assets + ./config + ./modules + ./services + ./ui + ./windows + ]; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ quickshellWithModules ]; + propagatedBuildInputs = runtimeDeps; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/tshell + cp -r . $out/share/tshell + + makeWrapper ${quickshellWithModules}/bin/qs $out/bin/tshell \ + --prefix PATH : "${lib.makeBinPath runtimeDeps}" \ + --set FONTCONFIG_FILE "${fontconfig}" \ + --add-flags "-p $out/share/tshell" + + runHook postInstall + ''; + + meta = { + description = "tux's widgets for wayland"; + homepage = "https://github.com/tuxdotrs/tshell"; + license = lib.licenses.gpl3Only; + mainProgram = "tshell"; + platforms = lib.platforms.linux; + }; +}