add: more system modules
This commit is contained in:
parent
47eb3e0691
commit
793cc3131c
17 changed files with 291 additions and 56 deletions
|
|
@ -20,5 +20,14 @@
|
|||
pipewire = {
|
||||
enable = lib.mkEnableOption "Enable pipewire module";
|
||||
};
|
||||
networking = {
|
||||
enable = lib.mkEnableOption "Enable networking module";
|
||||
};
|
||||
virtualisation = {
|
||||
enable = lib.mkEnableOption "Enable virtualisation module";
|
||||
};
|
||||
locale = {
|
||||
enable = lib.mkEnableOption "Enable locale module";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,18 @@
|
|||
{ lib, ... }: {
|
||||
i18n = {
|
||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||
supportedLocales = lib.mkDefault [
|
||||
"en_US.UTF-8/UTF-8"
|
||||
];
|
||||
};
|
||||
time.timeZone = lib.mkDefault "Pacific/Auckland";
|
||||
services.geoclue2.enable = true;
|
||||
}
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.locale;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
i18n = {
|
||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||
supportedLocales = lib.mkDefault [
|
||||
"en_US.UTF-8/UTF-8"
|
||||
];
|
||||
};
|
||||
time.timeZone = lib.mkDefault "Pacific/Auckland";
|
||||
services.geoclue2.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,25 @@
|
|||
{ lib, ... }:
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.networking;
|
||||
in
|
||||
|
||||
{
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
dns = "systemd-resolved";
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [57621];
|
||||
|
||||
services = {
|
||||
openssh = {
|
||||
config = lib.mkIf cfg.enable {
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
settings.UseDns = true;
|
||||
dns = "systemd-resolved";
|
||||
};
|
||||
resolved.enable = true;
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [57621];
|
||||
|
||||
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings.UseDns = true;
|
||||
};
|
||||
resolved.enable = true;
|
||||
};
|
||||
|
||||
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
14
system/modules/user/default.nix
Normal file
14
system/modules/user/default.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./shell
|
||||
./ooks.nix
|
||||
];
|
||||
|
||||
options.systemModules.user = {
|
||||
ooks = {
|
||||
enable = lib.mkEnableOption "Enable the user ooks";
|
||||
};
|
||||
};
|
||||
}
|
||||
28
system/modules/user/ooks.nix
Normal file
28
system/modules/user/ooks.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ lib, pkgs, config, ... }:
|
||||
|
||||
let
|
||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
||||
cfg = config.systemModule.user.ooks;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
users.users.ooks = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"audio"
|
||||
] ++ ifTheyExist [
|
||||
"git"
|
||||
"network"
|
||||
"libvirtd"
|
||||
"deluge"
|
||||
];
|
||||
|
||||
packages = [ pkgs.home-manager ];
|
||||
};
|
||||
|
||||
home-manager.users.ooks = import ../../../../home/user/ooks/${config.networking.hostName};
|
||||
};
|
||||
}
|
||||
40
system/modules/user/shell/default.nix
Normal file
40
system/modules/user/shell/default.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.user.shell;
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
./fish
|
||||
# ./bash
|
||||
# ./zsh
|
||||
];
|
||||
|
||||
options.systemModules.user.shell = {
|
||||
fish = {
|
||||
enable = lib.mkEnableOption "Enable fish as the user shell";
|
||||
};
|
||||
zsh = {
|
||||
enable = lib.mkEnableOption "Enable zsh as the user shell";
|
||||
};
|
||||
bash = {
|
||||
enable = lib.mkEnableOption "Enable bash as the user shell";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
(lib.length (lib.filter (x: x) [
|
||||
cfg.fish.enable or false
|
||||
cfg.zsh.enable or false
|
||||
cfg.bash.enable or false
|
||||
]) <= 1);
|
||||
message = "Only one user shell can be active in the configuration";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
19
system/modules/user/shell/fish/default.nix
Normal file
19
system/modules/user/shell/fish/default.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.user.shell.fish;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
users.users.ooks.shell = pkgs.fish;
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
vendor = {
|
||||
completions.enable = true;
|
||||
config.enable = true;
|
||||
functions.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.ooks.shell = pkgs.fish;
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
vendor = {
|
||||
completions.enable = true;
|
||||
config.enable = true;
|
||||
functions.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,28 +1,33 @@
|
|||
{config, pkgs, ... }:
|
||||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemModules.virtualisation;
|
||||
in
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
spice
|
||||
spice-gtk
|
||||
spice-protocol
|
||||
win-virtio
|
||||
win-spice
|
||||
gnome.adwaita-icon-theme
|
||||
];
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
virt-manager
|
||||
virt-viewer
|
||||
spice
|
||||
spice-gtk
|
||||
spice-protocol
|
||||
win-virtio
|
||||
win-spice
|
||||
gnome.adwaita-icon-theme
|
||||
];
|
||||
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
swtpm.enable = true;
|
||||
ovmf.enable = true;
|
||||
ovmf.packages = [ pkgs.OVMFFull.fd ];
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
swtpm.enable = true;
|
||||
ovmf.enable = true;
|
||||
ovmf.packages = [ pkgs.OVMFFull.fd ];
|
||||
};
|
||||
};
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
spiceUSBRedirection.enable = true;
|
||||
services.spice-vdagentd.enable = true;
|
||||
};
|
||||
services.spice-vdagentd.enable = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
17
system/profiles/base/default.nix
Normal file
17
system/profiles/base/default.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemProfile.base;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemModules = {
|
||||
security.enable = true;
|
||||
nixOptions.enable = true;
|
||||
pipewire.enable = true;
|
||||
networking.enable = true;
|
||||
locale.enable = true;
|
||||
}
|
||||
};
|
||||
}
|
||||
40
system/profiles/default.nix
Normal file
40
system/profiles/default.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
profileEnabler = let
|
||||
reducer = l: r: {"${r}".enable = true;} // l;
|
||||
in
|
||||
builtins.foldl' reducer {} config.activeProfiles;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./base
|
||||
./nvidia
|
||||
#./gaming
|
||||
#./laptop
|
||||
];
|
||||
|
||||
options = {
|
||||
activeProfiles = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
};
|
||||
|
||||
systemProfiles = {
|
||||
base = {
|
||||
enable = lib.mkEnableOption "Enable the base profile";
|
||||
};
|
||||
gaming = {
|
||||
enable = lib.mkEnableOption "Enable the gaming profile";
|
||||
};
|
||||
laptop = {
|
||||
enable = lib.mkEnableOption "Enable the laptop profile";
|
||||
};
|
||||
nvidia = {
|
||||
enable = lib.mkEnableOption "Enable the nvidia profile";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config.profiles = profileEnabler;
|
||||
}
|
||||
30
system/profiles/gaming/default.nix
Normal file
30
system/profiles/gaming/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemProfile.gaming;
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.nix-gaming.nixosModules.pipewireLowLatency
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.opengl.extraPackages = [ pkgs.gamescope ];
|
||||
programs = {
|
||||
steam.enable = true;
|
||||
gamescope = {
|
||||
enable = true;
|
||||
capsSysNice = true;
|
||||
};
|
||||
gamemode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
softrealtime = "auto";
|
||||
renice = 15;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.pipewire.lowLatency.enable = true;
|
||||
};
|
||||
}
|
||||
29
system/profiles/nvidia/default.nix
Normal file
29
system/profiles/nvidia/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.systemProfile.nvidia;
|
||||
production = config.boot.kernelPackages.nvidiaPackages.production;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
harware.nvidia = {
|
||||
open = true;
|
||||
package = production;
|
||||
modesetting.enable = true;
|
||||
nvidiaSettings = true;
|
||||
powerManagement.enable = false;
|
||||
};
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
environment.sessionVariables = {
|
||||
LIBVA_DRIVER_NAME = "nvidia";
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
vulkan-tools
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue