mirror of
https://codeberg.org/leana8959/.files.git
synced 2025-12-06 14:49:14 +00:00
nix: refactored configuration
This commit is contained in:
parent
930881a355
commit
e133fc127e
5 changed files with 16 additions and 24 deletions
125
nix/configurations/combinators.nix
Normal file
125
nix/configurations/combinators.nix
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
{
|
||||
withSystem,
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
let
|
||||
defaultOptions.options =
|
||||
let
|
||||
inherit (inputs.nixpkgs) lib;
|
||||
in
|
||||
{
|
||||
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; };
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue