diff --git a/flake.nix b/flake.nix index 43c56a7..83695e0 100644 --- a/flake.nix +++ b/flake.nix @@ -15,66 +15,63 @@ }; }; - outputs = - { - self, - nixpkgs, - quickshell, - treefmt-nix, - }: - let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; + outputs = { + self, + nixpkgs, + quickshell, + treefmt-nix, + }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; - quickshellWithModules = quickshell.packages.${system}.default.withModules [ - pkgs.qt6.qtbase - pkgs.qt6.qtdeclarative - pkgs.qt6.qtmultimedia - pkgs.qt6.qttranslations - ]; + quickshellWithModules = quickshell.packages.${system}.default.withModules [ + pkgs.qt6.qtbase + pkgs.qt6.qtdeclarative + pkgs.qt6.qtmultimedia + pkgs.qt6.qttranslations + ]; - treefmtEval = treefmt-nix.lib.evalModule pkgs { - projectRootFile = "flake.nix"; + treefmtEval = treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - qmlformat.enable = true; - clang-format.enable = true; - }; - }; - 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 - pkgs.cava - pkgs.wallust - pkgs.dbus - pkgs.cmake - pkgs.ninja - pkgs.qt6.qtbase - pkgs.qt6.qtdeclarative - ]; - - shellHook = '' - if [ -d "$PWD/plugin/dist/lib/qt-6/qml" ]; then - export NIXPKGS_QT6_QML_IMPORT_PATH="$PWD/plugin/dist/lib/qt-6/qml''${NIXPKGS_QT6_QML_IMPORT_PATH:+:$NIXPKGS_QT6_QML_IMPORT_PATH}" - export QML2_IMPORT_PATH="$PWD/plugin/dist/lib/qt-6/qml''${QML2_IMPORT_PATH:+:$QML2_IMPORT_PATH}" - else - echo "gpu plugin is not built; run from the repo root to enable 'import Tshell.Cardwire':" - echo " cmake -S plugin -B plugin/dist -DCMAKE_INSTALL_PREFIX=\$PWD/plugin/dist" - echo " cmake --build plugin/dist --target install" - fi - ''; + programs = { + alejandra.enable = true; + qmlformat.enable = true; + clang-format.enable = true; }; }; + 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 + pkgs.cava + pkgs.wallust + pkgs.dbus + pkgs.cmake + pkgs.ninja + pkgs.qt6.qtbase + pkgs.qt6.qtdeclarative + ]; + + shellHook = '' + if [ -d "$PWD/plugin/dist/lib/qt-6/qml" ]; then + export NIXPKGS_QT6_QML_IMPORT_PATH="$PWD/plugin/dist/lib/qt-6/qml''${NIXPKGS_QT6_QML_IMPORT_PATH:+:$NIXPKGS_QT6_QML_IMPORT_PATH}" + export QML2_IMPORT_PATH="$PWD/plugin/dist/lib/qt-6/qml''${QML2_IMPORT_PATH:+:$QML2_IMPORT_PATH}" + else + echo "gpu plugin is not built; run from the repo root to enable 'import Tshell.Cardwire':" + echo " cmake -S plugin -B plugin/dist -DCMAKE_INSTALL_PREFIX=\$PWD/plugin/dist" + echo " cmake --build plugin/dist --target install" + fi + ''; + }; + }; } diff --git a/package.nix b/package.nix index a2cbbe9..35ebf3a 100644 --- a/package.nix +++ b/package.nix @@ -10,73 +10,71 @@ cava, wallust, nerd-fonts, - extraRuntimeDeps ? [ ], -}: -let + extraRuntimeDeps ? [], +}: let version = "0.1.0"; - runtimeDeps = [ - cava - wallust - ] - ++ extraRuntimeDeps; + runtimeDeps = + [ + cava + wallust + ] + ++ extraRuntimeDeps; fontconfig = makeFontsConf { - fontDirectories = [ nerd-fonts.fira-code ]; + fontDirectories = [nerd-fonts.fira-code]; }; # Unlike lib.fileset, this keeps untracked files (the flake only sees # git-tracked paths) while dropping build artifacts. src = lib.cleanSourceWith { src = lib.cleanSource ./.; - filter = - path: _: - let - name = baseNameOf path; - in + filter = path: _: let + name = baseNameOf path; + in !(name == "dist" || name == "result" || name == "result-bin" || lib.hasPrefix "build" name); }; in -stdenv.mkDerivation { - inherit version src; - pname = "tshell"; + stdenv.mkDerivation { + inherit version src; + pname = "tshell"; - dontWrapQtApps = true; + dontWrapQtApps = true; - preConfigure = '' - cd plugin - ''; + preConfigure = '' + cd plugin + ''; - nativeBuildInputs = [ - cmake - ninja - makeWrapper - ]; - buildInputs = [ - qt6.qtbase - qt6.qtdeclarative - ]; - propagatedBuildInputs = runtimeDeps; + nativeBuildInputs = [ + cmake + ninja + makeWrapper + ]; + buildInputs = [ + qt6.qtbase + qt6.qtdeclarative + ]; + propagatedBuildInputs = runtimeDeps; - postInstall = '' - mkdir -p $out/bin $out/share/tshell + postInstall = '' + mkdir -p $out/bin $out/share/tshell - for entry in shell.qml assets config modules services ui windows; do - cp -r "$src/$entry" $out/share/tshell/ - done + for entry in shell.qml assets config modules services ui windows; do + cp -r "$src/$entry" $out/share/tshell/ + done - makeWrapper ${quickshellWithModules}/bin/qs $out/bin/tshell \ - --prefix PATH : "${lib.makeBinPath runtimeDeps}" \ - --set FONTCONFIG_FILE "${fontconfig}" \ - --suffix NIXPKGS_QT6_QML_IMPORT_PATH : "$out/lib/qt-6/qml" \ - --add-flags "-p $out/share/tshell" - ''; + makeWrapper ${quickshellWithModules}/bin/qs $out/bin/tshell \ + --prefix PATH : "${lib.makeBinPath runtimeDeps}" \ + --set FONTCONFIG_FILE "${fontconfig}" \ + --suffix NIXPKGS_QT6_QML_IMPORT_PATH : "$out/lib/qt-6/qml" \ + --add-flags "-p $out/share/tshell" + ''; - meta = { - description = "tux's widgets for wayland"; - homepage = "https://github.com/tuxdotrs/tshell"; - license = lib.licenses.gpl3Only; - mainProgram = "tshell"; - platforms = lib.platforms.linux; - }; -} + meta = { + description = "tux's widgets for wayland"; + homepage = "https://github.com/tuxdotrs/tshell"; + license = lib.licenses.gpl3Only; + mainProgram = "tshell"; + platforms = lib.platforms.linux; + }; + }