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";
|
||||
forAllSystems = nixpkgs.lib.genAttrs [ sysLinuxX64 sysLinuxAarch sysDarwin ];
|
||||
|
||||
wrapPkgsSystem = { system, cudaSupport ? false }:
|
||||
let
|
||||
config = {
|
||||
inherit cudaSupport;
|
||||
|
||||
allowUnfree = true;
|
||||
};
|
||||
|
||||
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 = (import ./lib/systems.nix {
|
||||
inherit nixpkgs;
|
||||
inputs = {
|
||||
inherit nixos-unstable nixpkgs-master local-unstable
|
||||
agenix-flake pepeflake langtool-ngrams
|
||||
nvidia-patch home-manager;
|
||||
};
|
||||
}).mkSystem;
|
||||
|
||||
wrapUtils = { pkgs }:
|
||||
let
|
||||
inherit (pkgs.lib) makeScope;
|
||||
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; };
|
||||
linuxX64Cuda = mkSystem { system = sysLinuxX64; cudaSupport = true; };
|
||||
linuxAarch = mkSystem { system = sysLinuxAarch; };
|
||||
darwin = mkSystem { system = sysDarwin; };
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
architect = utilsLinuxX64Cuda.host.mkHost {
|
||||
architect = linuxX64Cuda.utils.host.mkHost {
|
||||
name = "architect";
|
||||
users = [{
|
||||
user = "giulio";
|
||||
@ -129,27 +63,27 @@
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
giulioMac = utilsDarwin.user.mkHMUser {
|
||||
giulioMac = darwin.utils.user.mkHMUser {
|
||||
name = "giulio";
|
||||
roles = [ "ssh" ];
|
||||
};
|
||||
gdepasqualeMac = utilsDarwin.user.mkHMUser {
|
||||
gdepasqualeMac = darwin.utils.user.mkHMUser {
|
||||
name = "gdepasquale";
|
||||
roles = [ "ssh" ];
|
||||
};
|
||||
giulioAarch = utilsLinuxAarch.user.mkHMUser {
|
||||
giulioAarch = linuxAarch.utils.user.mkHMUser {
|
||||
name = "giulio";
|
||||
roles = [ "ssh" ];
|
||||
};
|
||||
giulioX64 = utilsLinuxX64Cuda.user.mkHMUser {
|
||||
giulioX64 = linuxX64Cuda.utils.user.mkHMUser {
|
||||
name = "giulio";
|
||||
roles = [ "ssh" "go" ];
|
||||
};
|
||||
giulioX64NoSSH = utilsLinuxX64Cuda.user.mkHMUser {
|
||||
giulioX64NoSSH = linuxX64Cuda.utils.user.mkHMUser {
|
||||
name = "giulio";
|
||||
roles = [ "go" ];
|
||||
};
|
||||
gdepasqualeX64 = utilsLinuxX64Cuda.user.mkHMUser {
|
||||
gdepasqualeX64 = linuxX64Cuda.utils.user.mkHMUser {
|
||||
name = "gdepasquale";
|
||||
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