nix: refactored configuration

This commit is contained in:
Léana 江 2024-05-10 14:24:26 +02:00 committed by Léana 江
parent 930881a355
commit e133fc127e
5 changed files with 16 additions and 24 deletions

View file

@ -1,114 +0,0 @@
{
withSystem,
inputs,
defaultOptions,
self,
...
}:
let
mkNixOS =
name: sys: opts:
withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.nixpkgs.lib.nixosSystem {
specialArgs = args;
modules = [
"${self}/nix/hosts/_"
"${self}/nix/hosts/${name}"
"${self}/nix/layouts"
inputs.agenix.nixosModules.default
defaultOptions
opts
inputs.home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
users.leana.imports = [
"${self}/nix/home/_"
"${self}/nix/home/${name}"
defaultOptions
opts
];
};
}
];
}
);
mkDarwin =
name: sys: opts:
withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.nix-darwin.lib.darwinSystem {
specialArgs = args;
modules = [
{ nixpkgs.hostPlatform = sys; }
"${self}/nix/hosts/_"
"${self}/nix/hosts/_darwin"
"${self}/nix/hosts/${name}"
defaultOptions
opts
inputs.home-manager.darwinModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
users.leana.imports = [
"${self}/nix/home/_"
"${self}/nix/home/${name}"
defaultOptions
opts
];
};
}
];
}
);
mkHomeManager =
name: sys: opts:
withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.home-manager.lib.homeManagerConfiguration {
pkgs = args.pkgs;
extraSpecialArgs = args;
modules = [
"${self}/nix/home/_"
"${self}/nix/home/${name}"
defaultOptions
opts
];
}
);
many = func: builtins.mapAttrs (name: opts: func name (opts.system) (opts.settings or { }));
in
{
# promote helper functions into the arguments
_module.args = {
mkNixOSes = many mkNixOS;
mkHomeManagers = many mkHomeManager;
mkDarwins = many mkDarwin;
};
}

View file

@ -1,50 +0,0 @@
{
mkDarwins,
mkHomeManagers,
mkNixOSes,
...
}:
{
flake = {
darwinConfigurations = mkDarwins {
# MacBook Pro 2021
bismuth = {
system = "aarch64-darwin";
settings = {
extraLanguageServers.enable = true;
extraUtils.enable = true;
cmus.enable = true;
universityTools.enable = true;
git.signCommits = true;
};
};
# MacBook Air 2014
tungsten = {
system = "x86_64-darwin";
settings.cmus.enable = true;
};
};
homeConfigurations = mkHomeManagers {
# Raspberry Pi 4
hydrogen.system = "aarch64-linux";
# Oracle cloud
oracle.system = "aarch64-linux";
# Linode
linode.system = "x86_64-linux";
};
nixosConfigurations = mkNixOSes {
# Thinkpad
carbon = {
system = "x86_64-linux";
settings = {
extraLanguageServers.enable = true;
extraUtils.enable = true;
cmus.enable = true;
universityTools.enable = true;
};
};
};
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./combinators.nix
./configurations.nix
./options.nix
];
}

View file

@ -1,13 +0,0 @@
{
_module.args.defaultOptions =
{ lib, ... }:
{
options = {
cmus.enable = lib.mkOption { default = false; };
extraUtils.enable = lib.mkOption { default = false; };
extraLanguageServers.enable = lib.mkOption { default = false; };
universityTools.enable = lib.mkOption { default = false; };
git.signCommits = lib.mkOption { default = false; };
};
};
}