Multi system and pkgs cleanup
This commit is contained in:
@@ -39,25 +39,35 @@
|
|||||||
outputs = inputs:
|
outputs = inputs:
|
||||||
let
|
let
|
||||||
lib = inputs.nixpkgs.lib;
|
lib = inputs.nixpkgs.lib;
|
||||||
gen = import ./generator.nix { inherit inputs; };
|
linuxSystems = [ "x86_64-linux" "aarch64-linux" ];
|
||||||
|
supportedSystems = linuxSystems ++ [ "x86_64-darwin" "aarch64-darwin" ];
|
||||||
|
overlays = import ./overlays { inherit inputs; };
|
||||||
|
mkPkgs = system:
|
||||||
|
import inputs.nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
inherit overlays;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
gen = import ./generator.nix { inherit inputs mkPkgs supportedSystems; };
|
||||||
systemsDir = ./systems;
|
systemsDir = ./systems;
|
||||||
isIgnoredSystemDir = name: lib.hasPrefix "_" name || lib.hasPrefix "." name;
|
isIgnoredSystemDir = name: lib.hasPrefix "_" name || lib.hasPrefix "." name;
|
||||||
systemNames = lib.attrNames (lib.filterAttrs
|
systemNames = lib.attrNames (
|
||||||
(name: type:
|
lib.filterAttrs (
|
||||||
|
name: type:
|
||||||
type == "directory"
|
type == "directory"
|
||||||
&& !isIgnoredSystemDir name
|
&& !isIgnoredSystemDir name
|
||||||
&& builtins.pathExists (systemsDir + "/${name}/cfg.nix"))
|
&& builtins.pathExists (systemsDir + "/${name}/cfg.nix")
|
||||||
(builtins.readDir systemsDir));
|
) (builtins.readDir systemsDir)
|
||||||
|
);
|
||||||
hostsByType = systemType:
|
hostsByType = systemType:
|
||||||
lib.filter
|
lib.filter (host: ((import (systemsDir + "/${host}/cfg.nix")).syscfg.type or "nixos") == systemType) systemNames;
|
||||||
(host: (import (systemsDir + "/${host}/cfg.nix")).syscfg.type == systemType)
|
|
||||||
systemNames;
|
|
||||||
generateHosts = systemType:
|
generateHosts = systemType:
|
||||||
lib.genAttrs
|
lib.genAttrs (hostsByType systemType) (host: gen.generate { inherit host; });
|
||||||
(hostsByType systemType)
|
|
||||||
(host: gen.generate { inherit host; });
|
|
||||||
in {
|
in {
|
||||||
devShells = import ./shells { inherit inputs; };
|
devShells = import ./shells {
|
||||||
|
inherit inputs mkPkgs;
|
||||||
|
supportedSystems = linuxSystems;
|
||||||
|
};
|
||||||
|
|
||||||
nixosConfigurations = generateHosts "nixos";
|
nixosConfigurations = generateHosts "nixos";
|
||||||
darwinConfigurations = generateHosts "macos";
|
darwinConfigurations = generateHosts "macos";
|
||||||
@@ -76,8 +86,8 @@
|
|||||||
# diyu - ?
|
# diyu - ?
|
||||||
# tirnanog - ?
|
# tirnanog - ?
|
||||||
# valhalla - ?
|
# valhalla - ?
|
||||||
# arcadia - ?
|
# arcadia - ?
|
||||||
# elysium - ?
|
# elysium - ?
|
||||||
# empyrean - ?
|
# empyrean - ?
|
||||||
# duat - ?
|
# duat - ?
|
||||||
# sheol - ?
|
# sheol - ?
|
||||||
|
|||||||
+82
-60
@@ -1,70 +1,92 @@
|
|||||||
{ inputs, ... }: {
|
{ inputs, mkPkgs, supportedSystems, ... }:
|
||||||
|
{
|
||||||
generate = { host }:
|
generate = { host }:
|
||||||
let
|
let
|
||||||
syscfg = import ./systems/${host}/cfg.nix;
|
syscfg = import ./systems/${host}/cfg.nix;
|
||||||
nameValuePair = name: value: { inherit name value; };
|
nameValuePair = name: value: { inherit name value; };
|
||||||
in ({
|
systemType = syscfg.syscfg.type or "nixos";
|
||||||
"nixos" = inputs.nixpkgs.lib.nixosSystem {
|
defaultSystem =
|
||||||
system = "x86_64-linux";
|
{
|
||||||
specialArgs = { inherit inputs; };
|
nixos = "x86_64-linux";
|
||||||
modules = [
|
macos = "x86_64-darwin";
|
||||||
|
home = "x86_64-linux";
|
||||||
|
}
|
||||||
|
.${systemType} or (throw "Unsupported system type: ${systemType}");
|
||||||
|
requestedSystem = syscfg.syscfg.system or defaultSystem;
|
||||||
|
system =
|
||||||
|
if builtins.elem requestedSystem supportedSystems then
|
||||||
|
requestedSystem
|
||||||
|
else
|
||||||
|
throw "Unsupported system '${requestedSystem}' for host '${host}'";
|
||||||
|
users = syscfg.syscfg.users or [ ];
|
||||||
|
mkLinuxHomeImports =
|
||||||
|
userConfig:
|
||||||
|
[
|
||||||
./modules/shared/syscfg
|
./modules/shared/syscfg
|
||||||
./modules/shared/sops
|
./modules/shared/colors
|
||||||
./modules/nixos
|
./modules/home
|
||||||
syscfg
|
syscfg
|
||||||
./systems/${host}
|
{ usercfg = userConfig; }
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.nix-colors.homeManagerModule
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
|
||||||
inputs.nixos-wsl.nixosModules.wsl
|
|
||||||
inputs.vscode-server.nixosModules.default
|
|
||||||
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
|
||||||
home-manager.users = builtins.listToAttrs (map (userConfig:
|
|
||||||
nameValuePair userConfig.username {
|
|
||||||
imports = [
|
|
||||||
./modules/shared/syscfg
|
|
||||||
./modules/shared/colors
|
|
||||||
./modules/home
|
|
||||||
syscfg
|
|
||||||
{ usercfg = userConfig; }
|
|
||||||
inputs.nix-colors.homeManagerModule
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
];
|
|
||||||
}) syscfg.syscfg.users);
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
mkDarwinHomeImports = [ inputs.nix-colors.homeManagerModule inputs.sops-nix.homeManagerModules.sops ];
|
||||||
|
mkHomeUsers = importsForUser:
|
||||||
|
builtins.listToAttrs (
|
||||||
|
map (userConfig: nameValuePair userConfig.username { imports = importsForUser userConfig; }) users
|
||||||
|
);
|
||||||
|
mkHomeManager = importsForUser: {
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = { inherit inputs; };
|
||||||
|
home-manager.users = mkHomeUsers importsForUser;
|
||||||
};
|
};
|
||||||
|
defaultUser =
|
||||||
|
builtins.head (
|
||||||
|
builtins.filter (user: user.username == syscfg.syscfg.defaultUser) users
|
||||||
|
++ [ { username = syscfg.syscfg.defaultUser; } ]
|
||||||
|
);
|
||||||
|
in
|
||||||
|
(
|
||||||
|
{
|
||||||
|
"nixos" = inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
modules = [
|
||||||
|
./modules/shared/syscfg
|
||||||
|
./modules/shared/sops
|
||||||
|
./modules/nixos
|
||||||
|
syscfg
|
||||||
|
./systems/${host}
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
|
||||||
"macos" = inputs.darwin.lib.darwinSystem {
|
inputs.nixos-wsl.nixosModules.wsl
|
||||||
system = "x86_64-darwin";
|
inputs.vscode-server.nixosModules.default
|
||||||
modules = [
|
|
||||||
./modules/shared/syscfg
|
(mkHomeManager mkLinuxHomeImports)
|
||||||
./modules/shared/sops
|
];
|
||||||
syscfg
|
};
|
||||||
./systems/${host}
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
"macos" = inputs.darwin.lib.darwinSystem {
|
||||||
inputs.home-manager.darwinModules.home-manager
|
inherit system;
|
||||||
{
|
modules = [
|
||||||
home-manager.useGlobalPkgs = true;
|
./modules/shared/syscfg
|
||||||
home-manager.useUserPackages = true;
|
./modules/shared/sops
|
||||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
syscfg
|
||||||
home-manager.users = builtins.listToAttrs (map (userConfig:
|
./systems/${host}
|
||||||
nameValuePair userConfig.username {
|
inputs.sops-nix.darwinModules.sops
|
||||||
imports = [
|
inputs.home-manager.darwinModules.home-manager
|
||||||
inputs.nix-colors.homeManagerModule
|
(mkHomeManager (_: mkDarwinHomeImports))
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
];
|
||||||
];
|
};
|
||||||
}) syscfg.syscfg.users);
|
"home" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||||
}
|
pkgs = mkPkgs system;
|
||||||
];
|
extraSpecialArgs = { inherit inputs; };
|
||||||
};
|
modules = mkLinuxHomeImports defaultUser;
|
||||||
"home" = inputs.home-manager.lib.homeManagerConfiguration {
|
};
|
||||||
modules = [ ./modules/home ];
|
_ = throw "Unsupported system";
|
||||||
};
|
}
|
||||||
_ = throw "Unsupported system";
|
.${systemType}
|
||||||
}.${syscfg.syscfg.type});
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,8 @@
|
|||||||
permittedInsecurePackages = [ ];
|
permittedInsecurePackages = [ ];
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
android_sdk.accept_license = true;
|
android_sdk.accept_license = true;
|
||||||
packageOverrides = pkgs: rec {
|
|
||||||
custom = import ../../../../packages { inherit pkgs; };
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
nixpkgs.overlays = import ../../../../overlays { inherit inputs pkgs; };
|
nixpkgs.overlays = import ../../../../overlays { inherit inputs; };
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixVersions.stable;
|
package = pkgs.nixVersions.stable;
|
||||||
extraOptions = ''
|
extraOptions = ''
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
{ inputs, lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
let
|
||||||
systemsDir = ../../../systems;
|
systemsDir = ../../../systems;
|
||||||
systemNames = lib.attrNames (lib.filterAttrs
|
isIgnoredSystemDir = name: lib.hasPrefix "_" name || lib.hasPrefix "." name;
|
||||||
(name: type: type == "directory" && builtins.pathExists (systemsDir + "/${name}/cfg.nix"))
|
systemNames = lib.attrNames (
|
||||||
(builtins.readDir systemsDir));
|
lib.filterAttrs
|
||||||
|
(name: type:
|
||||||
|
type == "directory"
|
||||||
|
&& !isIgnoredSystemDir name
|
||||||
|
&& builtins.pathExists (systemsDir + "/${name}/cfg.nix"))
|
||||||
|
(builtins.readDir systemsDir)
|
||||||
|
);
|
||||||
in with lib; {
|
in with lib; {
|
||||||
options.usercfg = import ./user.nix {inherit lib;};
|
options.usercfg = import ./user.nix {inherit lib;};
|
||||||
options.syscfg = {
|
options.syscfg = {
|
||||||
@@ -14,6 +18,11 @@ in with lib; {
|
|||||||
type = types.enum [ "nixos" "macos" "home" ];
|
type = types.enum [ "nixos" "macos" "home" ];
|
||||||
default = "nixos";
|
default = "nixos";
|
||||||
};
|
};
|
||||||
|
system = mkOption {
|
||||||
|
type = types.enum [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||||
|
default = "x86_64-linux";
|
||||||
|
description = "Nix platform used to evaluate this host.";
|
||||||
|
};
|
||||||
defaultUser = mkOption { type = types.str; };
|
defaultUser = mkOption { type = types.str; };
|
||||||
make = import ./make.nix {inherit lib;};
|
make = import ./make.nix {inherit lib;};
|
||||||
net = import ./net.nix {inherit lib;};
|
net = import ./net.nix {inherit lib;};
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
{ inputs, pkgs, ... }:
|
{ inputs, ... }:
|
||||||
[
|
[
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
#openttd-jgrpp = import ./openttd-jgrpp { inherit final prev; };
|
#openttd-jgrpp = import ./openttd-jgrpp { inherit final prev; };
|
||||||
#yarn-berry = import ./yarn-berry { inherit final prev; };
|
#yarn-berry = import ./yarn-berry { inherit final prev; };
|
||||||
#eww = import ./eww { inherit final prev; };
|
#eww = import ./eww { inherit final prev; };
|
||||||
# ags = import ./ags { inherit final prev; };
|
# ags = import ./ags { inherit final prev; };
|
||||||
|
custom = import ../packages { pkgs = final; };
|
||||||
wine = final.unstable.wineWow64Packages.unstableFull;
|
wine = final.unstable.wineWow64Packages.unstableFull;
|
||||||
unstable = import inputs.nixUnstable {
|
unstable = import inputs.nixUnstable {
|
||||||
|
|
||||||
system = final.stdenv.hostPlatform.system;
|
system = final.stdenv.hostPlatform.system;
|
||||||
stdenv.hostPlatform.system = final.stdenv.hostPlatform.system;
|
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|||||||
+6
-10
@@ -1,13 +1,9 @@
|
|||||||
{ inputs, ... }:
|
{ inputs, mkPkgs, supportedSystems, ... }:
|
||||||
let
|
inputs.nixpkgs.lib.genAttrs supportedSystems (
|
||||||
forEachSystem =
|
system:
|
||||||
inputs.nixpkgs.lib.genAttrs [ "aarch64-linux" "x86_64-linux" ];
|
let pkgs = mkPkgs system;
|
||||||
in forEachSystem (system:
|
|
||||||
let
|
|
||||||
overlays = import ../overlays { inherit inputs pkgs; };
|
|
||||||
overrides = { custom = import ../packages { inherit pkgs; }; };
|
|
||||||
pkgs = import inputs.nixpkgs { inherit system overlays; } // overrides;
|
|
||||||
in {
|
in {
|
||||||
default = import ./devsh { inherit pkgs; };
|
default = import ./devsh { inherit pkgs; };
|
||||||
devsh = import ./devsh { inherit pkgs; };
|
devsh = import ./devsh { inherit pkgs; };
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|||||||
@@ -3,5 +3,6 @@
|
|||||||
hostname = "asgard";
|
hostname = "asgard";
|
||||||
defaultUser = "sora";
|
defaultUser = "sora";
|
||||||
type = "macos";
|
type = "macos";
|
||||||
|
system = "x86_64-darwin";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user