Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
jz8132543 committed Feb 1, 2023
1 parent 832d67e commit f8159fe
Show file tree
Hide file tree
Showing 11 changed files with 1,807 additions and 134 deletions.
1,223 changes: 1,223 additions & 0 deletions flake.lock

Large diffs are not rendered by default.

170 changes: 85 additions & 85 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
description = "The Hive - The secretly open NixOS-Society";

inputs = {
# std.url = "/home/guangtao/ghq/github.com/divnix/std";
std.url = "github:divnix/std";
std.inputs.nixpkgs.follows = "nixpkgs";
std.inputs.arion.follows = "arion";
Expand Down Expand Up @@ -51,90 +50,91 @@
};

# individual inputs
inputs = {};

outputs = {
self,
std,
nixpkgs,
...
} @ inputs:
std.growOn {
inherit inputs;
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];

cellsFrom = ./nix;

cellBlocks = with std.blockTypes; [
# modules implement
(functions "nixosModules")
(functions "darwinModules")
(functions "homeModules")
(functions "devshellModules")

# profiles activate
(functions "nixosProfiles")
(functions "darwinProfiles")
(functions "homeProfiles")
(functions "devshellProfiles")
(functions "userProfiles")
(functions "secretProfiles")
(functions "arionProfiles")
(functions "microvmProfiles")

# suites aggregate profiles
(functions "nixosSuites")
(functions "darwinSuites")
(functions "homeSuites")

# configurations can be deployed
(data "colmenaConfigurations")
(data "homeConfigurations")
(data "nixosConfigurations")
(data "darwinConfigurations")
(data "diskoConfigurations")
(arion "arionConfigurations")
(microvms "microvms")

# devshells can be entered
(devshells "devshells")

# jobs can be run
(runnables "entrypoints")

# lib holds shared knowledge made code
(functions "lib")
(functions "config")
(installables "packages" {ci.build = true;})
(functions "overlays")

# nixago part
(nixago "nixago")

# containers collection
(containers "containers" {ci.publish = true;})
];
}
{
devShells = inputs.std.harvest inputs.self ["automation" "devshells"];
lib = (inputs.std.harvest inputs.self ["_QUEEN" "lib"]).x86_64-linux;
overlays = (inputs.std.harvest inputs.self ["guangtao" "overlays"]).x86_64-linux;
packages = inputs.std.harvest inputs.self [["guangtao" "packages"]];
}
# soil - the first (and only) layer implements adapters for tooling
{
# tools
colmenaHive = self.lib.colmenaHive "colmenaConfigurations" self;
nixosConfigurations = self.lib.nixosConfigurations "nixosConfigurations" self;
homeConfigurations = self.lib.homeConfigurations "homeConfigurations" self;
darwinConfigurations = self.lib.darwinConfigurations "darwinConfigurations" self;
diskoConfigurations = self.lib.diskoConfigurations "diskoConfigurations" self;
};
inputs = { };

outputs =
{ self
, std
, nixpkgs
, ...
} @ inputs:
std.growOn
{
inherit inputs;
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];

cellsFrom = ./nix;

cellBlocks = with std.blockTypes; [
# modules implement
(functions "nixosModules")
(functions "darwinModules")
(functions "homeModules")
(functions "devshellModules")

# profiles activate
(functions "nixosProfiles")
(functions "darwinProfiles")
(functions "homeProfiles")
(functions "devshellProfiles")
(functions "userProfiles")
(functions "secretProfiles")
(functions "arionProfiles")
(functions "microvmProfiles")

# suites aggregate profiles
(functions "nixosSuites")
(functions "darwinSuites")
(functions "homeSuites")

# configurations can be deployed
(data "colmenaConfigurations")
(data "homeConfigurations")
(data "nixosConfigurations")
(data "darwinConfigurations")
(data "diskoConfigurations")
(arion "arionConfigurations")
(microvms "microvms")

# devshells can be entered
(devshells "devshells")

# jobs can be run
(runnables "entrypoints")

# lib holds shared knowledge made code
(functions "lib")
(functions "config")
(installables "packages" { ci.build = true; })
(functions "overlays")

# nixago part
(nixago "nixago")

# containers collection
(containers "containers" { ci.publish = true; })
];
}
{
devShells = inputs.std.harvest inputs.self [ "automation" "devshells" ];
lib = (inputs.std.harvest inputs.self [ "_QUEEN" "lib" ]).x86_64-linux;
overlays = (inputs.std.harvest inputs.self [ "tippy" "overlays" ]).x86_64-linux;
packages = inputs.std.harvest inputs.self [ [ "tippy" "packages" ] ];
}
# soil - the first (and only) layer implements adapters for tooling
{
# tools
colmenaHive = self.lib.colmenaHive "colmenaConfigurations" self;
nixosConfigurations = self.lib.nixosConfigurations "nixosConfigurations" self;
homeConfigurations = self.lib.homeConfigurations "homeConfigurations" self;
darwinConfigurations = self.lib.darwinConfigurations "darwinConfigurations" self;
diskoConfigurations = self.lib.diskoConfigurations "diskoConfigurations" self;
};
# --- Flake Local Nix Configuration ----------------------------
nixConfig = {
extra-substituters = [
Expand Down
44 changes: 44 additions & 0 deletions nix/_QUEEN/lib.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
inputs,
cell,
}: let
inherit (inputs) hivelib colmena;

nixpkgs = inputs.nixos;
in {
colmenaHive = cellBlock: self: let
makeHoneyFrom = import ./make-honey.nix {
inherit nixpkgs cellBlock colmena;
};
in
makeHoneyFrom self;

nixosConfigurations = cellBlock: self: let
makeMeadFrom = import ./make-mead.nix {
inherit nixpkgs cellBlock;
};
in
makeMeadFrom self;

darwinConfigurations = cellBlock: self: let
makeDarwinFrom = import ./make-cider.nix {
inherit nixpkgs cellBlock;
darwin = inputs.darwin;
};
in
makeDarwinFrom self;

homeConfigurations = cellBlock: self: let
makeMoonshineFrom = import ./make-moonshine.nix {
inherit nixpkgs cellBlock;
};
in
makeMoonshineFrom self;

diskoConfigurations = cellBlock: self: let
makeShantyFrom = import ./make-shanty.nix {
inherit nixpkgs cellBlock;
};
in
makeShantyFrom self;
}
26 changes: 26 additions & 0 deletions nix/_QUEEN/make-cider.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
nixpkgs,
darwin,
cellBlock ? "darwinConfigurations",
}: let
l = nixpkgs.lib // builtins;
inherit (import ./pasteurize.nix {inherit nixpkgs cellBlock;}) cure beeOptions;
in
self: let
comb = cure self;
evalNode = extra: name: config: let
in
darwin.lib.darwinSystem {
modules =
[
extra
config
beeOptions
]
++ l.optionals (config.bee ? home) [
config.bee.home.darwinModules.home-manager
];
inherit (config.bee) system pkgs;
};
in
l.mapAttrs (evalNode {}) comb
53 changes: 53 additions & 0 deletions nix/_QUEEN/make-honey.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{ colmena
, nixpkgs
, cellBlock ? "colmenaConfigurations"
,
}:
let
l = nixpkgs.lib // builtins;
inherit (import ./pasteurize.nix { inherit nixpkgs cellBlock; }) pasteurize stir beeOptions;

