2021-06-29 01:02:43 -07:00
|
|
|
{
|
|
|
|
description = "A simple, stateless NixOS deployment tool modeled after NixOps.";
|
|
|
|
|
|
|
|
inputs = {
|
2022-01-27 18:48:25 -08:00
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
2024-12-24 00:15:03 +01:00
|
|
|
stable.url = "github:NixOS/nixpkgs/nixos-24.11";
|
2022-01-27 18:48:25 -08:00
|
|
|
|
2024-11-07 15:24:37 -07:00
|
|
|
nix-github-actions = {
|
|
|
|
url = "github:nix-community/nix-github-actions";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
2022-10-08 23:31:21 -03:00
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
2021-06-29 01:02:43 -07:00
|
|
|
|
|
|
|
flake-compat = {
|
|
|
|
url = "github:edolstra/flake-compat";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-11-07 15:24:37 -07:00
|
|
|
outputs = {
|
|
|
|
self,
|
|
|
|
nixpkgs,
|
|
|
|
stable,
|
|
|
|
flake-utils,
|
|
|
|
nix-github-actions,
|
|
|
|
...
|
|
|
|
} @ inputs: let
|
2022-01-01 16:41:35 -08:00
|
|
|
supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
2022-04-03 19:07:14 -05:00
|
|
|
colmenaOptions = import ./src/nix/hive/options.nix;
|
|
|
|
colmenaModules = import ./src/nix/hive/modules.nix;
|
2022-10-08 23:31:21 -03:00
|
|
|
in flake-utils.lib.eachSystem supportedSystems (system: let
|
2024-11-07 15:24:37 -07:00
|
|
|
pkgs = import nixpkgs {
|
|
|
|
inherit system;
|
|
|
|
overlays = [
|
|
|
|
];
|
|
|
|
};
|
2021-06-29 01:02:43 -07:00
|
|
|
in rec {
|
|
|
|
# We still maintain the expression in a Nixpkgs-acceptable form
|
2021-09-19 22:03:39 -07:00
|
|
|
defaultPackage = self.packages.${system}.colmena;
|
2021-11-17 22:21:00 -08:00
|
|
|
packages = rec {
|
2022-01-21 00:45:12 -08:00
|
|
|
colmena = pkgs.callPackage ./package.nix { };
|
2021-11-17 22:21:00 -08:00
|
|
|
|
2021-11-18 13:15:20 -08:00
|
|
|
# Full user manual
|
2021-11-17 22:21:00 -08:00
|
|
|
manual = let
|
2022-07-09 15:41:15 -05:00
|
|
|
suppressModuleArgsDocs = { lib, ... }: {
|
|
|
|
options = {
|
|
|
|
_module.args = lib.mkOption {
|
|
|
|
internal = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2021-11-17 22:21:00 -08:00
|
|
|
colmena = self.packages.${system}.colmena;
|
|
|
|
deploymentOptionsMd = (pkgs.nixosOptionsDoc {
|
2022-07-09 15:41:15 -05:00
|
|
|
inherit (pkgs.lib.evalModules {
|
|
|
|
modules = [ colmenaOptions.deploymentOptions suppressModuleArgsDocs];
|
|
|
|
specialArgs = { name = "nixos"; nodes = {}; };
|
|
|
|
}) options;
|
2022-01-01 16:41:35 -08:00
|
|
|
}).optionsCommonMark;
|
2021-11-17 22:21:00 -08:00
|
|
|
metaOptionsMd = (pkgs.nixosOptionsDoc {
|
2022-07-09 15:41:15 -05:00
|
|
|
inherit (pkgs.lib.evalModules {
|
|
|
|
modules = [ colmenaOptions.metaOptions suppressModuleArgsDocs];
|
|
|
|
}) options;
|
2022-01-01 16:41:35 -08:00
|
|
|
}).optionsCommonMark;
|
2021-11-17 22:21:00 -08:00
|
|
|
in pkgs.callPackage ./manual {
|
|
|
|
inherit colmena deploymentOptionsMd metaOptionsMd;
|
|
|
|
};
|
|
|
|
|
2021-11-18 13:15:20 -08:00
|
|
|
# User manual without the CLI reference
|
2021-11-17 22:21:00 -08:00
|
|
|
manualFast = manual.override { colmena = null; };
|
2021-11-18 13:15:20 -08:00
|
|
|
|
|
|
|
# User manual with the version treated as stable
|
|
|
|
manualForceStable = manual.override { unstable = false; };
|
2021-11-17 22:21:00 -08:00
|
|
|
};
|
2021-06-29 01:02:43 -07:00
|
|
|
|
|
|
|
defaultApp = self.apps.${system}.colmena;
|
2022-06-02 16:39:45 -07:00
|
|
|
apps.default = self.apps.${system}.colmena;
|
2021-06-29 01:02:43 -07:00
|
|
|
apps.colmena = {
|
|
|
|
type = "app";
|
|
|
|
program = "${defaultPackage}/bin/colmena";
|
|
|
|
};
|
|
|
|
|
|
|
|
devShell = pkgs.mkShell {
|
2022-05-25 18:19:03 -06:00
|
|
|
RUST_SRC_PATH = "${pkgs.rustPlatform.rustcSrc}/library";
|
|
|
|
NIX_PATH = "nixpkgs=${pkgs.path}";
|
|
|
|
|
2022-03-07 22:02:04 -08:00
|
|
|
inputsFrom = [ defaultPackage packages.manualFast ];
|
|
|
|
packages = with pkgs; [
|
2022-06-02 16:39:45 -07:00
|
|
|
bashInteractive
|
2022-06-24 17:34:37 -07:00
|
|
|
editorconfig-checker
|
2022-08-16 20:15:43 -06:00
|
|
|
clippy rust-analyzer cargo-outdated cargo-audit rustfmt
|
2022-06-24 17:34:37 -07:00
|
|
|
python3 python3Packages.flake8
|
2022-03-07 22:02:04 -08:00
|
|
|
];
|
2021-06-29 01:02:43 -07:00
|
|
|
};
|
2023-01-27 23:44:41 -07:00
|
|
|
checks = let
|
|
|
|
inputsOverlay = final: prev: {
|
|
|
|
_inputs = inputs;
|
|
|
|
};
|
|
|
|
in if pkgs.stdenv.isLinux then import ./integration-tests {
|
|
|
|
pkgs = import nixpkgs {
|
|
|
|
inherit system;
|
2024-10-05 19:46:56 -06:00
|
|
|
overlays = [
|
|
|
|
self.overlays.default
|
|
|
|
inputsOverlay
|
|
|
|
];
|
2023-01-27 23:44:41 -07:00
|
|
|
};
|
|
|
|
pkgsStable = import stable {
|
|
|
|
inherit system;
|
2024-10-05 19:46:56 -06:00
|
|
|
overlays = [
|
|
|
|
self.overlays.default
|
|
|
|
inputsOverlay
|
|
|
|
];
|
2023-01-27 23:44:41 -07:00
|
|
|
};
|
|
|
|
} else {};
|
2021-09-19 22:03:39 -07:00
|
|
|
}) // {
|
2023-01-27 23:44:41 -07:00
|
|
|
overlay = self.overlays.default;
|
|
|
|
overlays.default = final: prev: {
|
2022-01-21 00:45:12 -08:00
|
|
|
colmena = final.callPackage ./package.nix { };
|
2021-09-19 22:03:39 -07:00
|
|
|
};
|
2022-05-26 17:23:39 -05:00
|
|
|
nixosModules = {
|
2022-09-18 17:27:46 -06:00
|
|
|
inherit (colmenaOptions) deploymentOptions metaOptions;
|
2022-10-22 21:34:48 -05:00
|
|
|
inherit (colmenaModules) keyChownModule keyServiceModule assertionModule;
|
2022-05-26 17:23:39 -05:00
|
|
|
};
|
2022-09-18 17:27:46 -06:00
|
|
|
|
|
|
|
lib.makeHive = rawHive: import ./src/nix/hive/eval.nix {
|
|
|
|
inherit rawHive colmenaOptions colmenaModules;
|
|
|
|
hermetic = true;
|
|
|
|
};
|
2024-11-07 15:24:37 -07:00
|
|
|
|
|
|
|
githubActions = nix-github-actions.lib.mkGithubMatrix {
|
|
|
|
checks = {
|
|
|
|
inherit (self.checks) x86_64-linux;
|
|
|
|
};
|
|
|
|
};
|
2021-09-19 22:03:39 -07:00
|
|
|
};
|
2021-06-29 01:02:43 -07:00
|
|
|
}
|