nixvimConfig/modules/nixOS/default.nix

102 lines
2.4 KiB
Nix
Raw Normal View History

2024-07-03 00:38:20 +02:00
{
pkgs,
2024-03-27 23:45:23 +01:00
config,
2024-07-03 00:38:20 +02:00
lib,
inputs,
outputs,
2024-03-27 23:45:23 +01:00
helperLib,
...
}: let
cfg = config.myNixOS;
# Taking all modules in ./features and adding enables to them
2024-07-03 00:38:20 +02:00
features =
2024-03-27 23:45:23 +01:00
helperLib.extendModules
2024-07-03 00:38:20 +02:00
(name: {
extraOptions = {
2024-03-27 23:45:23 +01:00
myNixOS.${name}.enable = lib.mkEnableOption "enable my ${name} configuration";
};
configExtension = config: (lib.mkIf cfg.${name}.enable config);
})
(helperLib.filesIn ./features);
# taking all module bundles in ./bundles and adding bundle.enables to them
2024-07-03 00:38:20 +02:00
bundles =
2024-03-27 23:45:23 +01:00
helperLib.extendModules
(name: {
extraOptions = {
myNixOS.bundles.${name}.enable = lib.mkEnableOption "enable ${name} module bundle";
};
configExtension = config: (lib.mkIf cfg.bundles.${name}.enable config);
})
(helperLib.filesIn ./bundles);
# taking all module services in ./services and adding service.enables to them
2024-07-03 00:38:20 +02:00
services =
2024-05-16 15:09:24 +02:00
helperLib.extendModules
(name: {
extraOptions = {
myNixOS.services.${name}.enable = lib.mkEnableOption "enable ${name} module service";
};
configExtension = config: (lib.mkIf cfg.services.${name}.enable config);
})
(helperLib.filesIn ./services);
2024-03-27 23:45:23 +01:00
in {
2024-07-03 00:38:20 +02:00
imports =
[
inputs.home-manager.nixosModules.home-manager
]
++ features
++ bundles
++ services;
2024-03-27 23:45:23 +01:00
options.myNixOS = {
sharedSettings = {
# put settings here that are shared between homemanager and nixos, e.g.
# hyprland.enable = lib.mkEnableOption "enable hyprland";
2024-05-09 19:41:05 +02:00
mainUser = lib.mkOption {
type = lib.types.str;
default = "prunebutt";
example = "mainUser";
description = "The main user that runs the system";
};
2024-03-27 23:45:23 +01:00
};
};
config = {
nix.settings.experimental-features = ["nix-command" "flakes"];
programs.nix-ld.enable = true;
2024-07-03 02:27:30 +02:00
nixpkgs = {
config.allowUnfree = lib.mkDefault true;
# overlays = [
# outputs.overlays.additions
# outputs.overlays.modifications
# ];
};
2024-03-27 23:45:23 +01:00
myNixOS = {
2024-05-14 08:19:08 +02:00
bundles.core.enable = lib.mkDefault true;
2024-03-27 23:45:23 +01:00
bundles.users.enable = lib.mkDefault true;
2024-05-14 08:19:08 +02:00
defaultLocale.enable = lib.mkDefault true;
2024-03-27 23:45:23 +01:00
};
};
}
# imports = [
# ./neo.nix
# ./locale.nix
# ./pipewire.nix
# ];
#
# locale.enable = lib.mkDefault true;
# neo.enable = lib.mkDefault true;
#
# pipewire.enable = lib.mkDefault true;
# pipewire.useJack = lib.mkDefault false;
# }
2024-07-03 00:38:20 +02:00