Monorepo for Tangled
tangled.org
1{
2 self,
3 microvm,
4}: runnerModule: {
5 imports = [
6 microvm.nixosModules.microvm
7 ./base.nix
8 runnerModule
9 self.nixosModules.shuttle
10 ({pkgs, ...}: {
11 services.tangled.shuttle.enable = true;
12
13 environment.etc = {
14 "spindle/nixos/base.nix".source = ./base.nix;
15 "spindle/nixos/runner.nix".source = runnerModule;
16 "spindle/nixos/shuttle.nix".text = ''
17 { config, lib, pkgs, ... }:
18 {
19 imports = [${../modules/shuttle.nix}];
20 services.tangled.shuttle.package = lib.mkDefault ${self.packages.${pkgs.stdenv.hostPlatform.system}.shuttle};
21 }
22 '';
23 "spindle/nixos/user-config.nix".source = ./user-config.nix;
24 "spindle/nixos/microvm".source = microvm;
25 # pkgs.path is fine here because we pass the nixpkgs source into the vm in ./base.nix
26 "spindle/nixos/default.nix".text = ''
27 let
28 nixpkgs = ${pkgs.path};
29 nixos = import (nixpkgs + "/nixos") {
30 system = "${pkgs.stdenv.hostPlatform.system}";
31 configuration = {
32 imports = [
33 /etc/spindle/nixos/microvm/nixos-modules/microvm/default.nix
34 /etc/spindle/nixos/base.nix
35 /etc/spindle/nixos/runner.nix
36 /etc/spindle/nixos/shuttle.nix
37 /etc/spindle/nixos/user-config.nix
38 ];
39 services.tangled.shuttle.enable = true;
40 };
41 };
42 in
43 nixos.system
44 '';
45 };
46 })
47 ];
48}