|
1 | 1 | { description = "Tiled, scrollable window management for GNOME Shell"; |
2 | 2 |
|
3 | 3 | inputs."nixpkgs".url = github:NixOS/nixpkgs; |
| 4 | + inputs."nixpkgs-gnome".url = github:NixOS/nixpkgs/gnome; |
4 | 5 |
|
5 | | - outputs = { self, nixpkgs, flake-utils, ... }: |
| 6 | + outputs = { self, nixpkgs, nixpkgs-gnome, flake-utils, ... }: |
6 | 7 | flake-utils.lib.eachDefaultSystem |
7 | 8 | (system: |
8 | | - let pkgs = import nixpkgs { inherit system; }; |
| 9 | + let hostPkgs = import nixpkgs { inherit system; }; |
9 | 10 | in |
10 | | - { packages.default = pkgs.callPackage ./default.nix {}; |
11 | | - packages.vm = let hostConfig = self.nixosConfigurations.testbox.config; |
12 | | - localConfig = hostConfig // { |
13 | | - virtualisation = hostConfig.virtualisation // { |
14 | | - host.pkgs = pkgs; # Use host system's Qemu |
15 | | - }; |
| 11 | + { packages.default = hostPkgs.callPackage ./default.nix {}; |
| 12 | + |
| 13 | + # This allows us to build Qemu for the host system thus avoiding |
| 14 | + # double emulation. |
| 15 | + packages.vm = let hostConfig = self.nixosConfigurations.testbox; |
| 16 | + localConfig = hostConfig.extendModules { |
| 17 | + modules = [ |
| 18 | + ({ modulesPath, ... }: { |
| 19 | + imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; |
| 20 | + virtualisation.host.pkgs = hostPkgs; |
| 21 | + }) |
| 22 | + ]; |
16 | 23 | }; |
17 | | - in localConfig.system.build.vm; |
| 24 | + in localConfig.config.system.build.vm; |
18 | 25 | }) // { |
19 | 26 | nixosConfigurations."testbox" = |
20 | 27 | let system = "x86_64-linux"; |
| 28 | + pkgs-gnome = import nixpkgs-gnome { inherit system; }; |
21 | 29 | in nixpkgs.lib.nixosSystem { |
22 | 30 | inherit system; |
23 | 31 | modules = [ |
24 | 32 | ./vm.nix |
25 | 33 | { nixpkgs.overlays = [ |
| 34 | + # Introduce PaperWM into our extensions |
26 | 35 | (s: super: { paperwm = self.packages.${system}.default; }) |
| 36 | + |
| 37 | + # 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 | + }) |
27 | 58 | ]; |
28 | 59 | } |
29 | 60 | ]; |
|
0 commit comments