abstract away architectures
This commit is contained in:
parent
8ebf7b68df
commit
9414398f68
8 changed files with 80 additions and 33 deletions
45
flake.nix
45
flake.nix
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
systems.url = "github:nix-systems/default-linux";
|
||||
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
@ -14,41 +15,49 @@
|
|||
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
||||
};
|
||||
|
||||
outputs = inputs @ { self, nixpkgs, ... }:
|
||||
outputs = inputs @ { self, nixpkgs, systems, ... }:
|
||||
let
|
||||
inherit (lib.my) mapModules mapModulesRec mapHosts;
|
||||
system = "aarch64-linux";
|
||||
eachSystem = nixpkgs.lib.genAttrs (import systems);
|
||||
|
||||
mkPkgs = pkgs: extraOverlays:
|
||||
lib = nixpkgs.lib.extend (final: prev: {
|
||||
my = import ./lib {
|
||||
inherit inputs;
|
||||
lib = final;
|
||||
pkgs = null;
|
||||
};
|
||||
});
|
||||
|
||||
mkPkgs = system: pkgs: extraOverlays:
|
||||
import pkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
config.allowAliases = true;
|
||||
overlays = extraOverlays ++ (lib.attrValues self.overlays);
|
||||
};
|
||||
pkgs = mkPkgs nixpkgs [ self.overlays.default ];
|
||||
|
||||
lib = nixpkgs.lib.extend (final: prev: {
|
||||
my = import ./lib {
|
||||
inherit pkgs inputs;
|
||||
lib = final;
|
||||
};
|
||||
});
|
||||
pkgsFor = eachSystem (system:
|
||||
mkPkgs system nixpkgs [
|
||||
self.overlays.default
|
||||
]
|
||||
);
|
||||
in {
|
||||
lib = lib.my;
|
||||
|
||||
overlays =
|
||||
(mapModules ./overlays import)
|
||||
// {
|
||||
default = final: prev: {
|
||||
my = self.packages.${system};
|
||||
};
|
||||
overlays = (mapModules ./overlays import) // {
|
||||
default = final: prev: {
|
||||
my = self.packages.${final.stdenv.hostPlatform.system};
|
||||
};
|
||||
};
|
||||
|
||||
packages."${system}" = mapModules ./packages (p: pkgs.callPackage p {});
|
||||
packages = eachSystem (system: let
|
||||
pkgs = pkgsFor.${system};
|
||||
in
|
||||
mapModules ./packages (p: pkgs.callPackage p {})
|
||||
);
|
||||
|
||||
nixosModules = mapModulesRec ./modules import;
|
||||
|
||||
nixosConfigurations = mapHosts ./hosts {};
|
||||
nixosConfigurations = mapHosts ./hosts { inherit pkgsFor; };
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue