1
Fork 0
mirror of https://github.com/RGBCube/ncc synced 2025-07-31 12:07:48 +00:00

Simplify & flatten flake.nix

This commit is contained in:
RGBCube 2023-11-12 20:47:27 +03:00
parent 00aa19540e
commit e80030012c
No known key found for this signature in database

View file

@ -33,7 +33,7 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
}; };
outputs = { fenix, home-manager, hyprland, nixpkgs, ... }: let outputs = { fenix, home-manager, nixpkgs, ... } @ inputs: let
machines = [ machines = [
./machines/enka ./machines/enka
]; ];
@ -42,52 +42,12 @@
"x86_64-linux" "x86_64-linux"
]; ];
nixosSystem = arguments: modules: nixpkgs.lib.nixosSystem {
specialArgs = arguments;
modules = modules;
};
importConfiguration = configurationDirectory: hostPlatform: let
hostName = builtins.baseNameOf configurationDirectory;
in {
nixosConfigurations.${hostName} = nixosSystem {
lib = nixpkgs.lib // { lib = nixpkgs.lib // {
recursiveUpdate3 = x: y: z: nixpkgs.lib.recursiveUpdate x (nixpkgs.lib.recursiveUpdate y z); recursiveUpdate3 = x: y: z: nixpkgs.lib.recursiveUpdate x (nixpkgs.lib.recursiveUpdate y z);
}; };
pkgs = import nixpkgs {
system = hostPlatform;
config.allowUnfree = true;
overlays = [
fenix.overlays.default
];
};
hyprland = hyprland.packages.${hostPlatform}.hyprland;
theme = import ./themes/gruvbox.nix; theme = import ./themes/gruvbox.nix;
# SYSTEM
systemConfiguration = attributes: attributes;
systemPackages = packages: {
environment.systemPackages = packages;
};
systemFonts = fonts: {
fonts.packages = fonts;
};
# HOME
homeConfiguration = userName: attributes: {
home-manager.users.${userName} = attributes;
};
homePackages = userName: packages: {
home-manager.users.${userName}.home.packages = packages;
};
# GENERAL # GENERAL
imports = importPaths: { imports = importPaths: {
imports = importPaths; imports = importPaths;
@ -100,11 +60,46 @@
normalUser = attributes: attributes // { normalUser = attributes: attributes // {
isNormalUser = true; isNormalUser = true;
}; };
} [
configurationDirectory
home-manager.nixosModules.home-manager
{ # SYSTEM
systemConfiguration = attributes: attributes;
systemPackages = packages: systemConfiguration {
environment.systemPackages = packages;
};
systemFonts = fonts: systemConfiguration {
fonts.packages = fonts;
};
# HOME
homeConfiguration = userName: attributes: systemConfiguration {
home-manager.users.${userName} = attributes;
};
homePackages = userName: packages: homeConfiguration userName {
home.packages = packages;
};
importConfiguration = configurationDirectory: hostPlatform: let
hostName = builtins.baseNameOf configurationDirectory;
pkgs = import nixpkgs {
system = hostPlatform;
config.allowUnfree = true;
overlays = [
fenix.overlays.default
];
};
hyprland = inputs.hyprland.packages.${hostPlatform}.hyprland;
arguments = {
inherit lib pkgs hyprland theme systemConfiguration systemPackages homeConfiguration systemFonts homePackages imports enabled normalUser;
};
defaultConfiguration = {
nix.gc = { nix.gc = {
automatic = true; automatic = true;
dates = "daily"; dates = "daily";
@ -123,8 +118,18 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
} };
modules = [
home-manager.nixosModules.home-manager
defaultConfiguration
configurationDirectory
]; ];
in {
nixosConfigurations.${hostName} = nixpkgs.lib.nixosSystem {
specialArgs = arguments;
modules = modules;
};
}; };
in builtins.foldl' nixpkgs.lib.recursiveUpdate {} (builtins.concatMap (architecture: builtins.map (configuration: importConfiguration configuration architecture) machines) architectures); in builtins.foldl' nixpkgs.lib.recursiveUpdate {} (builtins.concatMap (architecture: builtins.map (configuration: importConfiguration configuration architecture) machines) architectures);
} }