add: more system modules
This commit is contained in:
parent
47eb3e0691
commit
793cc3131c
17 changed files with 291 additions and 56 deletions
|
|
@ -42,6 +42,8 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,14 @@
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = lib.mkEnableOption "Enable pipewire module";
|
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,4 +1,11 @@
|
||||||
{ lib, ... }: {
|
{ lib, config, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.systemModules.locale;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
i18n = {
|
i18n = {
|
||||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
||||||
supportedLocales = lib.mkDefault [
|
supportedLocales = lib.mkDefault [
|
||||||
|
|
@ -7,5 +14,5 @@
|
||||||
};
|
};
|
||||||
time.timeZone = lib.mkDefault "Pacific/Auckland";
|
time.timeZone = lib.mkDefault "Pacific/Auckland";
|
||||||
services.geoclue2.enable = true;
|
services.geoclue2.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
{ lib, ... }:
|
{ lib, config, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.systemModules.networking;
|
||||||
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
networking.networkmanager = {
|
networking.networkmanager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dns = "systemd-resolved";
|
dns = "systemd-resolved";
|
||||||
|
|
@ -15,4 +21,5 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
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,6 +1,11 @@
|
||||||
{config, pkgs, ... }:
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.systemModules.virtualisation;
|
||||||
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
virt-manager
|
virt-manager
|
||||||
virt-viewer
|
virt-viewer
|
||||||
|
|
@ -24,5 +29,5 @@
|
||||||
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