diff --git a/flake.lock b/flake.lock index 33f05404..b8e2dc45 100644 --- a/flake.lock +++ b/flake.lock @@ -1,29 +1,12 @@ { "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", - "type": "github" - }, - "original": { - "id": "flake-utils", - "type": "indirect" - } - }, "nixpkgs": { "locked": { - "lastModified": 1682109806, - "narHash": "sha256-d9g7RKNShMLboTWwukM+RObDWWpHKaqTYXB48clBWXI=", + "lastModified": 1762482733, + "narHash": "sha256-g/da4FzvckvbiZT075Sb1/YDNDr+tGQgh4N8i5ceYMg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2362848adf8def2866fabbffc50462e929d7fffb", + "rev": "e1ebeec86b771e9d387dd02d82ffdc77ac753abc", "type": "github" }, "original": { @@ -33,8 +16,8 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "systems": "systems" } }, "systems": { @@ -47,9 +30,8 @@ "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" + "id": "systems", + "type": "indirect" } } }, diff --git a/flake.nix b/flake.nix index 21ab1c52..aaed77d0 100644 --- a/flake.nix +++ b/flake.nix @@ -3,67 +3,56 @@ outputs = { self, - flake-utils, + systems, nixpkgs, - }: - with builtins; - with flake-utils.lib; - with nixpkgs.lib; let - packages = pkgs: - with pkgs; - with qt6Packages; rec { - shvapp = stdenv.mkDerivation { - name = "shvapp"; - src = builtins.path { - name = "shvapp-src"; - path = ./.; - filter = path: type: ! hasSuffix ".nix" path; - }; - outputs = ["out" "dev"]; - buildInputs = [ - wrapQtAppsHook - qtbase - qtmqtt - qtquick3d - qtserialport - qtsvg - qtwebsockets - libxkbcommon - doctest - lua5_3 - ]; - nativeBuildInputs = [ - cmake - ]; - }; - default = shvapp; - }; - in - { - nixosModules = import ./nixos/modules self.overlays.default; - overlays = { - shvapp = final: prev: packages (id prev); - default = self.overlays.shvapp; - }; - } - // eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}.extend self.overlays.default; - in { - packages = filterPackages system rec { - inherit (pkgs) shvapp; - default = shvapp; - }; - legacyPackages = pkgs; + }: let + inherit (nixpkgs.lib) genAttrs; + forSystems = genAttrs (import systems); + withPkgs = func: forSystems (system: func self.legacyPackages.${system}); + rev = self.shortRev or self.dirtyShortRev or "unknown"; - # NixOS tests work only on Linux and we target Linux only anyway. - checks = - optionalAttrs (hasSuffix "-linux" system) - (import ./nixos/tests - nixpkgs.lib - self.legacyPackages.${system} - self.nixosModules) - // {inherit (self.packages.${system}) default;}; + package = { + stdenv, + qt6Packages, + libxkbcommon, + doctest, + lua5_3, + cmake, + }: + stdenv.mkDerivation { + name = "shvapp-${rev}"; + src = ./.; + outputs = ["out" "dev"]; + buildInputs = [ + qt6Packages.wrapQtAppsHook + qt6Packages.qtbase + qt6Packages.qtmqtt + qt6Packages.qtnetworkauth + qt6Packages.qtquick3d + qt6Packages.qtserialport + qt6Packages.qtsvg + qt6Packages.qtwebsockets + libxkbcommon + doctest + lua5_3 + ]; + nativeBuildInputs = [ + cmake + qt6Packages.qttools + ]; + }; + in { + nixosModules = import ./nixos/modules self.overlays.default; + overlays.default = final: _: { + shvapp = final.callPackage package {}; + }; - formatter = pkgs.alejandra; - }); + packages = withPkgs (pkgs: {default = pkgs.shvapp;}); + + legacyPackages = + forSystems (system: + nixpkgs.legacyPackages.${system}.extend self.overlays.default); + + formatter = withPkgs (pkgs: pkgs.alejandra); + }; }