|
4 | 4 | inputs."nixpkgs-gnome".url = github:NixOS/nixpkgs/wip-gnome; |
5 | 5 |
|
6 | 6 | outputs = { self, nixpkgs, nixpkgs-gnome, flake-utils, ... }: |
| 7 | + let |
| 8 | + testSystem = "x86_64-linux"; |
| 9 | + pkgs-gnome = import nixpkgs-gnome { system = testSystem; }; |
| 10 | + gnomeOverlay = (s: super: { |
| 11 | + gnome-desktop = pkgs-gnome.gnome-desktop; |
| 12 | + gnome-shell = pkgs-gnome.gnome-shell.override { |
| 13 | + evolution-data-server-gtk4 = super.evolution-data-server-gtk4.override { |
| 14 | + inherit (super) webkitgtk_4_1 webkitgtk_6_0; |
| 15 | + }; |
| 16 | + }; |
| 17 | + gnome-session = pkgs-gnome.gnome-session.override { |
| 18 | + inherit (s) gnome-shell; |
| 19 | + }; |
| 20 | + gnome-control-center = pkgs-gnome.gnome-control-center; |
| 21 | + gnome-initial-setup = pkgs-gnome.gnome-initial-setup.override { |
| 22 | + inherit (super) webkitgtk_6_0; |
| 23 | + }; |
| 24 | + gnome-settings-daemon = pkgs-gnome.gnome-settings-daemon; |
| 25 | + mutter = pkgs-gnome.mutter; |
| 26 | + gdm = pkgs-gnome.gdm; |
| 27 | + xdg-desktop-portal-gnome = pkgs-gnome.xdg-desktop-portal-gnome; |
| 28 | + xdg-desktop-portal-gtk = pkgs-gnome.xdg-desktop-portal-gtk; |
| 29 | + }); |
| 30 | + |
| 31 | + # NixOS usually takes its sweet time updating to latest GNOME. |
| 32 | + # Enable this to use the GNOME version from their dedicated dev branch. |
| 33 | + #WARN: build times may increase significantly! |
| 34 | + useGnomeStaging = false; |
| 35 | + in |
7 | 36 | flake-utils.lib.eachDefaultSystem |
8 | 37 | (system: |
9 | 38 | let hostPkgs = import nixpkgs { inherit system; }; |
|
21 | 50 | }) |
22 | 51 | ]; |
23 | 52 | }; |
24 | | - in localConfig.config.system.build.vm; |
| 53 | + in localConfig.config.system.build.vm; |
| 54 | + |
| 55 | + checks = import ./tests { |
| 56 | + system = testSystem; |
| 57 | + pkgs = import nixpkgs { system = testSystem; }; |
| 58 | + defaultConfig = { |
| 59 | + imports = [ ./vm.nix ]; |
| 60 | + nixpkgs.overlays = [ |
| 61 | + (s: super: { paperwm = self.packages.${testSystem}.default; }) |
| 62 | + |
| 63 | + (if useGnomeStaging then gnomeOverlay else (s: super: {})) |
| 64 | + ]; |
| 65 | + }; |
| 66 | + }; |
25 | 67 | }) // { |
26 | 68 | nixosConfigurations."testbox" = |
27 | | - let system = "x86_64-linux"; |
28 | | - pkgs-gnome = import nixpkgs-gnome { inherit system; }; |
29 | | - in nixpkgs.lib.nixosSystem { |
30 | | - inherit system; |
| 69 | + nixpkgs.lib.nixosSystem { |
| 70 | + system = testSystem; |
31 | 71 | modules = [ |
32 | 72 | ./vm.nix |
33 | 73 | { nixpkgs.overlays = [ |
34 | 74 | # Introduce PaperWM into our extensions |
35 | | - (s: super: { paperwm = self.packages.${system}.default; }) |
| 75 | + (s: super: { paperwm = self.packages.${testSystem}.default; }) |
36 | 76 |
|
37 | 77 | # Pull GNOME-specific packages from GNOME staging |
38 | | - #(s: super: { |
39 | | - # gnome-desktop = pkgs-gnome.gnome-desktop; |
40 | | - # gnome-shell = pkgs-gnome.gnome-shell.override { |
41 | | - # evolution-data-server-gtk4 = super.evolution-data-server-gtk4.override { |
42 | | - # inherit (super) webkitgtk_4_1 webkitgtk_6_0; |
43 | | - # }; |
44 | | - # }; |
45 | | - # gnome-session = pkgs-gnome.gnome-session.override { |
46 | | - # inherit (s) gnome-shell; |
47 | | - # }; |
48 | | - # gnome-control-center = pkgs-gnome.gnome-control-center; |
49 | | - # gnome-initial-setup = pkgs-gnome.gnome-initial-setup.override { |
50 | | - # inherit (super) webkitgtk_6_0; |
51 | | - # }; |
52 | | - # gnome-settings-daemon = pkgs-gnome.gnome-settings-daemon; |
53 | | - # mutter = pkgs-gnome.mutter; |
54 | | - # gdm = pkgs-gnome.gdm; |
55 | | - # xdg-desktop-portal-gnome = pkgs-gnome.xdg-desktop-portal-gnome; |
56 | | - # xdg-desktop-portal-gtk = pkgs-gnome.xdg-desktop-portal-gtk; |
57 | | - #}) |
| 78 | + (if useGnomeStaging then gnomeOverlay else (s: super: {})) |
58 | 79 | ]; |
59 | 80 | } |
60 | 81 | ]; |
|
0 commit comments