template: simplify with forAllSystems and inline module
Use the forAllSystems pattern to reduce duplication and inline the NixOS module directly in nixosSystem call. This eliminates the need for separate nixosModules and nixosConfigurations outputs, making the template more concise and easier to understand. Also use virtualisation.munix namespace for the option.
This commit is contained in:
parent
ced0559be8
commit
1d864e0ded
1 changed files with 46 additions and 52 deletions
|
|
@ -13,65 +13,59 @@
|
|||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
munix,
|
||||
...
|
||||
}:
|
||||
{
|
||||
nixosModules.musictest =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
system.stateVersion = "26.05";
|
||||
virtualisation.munix.defaultCommand = "euphonica";
|
||||
let
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
musictest-vm =
|
||||
system:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
munix.nixosModules.default
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
system.stateVersion = "26.05";
|
||||
virtualisation.munix.defaultCommand = "euphonica";
|
||||
|
||||
programs.dconf.enable = true;
|
||||
fonts.packages = with pkgs; [ adwaita-fonts ];
|
||||
environment.systemPackages = with pkgs; [ euphonica ];
|
||||
nixpkgs.hostPlatform = system;
|
||||
|
||||
# Local background service as a demo that doesn't require network creds :)
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
startWhenNeeded = true;
|
||||
musicDirectory = "/etc/demo-music";
|
||||
user = "appvm";
|
||||
group = "appvm";
|
||||
extraConfig = ''
|
||||
audio_output {
|
||||
type "pipewire"
|
||||
name "Pipewire Output"
|
||||
programs.dconf.enable = true;
|
||||
fonts.packages = with pkgs; [ adwaita-fonts ];
|
||||
environment.systemPackages = with pkgs; [ euphonica ];
|
||||
|
||||
# Local background service as a demo that doesn't require network creds :)
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
startWhenNeeded = true;
|
||||
musicDirectory = "/etc/demo-music";
|
||||
user = "appvm";
|
||||
group = "appvm";
|
||||
extraConfig = ''
|
||||
audio_output {
|
||||
type "pipewire"
|
||||
name "Pipewire Output"
|
||||
}
|
||||
'';
|
||||
};
|
||||
environment.etc."demo-music/0101GhostsI.ogg".source = pkgs.fetchurl {
|
||||
# just a CC-BY-SA licensed example
|
||||
url = "https://archive.org/download/NineInchNailsGhostsI-Iv24bit48khz/0101GhostsI.ogg";
|
||||
sha256 = "0iijm1c191aqkxybl4a4gvlpnf72hk4896lwvp0xixkhds88qzxi";
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
environment.etc."demo-music/0101GhostsI.ogg".source = pkgs.fetchurl {
|
||||
# just a CC-BY-SA licensed example
|
||||
url = "https://archive.org/download/NineInchNailsGhostsI-Iv24bit48khz/0101GhostsI.ogg";
|
||||
sha256 = "0iijm1c191aqkxybl4a4gvlpnf72hk4896lwvp0xixkhds88qzxi";
|
||||
};
|
||||
)
|
||||
];
|
||||
};
|
||||
|
||||
nixosConfigurations.musictest-aarch64 = nixpkgs.lib.nixosSystem {
|
||||
system = "aarch64-linux";
|
||||
modules = [
|
||||
munix.nixosModules.default
|
||||
self.nixosModules.musictest
|
||||
];
|
||||
};
|
||||
nixosConfigurations.musictest-x86_64 = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
munix.nixosModules.default
|
||||
self.nixosModules.musictest
|
||||
];
|
||||
};
|
||||
|
||||
apps.aarch64-linux.default = {
|
||||
type = "app";
|
||||
program = "${self.nixosConfigurations.musictest-aarch64.config.system.build.munix}/bin/munix";
|
||||
};
|
||||
apps.x86_64-linux.default = {
|
||||
type = "app";
|
||||
program = "${self.nixosConfigurations.musictest-x86_64.config.system.build.munix}/bin/munix";
|
||||
};
|
||||
in
|
||||
{
|
||||
packages = forAllSystems (system: {
|
||||
default = (musictest-vm system).config.system.build.munix;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue