Skip to content

Instantly share code, notes, and snippets.

@s1341
Created August 15, 2023 06:20
Show Gist options
  • Save s1341/05b3d9c5d1405597bcb26216711d8f64 to your computer and use it in GitHub Desktop.
Save s1341/05b3d9c5d1405597bcb26216711d8f64 to your computer and use it in GitHub Desktop.
nixos host config flake
{ system, pkgs, home-manager, inputs, lib, user, ... }:
{
mkHost =
{ name
, vlan20nic
, initrdMods
, kernelMods
, kernelParams
, kernelPackage
, systemConfig
, cpuCores
, users
, wifi ? [ ]
, gpuTempSensor ? null
, cpuTempSensor ? null
, extraModules
}:
let
# networkCfg = builtins.listToAttrs (map
# (n: {
# name = "${n}";
# value = { useDHCP = true; };
# })
# nics);
userCfg = {
inherit name vlan20nic systemConfig cpuCores gpuTempSensor cpuTempSensor;
};
sys_users = (map (u: user.mkSystemUser u) users);
in
lib.nixosSystem {
inherit system;
modules = [
home-manager.nixosModules.home-manager
{
imports = [ home-manager.nixosModules.home-manager ../modules/system ../services ] ++ sys_users ++ extraModules;
environment.etc = {
"homemanagersystemdata.json".text = builtins.toJSON userCfg;
};
home-manager.users = (lib.listToAttrs (map
(u:
{
name = "${u.name}";
value =
u.userConfig //
{
# nixpkgs.overlays = overlays;
nixpkgs.config.allowUnfree = true;
systemd.user.startServices = true;
home.stateVersion = "22.05";
home.username = name;
home.homeDirectory = "/home/${u.name}";
imports = [
../modules/users
inputs.nix-colors.homeManagerModules.default
];
};
}
)
users));
home-manager.extraSpecialArgs = [ inputs.nix-colors inputs ];
networking.hostName = "${name}";
networking.domain = "local";
# workaround to get fqdn to work
services.nscd.enableNsncd = false;
networking.interfaces.vlan20nic.useDHCP = false;
networking.vlans = {
vlan20 = {
id = 20;
interface = vlan20nic;
};
};
networking.interfaces.vlan20.useDHCP = true;
networking.wireless.interfaces = wifi;
networking.networkmanager = {
enable = true;
unmanaged = [ vlan20nic ];
};
networking.useDHCP = false;
boot.initrd.availableKernelModules = initrdMods;
boot.kernelModules = kernelMods;
boot.kernelParams = kernelParams;
boot.kernelPackages = kernelPackage;
nixpkgs.pkgs = pkgs;
nix.settings.max-jobs = lib.mkDefault cpuCores;
programs.zsh.enable = true;
system.stateVersion = "22.05";
}
inputs.agenix.nixosModules.age
];
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment