plasma
This commit is contained in:
@@ -1,48 +1,20 @@
|
||||
{
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
nixSettings = lib.${namespace}.nixSettings;
|
||||
in
|
||||
{
|
||||
nix = {
|
||||
settings = {
|
||||
# extra-sandbox-paths = [ config.programs.ccache.cacheDir ];
|
||||
substituters = [
|
||||
"http://jallen-nas.local:9012/nas-cache"
|
||||
"https://nixos-apple-silicon.cachix.org"
|
||||
"https://nixos-raspberrypi.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nas-cache:eK0eRVAt9QNwbkLIyOo9N5Z5+zi6ukI4mSlL196C7Yg="
|
||||
"nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
|
||||
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
warn-dirty = lib.mkForce false;
|
||||
experimental-features = lib.mkForce [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
trusted-users = [
|
||||
"@wheel"
|
||||
"@admin"
|
||||
];
|
||||
|
||||
builders-use-substitutes = true;
|
||||
connect-timeout = lib.mkDefault 5;
|
||||
fallback = true;
|
||||
log-lines = lib.mkDefault 25;
|
||||
|
||||
max-free = lib.mkDefault (3000 * 1024 * 1024);
|
||||
min-free = lib.mkDefault (512 * 1024 * 1024);
|
||||
};
|
||||
# Garbage collect automatically every week
|
||||
gc = {
|
||||
automatic = lib.mkDefault true;
|
||||
options = lib.mkDefault "--delete-older-than 30d";
|
||||
settings = nixSettings.commonSettings // {
|
||||
substituters = nixSettings.commonSubstituters;
|
||||
trusted-public-keys = nixSettings.commonTrustedPublicKeys;
|
||||
};
|
||||
|
||||
gc = nixSettings.commonGc;
|
||||
|
||||
optimise.automatic = lib.mkDefault true;
|
||||
};
|
||||
|
||||
|
||||
90
modules/home/desktop/plasma/default.nix
Normal file
90
modules/home/desktop/plasma/default.nix
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.plasma;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs.kdePackages; [
|
||||
plasma-browser-integration
|
||||
kdeplasma-addons
|
||||
];
|
||||
|
||||
programs.plasma = {
|
||||
enable = true;
|
||||
|
||||
workspace = {
|
||||
colorScheme = "BreezeDark";
|
||||
cursor = {
|
||||
theme = "breeze_cursors";
|
||||
size = 24;
|
||||
};
|
||||
iconTheme = "breeze-dark";
|
||||
theme = "breeze-dark";
|
||||
lookAndFeel = "org.kde.breezedark.desktop";
|
||||
};
|
||||
|
||||
# input.mice and input.touchpads require device-specific vendorId/productId
|
||||
# identifiers — configure those per-host in the home config instead.
|
||||
|
||||
kscreenlocker = {
|
||||
autoLock = true;
|
||||
timeout = 10;
|
||||
};
|
||||
|
||||
kwin = {
|
||||
effects = {
|
||||
shakeCursor.enable = false;
|
||||
};
|
||||
nightLight = {
|
||||
enable = true;
|
||||
mode = "constant";
|
||||
temperature = {
|
||||
day = 6500;
|
||||
night = 3500;
|
||||
};
|
||||
};
|
||||
virtualDesktops = {
|
||||
number = 4;
|
||||
rows = 1;
|
||||
};
|
||||
};
|
||||
|
||||
panels = [
|
||||
{
|
||||
location = "bottom";
|
||||
floating = true;
|
||||
height = 44;
|
||||
widgets = [
|
||||
"org.kde.plasma.kickoff"
|
||||
"org.kde.plasma.icontasks"
|
||||
"org.kde.plasma.marginsseparator"
|
||||
"org.kde.plasma.systemtray"
|
||||
"org.kde.plasma.digitalclock"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
shortcuts = {
|
||||
kwin = {
|
||||
"Switch to Desktop 1" = "Meta+1";
|
||||
"Switch to Desktop 2" = "Meta+2";
|
||||
"Switch to Desktop 3" = "Meta+3";
|
||||
"Switch to Desktop 4" = "Meta+4";
|
||||
"Window to Desktop 1" = "Meta+Shift+1";
|
||||
"Window to Desktop 2" = "Meta+Shift+2";
|
||||
"Window to Desktop 3" = "Meta+Shift+3";
|
||||
"Window to Desktop 4" = "Meta+Shift+4";
|
||||
"Toggle Overview" = "Meta+Tab";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
7
modules/home/desktop/plasma/options.nix
Normal file
7
modules/home/desktop/plasma/options.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ lib, namespace, ... }:
|
||||
with lib;
|
||||
{
|
||||
options.${namespace}.desktop.plasma = {
|
||||
enable = mkEnableOption "KDE Plasma 6 home-manager configuration via plasma-manager";
|
||||
};
|
||||
}
|
||||
@@ -1,21 +1,20 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.cosmic;
|
||||
in
|
||||
{
|
||||
options.${namespace}.desktop.cosmic = {
|
||||
enable = lib.mkEnableOption "enable cosmic settings";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
desktopManager.cosmic.enable = true;
|
||||
displayManager.cosmic-greeter.enable = true;
|
||||
};
|
||||
};
|
||||
# TODO: COSMIC DE has an active bug that prevents it from being used.
|
||||
# Re-enable once upstream fixes land:
|
||||
# config = lib.mkIf config.${namespace}.desktop.cosmic.enable {
|
||||
# services = {
|
||||
# desktopManager.cosmic.enable = true;
|
||||
# displayManager.cosmic-greeter.enable = true;
|
||||
# };
|
||||
# };
|
||||
config = { };
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.${namespace}) enabled disabled;
|
||||
inherit (lib.${namespace}) enabled disabled mkBoolOpt;
|
||||
cfg = config.${namespace}.desktop.gnome;
|
||||
in
|
||||
{
|
||||
options.${namespace}.desktop.gnome = {
|
||||
enable = lib.mkEnableOption "GNOME desktop environment";
|
||||
|
||||
vscodium.enable = mkBoolOpt false "Set VSCodium as the default EDITOR/VISUAL";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
@@ -53,5 +55,10 @@ in
|
||||
enable = false;
|
||||
package = pkgs.gnomeExtensions.gsconnect;
|
||||
};
|
||||
|
||||
environment.variables = lib.mkIf cfg.vscodium.enable {
|
||||
EDITOR = "${lib.getExe' pkgs.vscodium "codium"} --wait";
|
||||
VISUAL = "${lib.getExe' pkgs.vscodium "codium"} --wait";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
30
modules/nixos/desktop/plasma/default.nix
Normal file
30
modules/nixos/desktop/plasma/default.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.${namespace}) mkBoolOpt;
|
||||
cfg = config.${namespace}.desktop.plasma;
|
||||
in
|
||||
{
|
||||
options.${namespace}.desktop.plasma = {
|
||||
enable = lib.mkEnableOption "KDE Plasma 6 desktop environment";
|
||||
|
||||
wayland.enable = mkBoolOpt true "Use the Wayland session (default) instead of X11";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
desktopManager.plasma6.enable = true;
|
||||
|
||||
displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = cfg.wayland.enable;
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal.extraPortals = [ ];
|
||||
};
|
||||
}
|
||||
@@ -10,7 +10,8 @@ let
|
||||
hasDesktop =
|
||||
config.${namespace}.desktop.gnome.enable
|
||||
|| config.${namespace}.desktop.hyprland.enable
|
||||
|| config.${namespace}.desktop.cosmic.enable;
|
||||
|| config.${namespace}.desktop.cosmic.enable
|
||||
|| config.${namespace}.desktop.plasma.enable;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
@@ -19,7 +20,7 @@ in
|
||||
assertions = [
|
||||
{
|
||||
assertion = hasDesktop;
|
||||
message = "mjallen.gaming.enable requires a desktop environment (gnome, hyprland, or cosmic) to be enabled.";
|
||||
message = "mjallen.gaming.enable requires a desktop environment (gnome, hyprland, cosmic, or plasma) to be enabled.";
|
||||
}
|
||||
];
|
||||
# Network option required using sysctl to let Ubisoft Connect work as of 7-12-2023
|
||||
|
||||
@@ -14,6 +14,8 @@ in
|
||||
options.${namespace}.hardware.amd = {
|
||||
enable = mkEnableOption "AMD hardware configuration";
|
||||
|
||||
coolercontrol.enable = mkBoolOpt false "Enable CoolerControl fan/cooling control";
|
||||
|
||||
corectrl.enable = mkBoolOpt false "Enable CoreCtrl GPU control";
|
||||
corectrl.enablePolkit = mkBoolOpt false "Enable CoreCtrl polkit rules";
|
||||
corectrl.polkitGroup = mkOpt types.str "wheel" "Group allowed to use CoreCtrl without password";
|
||||
@@ -46,6 +48,8 @@ in
|
||||
package = pkgs.corectrl;
|
||||
};
|
||||
|
||||
programs.coolercontrol.enable = lib.mkIf cfg.coolercontrol.enable true;
|
||||
|
||||
environment = {
|
||||
variables = {
|
||||
AMD_VULKAN_ICD = "RADV";
|
||||
|
||||
@@ -20,8 +20,9 @@ in
|
||||
assertion =
|
||||
!config.${namespace}.desktop.gnome.enable
|
||||
&& !config.${namespace}.desktop.hyprland.enable
|
||||
&& !config.${namespace}.desktop.cosmic.enable;
|
||||
message = "mjallen.headless.enable = true is incompatible with having a desktop environment enabled (gnome, hyprland, or cosmic).";
|
||||
&& !config.${namespace}.desktop.cosmic.enable
|
||||
&& !config.${namespace}.desktop.plasma.enable;
|
||||
message = "mjallen.headless.enable = true is incompatible with having a desktop environment enabled (gnome, hyprland, cosmic, or plasma).";
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -4,16 +4,14 @@
|
||||
options,
|
||||
namespace,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
isArm = ("aarch64-linux" == system) || ("aarch64-darwin" == system);
|
||||
isDarwin = ("aarch64-darwin" == system);
|
||||
hasDestopEnvironment =
|
||||
config.${namespace}.desktop.cosmic.enable
|
||||
|| config.${namespace}.desktop.gnome.enable
|
||||
|| config.${namespace}.desktop.hyprland.enable;
|
||||
|| config.${namespace}.desktop.hyprland.enable
|
||||
|| config.${namespace}.desktop.plasma.enable;
|
||||
in
|
||||
{
|
||||
|
||||
@@ -42,6 +40,7 @@ in
|
||||
config.${namespace}.desktop.gnome.enable
|
||||
config.${namespace}.desktop.hyprland.enable
|
||||
config.${namespace}.desktop.cosmic.enable
|
||||
config.${namespace}.desktop.plasma.enable
|
||||
];
|
||||
in
|
||||
[
|
||||
@@ -54,6 +53,7 @@ in
|
||||
lib.optional config.${namespace}.desktop.gnome.enable "gnome"
|
||||
++ lib.optional config.${namespace}.desktop.hyprland.enable "hyprland"
|
||||
++ lib.optional config.${namespace}.desktop.cosmic.enable "cosmic"
|
||||
++ lib.optional config.${namespace}.desktop.plasma.enable "plasma"
|
||||
)
|
||||
}.
|
||||
'';
|
||||
@@ -79,19 +79,6 @@ in
|
||||
inherit inputs namespace hasDestopEnvironment;
|
||||
};
|
||||
|
||||
# Make ALL external HM modules available globally
|
||||
sharedModules =
|
||||
with inputs;
|
||||
[
|
||||
sops-nix.homeManagerModules.sops
|
||||
nix-plist-manager.homeManagerModules.default
|
||||
nix-index-database.homeModules.nix-index
|
||||
stylix.homeModules.stylix
|
||||
# Add any other external HM modules here
|
||||
]
|
||||
++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ])
|
||||
++ (if (isDarwin) then with inputs; [ ] else [ ]);
|
||||
|
||||
users.${config.${namespace}.user.name} =
|
||||
lib.mkAliasDefinitions
|
||||
options.${namespace}.home.extraOptions;
|
||||
|
||||
@@ -50,6 +50,9 @@ in
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# /etc must be available before the impermanence bind-mounts are set up.
|
||||
fileSystems."/etc".neededForBoot = true;
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = lib.hasPrefix "/" cfg.persistencePath;
|
||||
|
||||
@@ -87,6 +87,7 @@ in
|
||||
systemd = {
|
||||
services = {
|
||||
NetworkManager-wait-online.enable = false;
|
||||
systemd-networkd-wait-online.enable = lib.mkForce false;
|
||||
systemd-networkd.stopIfChanged = false;
|
||||
systemd-resolved.stopIfChanged = false;
|
||||
};
|
||||
@@ -139,43 +140,39 @@ in
|
||||
extraCommands = lib.mkIf (cfg.extraFirewallCommands != "") cfg.extraFirewallCommands;
|
||||
};
|
||||
|
||||
# Configure iwd if enabled
|
||||
# Enable iwd daemon when requested.
|
||||
# When iwd is enabled alongside NetworkManager, iwd acts as the WiFi
|
||||
# backend for NM (iwd handles scanning/association; NM handles
|
||||
# connection management). They are not mutually exclusive.
|
||||
wireless.iwd = lib.mkIf cfg.iwd.enable {
|
||||
enable = true;
|
||||
settings = cfg.iwd.settings;
|
||||
};
|
||||
|
||||
# Configure NetworkManager
|
||||
networkmanager = mkMerge [
|
||||
# Disable NetworkManager when iwd is enabled
|
||||
(mkIf cfg.iwd.enable {
|
||||
enable = mkForce false;
|
||||
wifi.backend = mkForce "iwd";
|
||||
})
|
||||
# Configure NetworkManager when enabled
|
||||
networkmanager = mkIf cfg.networkmanager.enable {
|
||||
enable = true;
|
||||
# Use iwd as the WiFi backend when iwd is also enabled
|
||||
wifi.backend = mkIf cfg.iwd.enable "iwd";
|
||||
wifi.powersave = cfg.networkmanager.powersave;
|
||||
settings.connectivity.uri = mkDefault "http://nmcheck.gnome.org/check_network_status.txt";
|
||||
plugins = with pkgs; [
|
||||
networkmanager-fortisslvpn
|
||||
networkmanager-iodine
|
||||
networkmanager-l2tp
|
||||
networkmanager-openconnect
|
||||
networkmanager-openvpn
|
||||
networkmanager-sstp
|
||||
networkmanager-strongswan
|
||||
networkmanager-vpnc
|
||||
];
|
||||
|
||||
# Enable NetworkManager when wifi is enabled and iwd is disabled
|
||||
(mkIf (cfg.networkmanager.enable && !cfg.iwd.enable) {
|
||||
enable = true;
|
||||
wifi.powersave = cfg.networkmanager.powersave;
|
||||
settings.connectivity.uri = mkDefault "http://nmcheck.gnome.org/check_network_status.txt";
|
||||
plugins = with pkgs; [
|
||||
networkmanager-fortisslvpn
|
||||
networkmanager-iodine
|
||||
networkmanager-l2tp
|
||||
networkmanager-openconnect
|
||||
networkmanager-openvpn
|
||||
networkmanager-sstp
|
||||
networkmanager-strongswan
|
||||
networkmanager-vpnc
|
||||
];
|
||||
|
||||
# Configure WiFi profiles if any are defined
|
||||
ensureProfiles = mkIf (cfg.networkmanager.profiles != { }) {
|
||||
environmentFiles = lib.optional (config.sops.secrets ? wifi) config.sops.secrets.wifi.path;
|
||||
profiles = profiles;
|
||||
};
|
||||
})
|
||||
];
|
||||
# Configure WiFi profiles if any are defined
|
||||
ensureProfiles = mkIf (cfg.networkmanager.profiles != { }) {
|
||||
environmentFiles = lib.optional (config.sops.secrets ? wifi) config.sops.secrets.wifi.path;
|
||||
profiles = profiles;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,57 +4,36 @@
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
nixSettings = lib.${namespace}.nixSettings;
|
||||
in
|
||||
{
|
||||
nix = {
|
||||
settings = {
|
||||
settings = nixSettings.commonSettings // {
|
||||
# extra-sandbox-paths = [ config.programs.ccache.cacheDir ];
|
||||
substituters = [
|
||||
# NixOS-only: lantian attic cache (has some useful packages)
|
||||
"https://attic.xuyh0120.win/lantian"
|
||||
"http://jallen-nas.local:9012/nas-cache"
|
||||
"https://nixos-apple-silicon.cachix.org"
|
||||
"https://nixos-raspberrypi.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
];
|
||||
]
|
||||
++ nixSettings.commonSubstituters;
|
||||
trusted-public-keys = [
|
||||
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
|
||||
"nas-cache:eK0eRVAt9QNwbkLIyOo9N5Z5+zi6ukI4mSlL196C7Yg="
|
||||
"nixos-apple-silicon.cachix.org-1:8psDu5SA5dAD7qA0zMy5UT292TxeEPzIz8VVEr2Js20="
|
||||
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
warn-dirty = lib.mkForce false;
|
||||
experimental-features = lib.mkForce [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
trusted-users = [
|
||||
"@wheel"
|
||||
"@admin"
|
||||
];
|
||||
|
||||
builders-use-substitutes = true;
|
||||
connect-timeout = lib.mkDefault 5;
|
||||
fallback = true;
|
||||
log-lines = lib.mkDefault 25;
|
||||
|
||||
max-free = lib.mkDefault (3000 * 1024 * 1024);
|
||||
min-free = lib.mkDefault (512 * 1024 * 1024);
|
||||
]
|
||||
++ nixSettings.commonTrustedPublicKeys;
|
||||
};
|
||||
|
||||
# Linux-specific: run the nix daemon at idle priority to avoid impacting
|
||||
# interactive work during builds.
|
||||
daemonCPUSchedPolicy = lib.mkDefault "idle";
|
||||
daemonIOSchedClass = lib.mkDefault "idle";
|
||||
daemonIOSchedPriority = lib.mkDefault 7;
|
||||
|
||||
# Garbage collect automatically every week
|
||||
gc = {
|
||||
automatic = lib.mkDefault true;
|
||||
options = lib.mkDefault "--delete-older-than 30d";
|
||||
};
|
||||
gc = nixSettings.commonGc;
|
||||
|
||||
optimise.automatic = lib.mkDefault true;
|
||||
};
|
||||
|
||||
# Give the nix-gc systemd unit the same idle-IO treatment as the daemon.
|
||||
systemd.services.nix-gc.serviceConfig = {
|
||||
CPUSchedulingPolicy = "batch";
|
||||
IOSchedulingClass = "idle";
|
||||
|
||||
@@ -24,6 +24,9 @@ let
|
||||
isLighthouse = lib.${namespace}.mkBoolOpt false "Act as a Nebula lighthouse";
|
||||
isRelay = lib.${namespace}.mkBoolOpt false "Act as a Nebula relay node";
|
||||
|
||||
# Override the mkModule port default (80) with the nebula default (4242).
|
||||
port = lib.${namespace}.mkOpt types.port 4242 "UDP port nebula listens on";
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# Network identity
|
||||
# -----------------------------------------------------------------------
|
||||
@@ -66,13 +69,13 @@ let
|
||||
# -----------------------------------------------------------------------
|
||||
# Peer addressing (ignored on lighthouse nodes)
|
||||
# -----------------------------------------------------------------------
|
||||
lighthouses =
|
||||
lib.${namespace}.mkOpt (types.listOf types.str) [ ]
|
||||
"Nebula overlay IPs of lighthouse nodes (leave empty on lighthouses)";
|
||||
lighthouses = lib.${namespace}.mkOpt (types.listOf types.str) [
|
||||
"10.1.1.1"
|
||||
] "Nebula overlay IPs of lighthouse nodes (leave empty on lighthouses)";
|
||||
|
||||
staticHostMap = lib.${namespace}.mkOpt (types.attrsOf (
|
||||
types.listOf types.str
|
||||
)) { } "Static host map: overlay IP → list of public addr:port strings";
|
||||
staticHostMap = lib.${namespace}.mkOpt (types.attrsOf (types.listOf types.str)) {
|
||||
"10.1.1.1" = [ "mjallen.dev:4242" ];
|
||||
} "Static host map: overlay IP → list of public addr:port strings";
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# Firewall rules inside the overlay
|
||||
|
||||
@@ -1,55 +1,68 @@
|
||||
{ pkgs, system, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
timezone = "America/Chicago";
|
||||
inherit (lib.${namespace}) mkOpt;
|
||||
cfg = config.${namespace}.system;
|
||||
isArm = system == "aarch64-linux";
|
||||
in
|
||||
{
|
||||
options.${namespace}.system = {
|
||||
timezone = mkOpt lib.types.str "America/Chicago" "System timezone (e.g. \"America/New_York\").";
|
||||
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
brightnessctl
|
||||
dconf
|
||||
disko
|
||||
kdiskmark
|
||||
nil
|
||||
nix-output-monitor
|
||||
nixos-anywhere
|
||||
qemu
|
||||
udisks2
|
||||
unzip
|
||||
]
|
||||
++ (
|
||||
if isArm then
|
||||
[ ]
|
||||
else
|
||||
[
|
||||
acpilight
|
||||
aha
|
||||
aspell
|
||||
aspellDicts.en
|
||||
aspellDicts.en-computers
|
||||
aspellDicts.en-science
|
||||
ddcui
|
||||
ddcutil
|
||||
ddccontrol
|
||||
ddccontrol-db
|
||||
efibootmgr
|
||||
memtest86-efi
|
||||
memtest86plus
|
||||
os-prober
|
||||
sbctl
|
||||
tpm2-tools
|
||||
tpm2-tss
|
||||
winetricks
|
||||
]
|
||||
);
|
||||
|
||||
# Time config
|
||||
time = {
|
||||
# Set your time zone.
|
||||
timeZone = timezone;
|
||||
stateVersion =
|
||||
mkOpt lib.types.str "23.11"
|
||||
"NixOS state version. Should match the version in use when the system was first installed.";
|
||||
};
|
||||
|
||||
system.stateVersion = "23.11";
|
||||
config = {
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
brightnessctl
|
||||
dconf
|
||||
disko
|
||||
kdiskmark
|
||||
nil
|
||||
nix-output-monitor
|
||||
nixos-anywhere
|
||||
qemu
|
||||
udisks2
|
||||
unzip
|
||||
]
|
||||
++ (
|
||||
if isArm then
|
||||
[ ]
|
||||
else
|
||||
[
|
||||
acpilight
|
||||
aha
|
||||
aspell
|
||||
aspellDicts.en
|
||||
aspellDicts.en-computers
|
||||
aspellDicts.en-science
|
||||
ddcui
|
||||
ddcutil
|
||||
ddccontrol
|
||||
ddccontrol-db
|
||||
efibootmgr
|
||||
memtest86-efi
|
||||
memtest86plus
|
||||
os-prober
|
||||
sbctl
|
||||
tpm2-tools
|
||||
tpm2-tss
|
||||
winetricks
|
||||
]
|
||||
);
|
||||
|
||||
time.timeZone = cfg.timezone;
|
||||
|
||||
system.stateVersion = cfg.stateVersion;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user