colmenaModules = [
colmena.nixosModules.assertionModule
colmena.nixosModules.keyChownModule
colmena.nixosModules.keyServiceModule
colmena.nixosModules.deploymentOptions
beeOptions # still present, but we dont care
];
in
self:
let
comb = pasteurize self;
evalNode = extra: name: config:
let
inherit (stir config) evalConfig system;
in
evalConfig {
inherit system;
modules = colmenaModules ++ [ extra config ];
specialArgs = { inherit name; };
};
in
# Exported attributes
l.fix (this: {
__schema = "v0";

nodes = l.mapAttrs (evalNode { _module.check = true; }) comb;
toplevel = l.mapAttrs (_: v: v.config.system.build.toplevel) this.nodes;
deploymentConfig = l.mapAttrs (_: v: v.config.deployment) this.nodes;
deploymentConfigSelected = names: l.filterAttrs (name: _: l.elem name names) this.deploymentConfig;
evalSelected = names: l.filterAttrs (name: _: l.elem name names) this.toplevel;
evalSelectedDrvPaths = names: l.mapAttrs (_: v: v.drvPath) (this.evalSelected names);
metaConfig = {
name = "jz8132543/hive";
description = "Colmena deployment";
machinesFile = null;
allowApplyAll = false;
};
introspect = f:
f {
lib = nixpkgs.lib // builtins;
pkgs = nixpkgs.legacyPackages.${builtins.currentSystem};
nodes = l.mapAttrs (evalNode { _module.check = false; }) comb;
};
})
22 changes: 22 additions & 0 deletions nix/_QUEEN/make-mead.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
nixpkgs,
cellBlock ? "nixosConfigurations",
}: let
l = nixpkgs.lib // builtins;
inherit (import ./pasteurize.nix {inherit nixpkgs cellBlock;}) pasteurize stir beeOptions;
in
self: let
comb = pasteurize self;
evalNode = extra: name: config: let
inherit (stir config) evalConfig system;
in
evalConfig {
inherit system;
modules = [
extra
beeOptions
config
];
};
in
l.mapAttrs (evalNode {}) comb
26 changes: 26 additions & 0 deletions nix/_QUEEN/make-moonshine.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
nixpkgs,
cellBlock ? "homeConfigurations",
}: let
l = nixpkgs.lib // builtins;
inherit (import ./pasteurize.nix {inherit nixpkgs cellBlock;}) cure shake showAssertions;
in
self: let
comb = cure self;
res = name: config: let
inherit
(shake config {})
evaled
;
asserted = showAssertions evaled;
in {
# __schema = "v0";
inherit (asserted) options config;
inherit (asserted.config.home) activationPackage;
newsDisplay = evaled.config.news.display;
newsEntries = l.sort (a: b: a.time > b.time) (
l.filter (a: a.condition) evaled.config.news.entries
);
};
in
l.mapAttrs res comb
8 changes: 8 additions & 0 deletions nix/_QUEEN/make-shanty.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
nixpkgs,
cellBlock ? "diskoConfigurations",
}: let
l = nixpkgs.lib // builtins;
inherit (import ./pasteurize.nix {inherit nixpkgs cellBlock;}) sing;
in
sing
Loading

0 comments on commit f8159fe

Please sign in to comment.