use mkSystem

This commit is contained in:
Natalie 2025-04-18 16:46:54 -07:00
parent 8a46e01ffc
commit dce01a9832
No known key found for this signature in database
GPG key ID: 61F4EAEB0C9C3D5F
6 changed files with 95 additions and 91 deletions

View file

@ -58,63 +58,46 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {
outputs = {
nixpkgs,
nixos-cosmic,
nix-index-database,
darwin,
...
}: let
} @ inputs: let
overlays = [
inputs.zig.overlays.default
inputs.rust-overlay.overlays.default
inputs.chinese-fonts-overlay.overlays.default
inputs.nh.overlays.default
];
inherit (nixpkgs) lib;
mkIfElse = p: yes: no:
lib.mkMerge [
(lib.mkIf p yes)
(lib.mkIf (!p) no)
];
mkSystem = import ./lib/mkSystem.nix {
inherit overlays nixpkgs inputs;
};
user = "nmarks";
shared_modules = [
# {nixpkgs.overlays = overlays;}
# {programs.nix-index-database.comma.enable = true;}
# nixindex
# homemanagerModules
{
_module.args = {
inherit user;
inherit mkIfElse;
};
}
];
in {
nixosConfigurations = {
nixos = lib.nixosSystem {
system = "x86_64-linux";
modules =
[
./hosts/desktop/configuration.nix
nixos-cosmic.nixosModules.default
]
++ shared_modules;
specialArgs = inputs;
};
nixosConfigurations.nixos = mkSystem "nixos" {
system = "x86_64-linux";
inherit user;
extraModules = [
nixos-cosmic.nixosModules.default
];
};
darwinConfigurations = {
"Natalies-MacBook-Air" = darwin.lib.darwinSystem {
system = "aarch64-darwin";
specialArgs = inputs;
modules =
[
./hosts/laptop/configuration.nix
]
++ shared_modules;
};
darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
system = "aarch64-darwin";
inherit user;
darwin = true;
};
# darwinConfigurations = {
# "Natalies-MacBook-Air" = darwin.lib.darwinSystem {
# system = "aarch64-darwin";
# specialArgs = inputs;
# modules = [
# ./hosts/laptop/configuration.nix
# ];
# };
# };
};
}

70
lib/mkSystem.nix Normal file
View file

@ -0,0 +1,70 @@
# This function creates a NixOS system based on our VM setup for a
# particular architecture.
{
nixpkgs,
overlays,
inputs,
}: name: {
system,
user,
darwin ? false,
extraModules ? [],
}: let
# True if this is a WSL system.
# True if Linux, which is a heuristic for not being Darwin.
mkIfElse = p: yes: no:
nixpkgs.lib.mkMerge [
(nixpkgs.lib.mkIf p yes)
(nixpkgs.lib.mkIf (!p) no)
];
nixindex = mkIfElse darwin inputs.nix-index-database.darwinModules.nix-index inputs.nix-index-database.nixosModules.nix-index;
host = mkIfElse darwin "laptop" "desktop";
# The config files for this system.
hostConfig = ../hosts/${host}/configuration.nix;
# NixOS vs nix-darwin functions
systemFunc = mkIfElse darwin inputs.darwin.lib.darwinSystem nixpkgs.lib.nixosSystem;
home-manager =
if darwin
then inputs.home-manager.darwinModules
else inputs.home-manager.nixosModules;
in
systemFunc rec {
inherit system;
modules =
[
# Apply our overlays. Overlays are keyed by system type so we have
# to go through and apply our system type. We do this first so
# the overlays are available globally.
{nixpkgs.overlays = overlays;}
{inputs.programs.nix-index-database.comma.enable = true;}
hostConfig
nixindex
home-manager.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "hm-backup";
extraSpecialArgs = {inherit inputs;};
};
}
# We expose some extra arguments so that our modules can parameterize
# better based on these values.
{
config._module.args = {
currentSystem = system;
currentSystemName = name;
currentSystemUser = user;
inherit inputs;
};
}
]
++ extraModules;
}

View file

@ -2,13 +2,8 @@
pkgs,
config,
inputs,
hostName,
mkIfElse,
darwin,
...
}: {
networking = {
inherit hostName;
networkmanager = !darwin;
};
}

View file

@ -1,8 +0,0 @@
{inputs, ...}: {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "hm-backup";
extraSpecialArgs = {inherit inputs;};
};
}

View file

@ -1,13 +0,0 @@
{
pkgs,
inputs,
config,
...
}: {
imports = [
# {pkgs.overlays = overlays;}
{programs.nix-index-database.comma.enable = true;}
config.nixindex
config.homemanagerModules
];
}

View file

@ -1,23 +0,0 @@
{
inputs,
pkgs,
config,
lib,
mkIfElse,
...
}: let
darwin = pkgs.stdenv.isDarwin;
homemanagerModules = mkIfElse darwin inputs.home-manager.darwinModules inputs.home-manager.nixosModules;
nixindex = mkIfElse darwin inputs.nix-index-database.darwinModules.nix-index inputs.nix-index-database.nixosModules.nix-index;
in {
config.var = {
inherit darwin homemanagerModules nixindex;
};
options = {
var = lib.mkOption {
type = lib.types.attrs;
default = {};
};
};
}