Files
clan-core/flake.nix
Johannes Kirschbauer 5e7d4e122e deps: init poc
2025-09-15 11:39:55 +02:00

143 lines
4.1 KiB
Nix

{
description = "clan.lol base operating system";
inputs = {
nixpkgs.url = "https://nixos.org/channels/nixpkgs-unstable/nixexprs.tar.xz";
nix-darwin.url = "github:nix-darwin/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
nixos-facter-modules.url = "github:nix-community/nixos-facter-modules";
sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
systems.url = "github:nix-systems/default";
treefmt-nix.url = "github:numtide/treefmt-nix";
treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
nix-select.url = "https://git.clan.lol/clan/nix-select/archive/main.tar.gz";
data-mesher = {
url = "https://git.clan.lol/clan/data-mesher/archive/main.tar.gz";
inputs = {
flake-parts.follows = "flake-parts";
nixpkgs.follows = "nixpkgs";
treefmt-nix.follows = "treefmt-nix";
};
};
};
outputs =
inputs@{
nixpkgs,
systems,
flake-parts,
...
}:
let
inherit (nixpkgs.lib)
filter
optional
pathExists
;
privateInputs =
if builtins.pathExists (./. + "/.skip-private-inputs") then
{ }
else
(import ./devFlake/flake-compat.nix {
src = ./devFlake;
}).outputs;
in
flake-parts.lib.mkFlake { inherit inputs; } (
{ ... }:
{
_module.args = {
inherit privateInputs;
};
clan = {
meta.name = "clan-core";
modules = {
myModule = { ... }: {
#
_module.args = { inherit inputs; };
};
# # depends on home-manager 25.05
# myEnzime = { ... }: {
# imports = [ inputs.enzime.yours ];
# dependencies.home-manager = lib.mkForce "my-home-manager";
# };
# # depends on home-manager 24.05
# myLassulus = { ... }: {
# imports = [ inputs.lassulus.his ];
# dependencies.home-manager = lib.mkForce "my-home-manager";
# };
};
serviceOverrides = {
"clan-core/hello-world" = {
dependencies = {
flake-parts = "flake-parts";
};
};
};
inventory = {
instances.hello-world = {
roles.morning.tags = [ "all" ];
};
machines = {
"test-darwin-machine" = {
machineClass = "darwin";
};
};
};
};
systems = import systems;
imports = [
flake-parts.flakeModules.modules
]
++
# only importing existing paths allows to minimize the flake for test
# by removing files
filter pathExists [
./checks/flake-module.nix
./clanModules/flake-module.nix
./clanServices/flake-module.nix
./devShell.nix
./docs/nix/flake-module.nix
./flakeModules/flake-module.nix
./flakeModules/demo_iso.nix
./lib/filter-clan-core/flake-module.nix
./lib/flake-module.nix
./lib/flake-parts/clan-nixos-test.nix
./nixosModules/clanCore/vars/flake-module.nix
./nixosModules/flake-module.nix
./pkgs/flake-module.nix
./templates/flake-module.nix
./pkgs/clan-cli/clan_cli/tests/flake-module.nix
]
++ [
(if pathExists ./flakeModules/clan.nix then import ./flakeModules/clan.nix inputs.self else { })
]
# Make treefmt-nix optional
# This only works if you set inputs.clan-core.inputs.treefmt-nix.follows
# to a non-empty input that doesn't export a flakeModule
++ optional (pathExists ./formatter.nix && inputs.treefmt-nix ? flakeModule) ./formatter.nix;
}
);
}