Modularize machines>roles

This commit is contained in:
2024-09-07 16:12:08 -07:00
parent 5571ac8657
commit c61ee69500
11 changed files with 186 additions and 294 deletions

24
roles/common/default.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, ... }:
{
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
time.timeZone = "America/Los_Angeles";
# Enable the OpenSSH daemon.
services.openssh.enable = true;
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
];
}

51
roles/desktop/default.nix Normal file
View File

@@ -0,0 +1,51 @@
{ inputs, x11Only ? false, pkgs, ... }:
{
services.xserver.xkb = {
layout = "us";
variant = "";
options = "caps:escape";
};
services.xserver.enable = true;
services.displayManager = {
sddm.enable = true;
sddm.wayland.enable = !x11Only;
};
services.desktopManager.plasma6.enable = true;
programs.hyprland = {
enable = !x11Only;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
services.xserver.windowManager.i3 = {
enable = true;
extraPackages = with pkgs; [
dmenu
i3status
i3lock
];
};
# Helps with i3. Not sure what dconf is though honestly
programs.dconf.enable = true;
programs.kdeconnect.enable = true;
programs.java.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
#package = pkgs.steam.override {
#withJava = true;
#withPrimus = true;
#extraPkgs = pkgs: [ bumblebee glxinfo ];
#};
};
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
openFirewall = true;
};
virtualisation.docker.enable = true;
users.extraGroups.docker.members = [ "johno" ];
}

29
roles/kids/default.nix Normal file
View File

@@ -0,0 +1,29 @@
{ pkgs, ... }:
let
kidsPackages = with pkgs; [
firefox
];
in
{
users.users.eli = {
isNormalUser = true;
description = "Eli";
home = "/home/eli";
packages = kidsPackages;
};
users.users.andrew = {
isNormalUser = true;
description = "Andrew";
home = "/home/andrew";
packages = kidsPackages;
};
users.users.jules = {
isNormalUser = true;
description = "Jules";
home = "/home/jules";
packages = kidsPackages;
};
}

View File

@@ -1,4 +1,5 @@
{ config, ... }:
# TODO: implement requireMount
{ requireMount ? false, ... }:
{
fileSystems."/media" = {

29
roles/nix/default.nix Normal file
View File

@@ -0,0 +1,29 @@
{ config, pkgs, ... }:
{
nix = {
package = pkgs.nixFlakes;
distributedBuilds = true;
buildMachines = [{
hostName = "z790prors.oglehome";
system = "x86_64-linux";
protocol = "ssh-ng";
sshUser = "johno";
sshKey = "/root/.ssh/id_ed25519";
maxJobs = 3;
speedFactor = 2;
}];
settings = {
experimental-features = [ "nix-command" "flakes" ];
max-jobs = "auto";
trusted-users = [ "johno" ];
substituters = [
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
};
};
nixpkgs.config.allowUnfree = true;
}

View File

@@ -0,0 +1,4 @@
{ ... }:
{
services.printing.enable = true;
}

8
roles/users/default.nix Normal file
View File

@@ -0,0 +1,8 @@
{ extraGroups ? [], ... }:
{
users.users.johno = {
isNormalUser = true;
description = "John Ogle";
extraGroups = [ "wheel" "networkmanager" "audio" ] ++ extraGroups;
};
}