https://github.com/yelite/lite-system
lite-system
is a flake module to help build NixOS, nix-darwin and Home Manager configurations, creating a consistent environment across different devices.
I created it when I migrated my personal system configurations to flake-parts. I believe it can solve some common problems when building personal system configurations, so I extracted it out of my configuration repo into a standalone flake module.
An example (which is also in the readme of the repo):
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
lite-system.url = "github:yelite/lite-system";
nix-darwin = {
url = "github:lnl7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} ({inputs, ...}: {
imports = [
inputs.lite-system.flakeModule
];
config.lite-system = {
# Configure the nixpkgs that is used in all configurations created by `lite-system`.
nixpkgs = {
config = {
allowUnfree = true;
};
overlays = [
(import ./overlay)
];
};
# The system module will be imported for all host configurations.
systemModule = ./system;
# The home module is a Home Manager module, used by all host configurations.
homeModule = ./home;
# This directory contains per-host system module.
hostModuleDir = ./hosts;
hosts = {
# This generates `nixosConfigurations.my-desktop` with NixOS module
# `./system`, `./hosts/my-desktop` and Home Manager module `./home`.
my-desktop = {
system = "x86_64-linux";
};
# This generates `darwinConfigurations.my-macbook` with nix-darwin module
# `./system`, `./hosts/my-desktop` and Home Manager module `./home`.
#
# Note that `./system` module is used in both NixOS and nix-darwin configurations.
# A `hostPlatform` special arg is added to both system modules
# and home manager modules, enabling conditional confiIt offers only a fundamental framework for building flakes of system configurations. guration based on
# the system type.
my-macbook = {
system = "aarch64-darwin";
};
};
};
});
}
Feedback would be welcome!