refactor(systems): move system configuration logic to lib/systems.nix
Centralize system configuration setup to reduce duplication and improve maintainability.
This commit is contained in:
parent
fd2de0ec29
commit
c930ef6328
100
flake.nix
100
flake.nix
@ -35,88 +35,22 @@
|
|||||||
sysLinuxAarch = "aarch64-linux";
|
sysLinuxAarch = "aarch64-linux";
|
||||||
forAllSystems = nixpkgs.lib.genAttrs [ sysLinuxX64 sysLinuxAarch sysDarwin ];
|
forAllSystems = nixpkgs.lib.genAttrs [ sysLinuxX64 sysLinuxAarch sysDarwin ];
|
||||||
|
|
||||||
wrapPkgsSystem = { system, cudaSupport ? false }:
|
mkSystem = (import ./lib/systems.nix {
|
||||||
let
|
inherit nixpkgs;
|
||||||
config = {
|
inputs = {
|
||||||
inherit cudaSupport;
|
inherit nixos-unstable nixpkgs-master local-unstable
|
||||||
|
agenix-flake pepeflake langtool-ngrams
|
||||||
allowUnfree = true;
|
nvidia-patch home-manager;
|
||||||
};
|
|
||||||
|
|
||||||
cachixOverlay = final: prev: {
|
|
||||||
nixosModules = (prev.nixosModules or { }) // {
|
|
||||||
cachixConfig = import ./cachix.nix;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
extOverlays = [
|
|
||||||
(nvidia-patch.overlays.default)
|
|
||||||
cachixOverlay
|
|
||||||
];
|
|
||||||
|
|
||||||
importNixpkgs = { flake }:
|
|
||||||
import flake {
|
|
||||||
inherit system config;
|
|
||||||
|
|
||||||
overlays = extOverlays;
|
|
||||||
};
|
|
||||||
|
|
||||||
unstablePkgs = importNixpkgs { flake = nixos-unstable; };
|
|
||||||
masterPkgs = importNixpkgs { flake = nixpkgs-master; };
|
|
||||||
localPkgs = importNixpkgs { flake = local-unstable; };
|
|
||||||
agenixPkgs = importNixpkgs { flake = agenix-flake; };
|
|
||||||
pepePkgs = pepeflake.packages.${system} // pepeflake.legacyPackages.${system} or { };
|
|
||||||
langtoolPkgs = langtool-ngrams.packages.${system} // langtool-ngrams.legacyPackages.${system} or { };
|
|
||||||
|
|
||||||
additionalOverlays = [
|
|
||||||
(final: prev: { inherit unstablePkgs; })
|
|
||||||
(final: prev: { inherit localPkgs; })
|
|
||||||
(final: prev: { inherit agenixPkgs; })
|
|
||||||
(final: prev: { inherit masterPkgs; })
|
|
||||||
(final: prev: { inherit pepePkgs; })
|
|
||||||
(final: prev: { inherit langtoolPkgs; })
|
|
||||||
];
|
|
||||||
in
|
|
||||||
import nixpkgs {
|
|
||||||
inherit system config;
|
|
||||||
overlays = additionalOverlays ++ extOverlays ++ [
|
|
||||||
(final: prev: {
|
|
||||||
ctranslate2 = prev.ctranslate2.override {
|
|
||||||
withCUDA = true;
|
|
||||||
withCuDNN = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
}).mkSystem;
|
||||||
|
|
||||||
wrapUtils = { pkgs }:
|
linuxX64Cuda = mkSystem { system = sysLinuxX64; cudaSupport = true; };
|
||||||
let
|
linuxAarch = mkSystem { system = sysLinuxAarch; };
|
||||||
inherit (pkgs.lib) makeScope;
|
darwin = mkSystem { system = sysDarwin; };
|
||||||
inherit (pkgs) newScope;
|
|
||||||
in
|
|
||||||
makeScope newScope (self: rec {
|
|
||||||
inherit nixpkgs home-manager nixos-unstable;
|
|
||||||
inherit (self.callPackage ./lib/utils.nix { }) mkSysRole mkHomeRole;
|
|
||||||
inherit (user) mkUser;
|
|
||||||
|
|
||||||
user = self.callPackage ./lib/user.nix { };
|
|
||||||
host = self.callPackage ./lib/host.nix { };
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
pkgsLinuxX64Cuda = wrapPkgsSystem { system = sysLinuxX64; cudaSupport = true; };
|
|
||||||
utilsLinuxX64Cuda = wrapUtils { pkgs = pkgsLinuxX64Cuda; };
|
|
||||||
|
|
||||||
pkgsLinuxAarch = wrapPkgsSystem { system = sysLinuxAarch; };
|
|
||||||
utilsLinuxAarch = wrapUtils { pkgs = pkgsLinuxAarch; };
|
|
||||||
|
|
||||||
pkgsDarwin = wrapPkgsSystem { system = sysDarwin; };
|
|
||||||
utilsDarwin = wrapUtils { pkgs = pkgsDarwin; };
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
architect = utilsLinuxX64Cuda.host.mkHost {
|
architect = linuxX64Cuda.utils.host.mkHost {
|
||||||
name = "architect";
|
name = "architect";
|
||||||
users = [{
|
users = [{
|
||||||
user = "giulio";
|
user = "giulio";
|
||||||
@ -129,27 +63,27 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
giulioMac = utilsDarwin.user.mkHMUser {
|
giulioMac = darwin.utils.user.mkHMUser {
|
||||||
name = "giulio";
|
name = "giulio";
|
||||||
roles = [ "ssh" ];
|
roles = [ "ssh" ];
|
||||||
};
|
};
|
||||||
gdepasqualeMac = utilsDarwin.user.mkHMUser {
|
gdepasqualeMac = darwin.utils.user.mkHMUser {
|
||||||
name = "gdepasquale";
|
name = "gdepasquale";
|
||||||
roles = [ "ssh" ];
|
roles = [ "ssh" ];
|
||||||
};
|
};
|
||||||
giulioAarch = utilsLinuxAarch.user.mkHMUser {
|
giulioAarch = linuxAarch.utils.user.mkHMUser {
|
||||||
name = "giulio";
|
name = "giulio";
|
||||||
roles = [ "ssh" ];
|
roles = [ "ssh" ];
|
||||||
};
|
};
|
||||||
giulioX64 = utilsLinuxX64Cuda.user.mkHMUser {
|
giulioX64 = linuxX64Cuda.utils.user.mkHMUser {
|
||||||
name = "giulio";
|
name = "giulio";
|
||||||
roles = [ "ssh" "go" ];
|
roles = [ "ssh" "go" ];
|
||||||
};
|
};
|
||||||
giulioX64NoSSH = utilsLinuxX64Cuda.user.mkHMUser {
|
giulioX64NoSSH = linuxX64Cuda.utils.user.mkHMUser {
|
||||||
name = "giulio";
|
name = "giulio";
|
||||||
roles = [ "go" ];
|
roles = [ "go" ];
|
||||||
};
|
};
|
||||||
gdepasqualeX64 = utilsLinuxX64Cuda.user.mkHMUser {
|
gdepasqualeX64 = linuxX64Cuda.utils.user.mkHMUser {
|
||||||
name = "gdepasquale";
|
name = "gdepasquale";
|
||||||
roles = [ "ssh" "go" ];
|
roles = [ "ssh" "go" ];
|
||||||
};
|
};
|
||||||
|
72
lib/systems.nix
Normal file
72
lib/systems.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{ nixpkgs, inputs }:
|
||||||
|
|
||||||
|
let
|
||||||
|
mkSystem = { system, cudaSupport ? false }:
|
||||||
|
let
|
||||||
|
config = {
|
||||||
|
inherit cudaSupport;
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
cachixOverlay = final: prev: {
|
||||||
|
nixosModules = (prev.nixosModules or { }) // {
|
||||||
|
cachixConfig = import ../cachix.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extOverlays = [
|
||||||
|
(inputs.nvidia-patch.overlays.default)
|
||||||
|
cachixOverlay
|
||||||
|
];
|
||||||
|
|
||||||
|
importNixpkgs = { flake }:
|
||||||
|
import flake {
|
||||||
|
inherit system config;
|
||||||
|
overlays = extOverlays;
|
||||||
|
};
|
||||||
|
|
||||||
|
unstablePkgs = importNixpkgs { flake = inputs.nixos-unstable; };
|
||||||
|
masterPkgs = importNixpkgs { flake = inputs.nixpkgs-master; };
|
||||||
|
localPkgs = importNixpkgs { flake = inputs.local-unstable; };
|
||||||
|
agenixPkgs = importNixpkgs { flake = inputs.agenix-flake; };
|
||||||
|
pepePkgs = inputs.pepeflake.packages.${system} // inputs.pepeflake.legacyPackages.${system} or { };
|
||||||
|
langtoolPkgs = inputs.langtool-ngrams.packages.${system} // inputs.langtool-ngrams.legacyPackages.${system} or { };
|
||||||
|
|
||||||
|
additionalOverlays = [
|
||||||
|
(final: prev: { inherit unstablePkgs; })
|
||||||
|
(final: prev: { inherit localPkgs; })
|
||||||
|
(final: prev: { inherit agenixPkgs; })
|
||||||
|
(final: prev: { inherit masterPkgs; })
|
||||||
|
(final: prev: { inherit pepePkgs; })
|
||||||
|
(final: prev: { inherit langtoolPkgs; })
|
||||||
|
];
|
||||||
|
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system config;
|
||||||
|
overlays = additionalOverlays ++ extOverlays ++ [
|
||||||
|
(final: prev: {
|
||||||
|
ctranslate2 = prev.ctranslate2.override {
|
||||||
|
withCUDA = cudaSupport;
|
||||||
|
withCuDNN = cudaSupport;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
utils =
|
||||||
|
let
|
||||||
|
inherit (pkgs.lib) makeScope;
|
||||||
|
inherit (pkgs) newScope;
|
||||||
|
in
|
||||||
|
makeScope newScope (self: rec {
|
||||||
|
inherit nixpkgs inputs;
|
||||||
|
inherit (self.callPackage ../lib/utils.nix { }) mkSysRole mkHomeRole;
|
||||||
|
inherit (user) mkUser;
|
||||||
|
|
||||||
|
user = self.callPackage ../lib/user.nix { home-manager = inputs.home-manager; };
|
||||||
|
host = self.callPackage ../lib/host.nix { home-manager = inputs.home-manager; };
|
||||||
|
});
|
||||||
|
in
|
||||||
|
{ inherit pkgs utils; };
|
||||||
|
in
|
||||||
|
{ inherit mkSystem; }
|
Loading…
x
Reference in New Issue
Block a user