mirror of
https://github.com/ItsDrike/nixdots
synced 2024-12-25 17:54:35 +00:00
Use roles properly
Originally, I was including all role configurations for all hosts, and controlling which get applied in the role configs with a check in each file. This is a very repetetive and annoying approach. Instead, now the role directory is included manually from the hosts config for devices which meet that role, removing the role options.
This commit is contained in:
parent
c6c3ecb1e9
commit
00016063fe
|
@ -1,15 +1,5 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
osConfig,
|
# TODO: Only apply this to workstations
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
|
|
||||||
devType = osConfig.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem devType acceptedTypes) {
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
libnotify # send desktop notifications
|
libnotify # send desktop notifications
|
||||||
imagemagick # create/edit images
|
imagemagick # create/edit images
|
||||||
|
@ -22,5 +12,4 @@ in {
|
||||||
glow # render markdown
|
glow # render markdown
|
||||||
ffmpeg # record, convert and stream audio and video
|
ffmpeg # record, convert and stream audio and video
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,14 @@
|
||||||
|
|
||||||
# A list of shared modules that ALL systems need
|
# A list of shared modules that ALL systems need
|
||||||
shared = [
|
shared = [
|
||||||
../system
|
../system/shared
|
||||||
../home
|
../home
|
||||||
../options
|
../options
|
||||||
];
|
];
|
||||||
|
|
||||||
|
workstationRole = ../system/roles/workstation;
|
||||||
|
laptopRole = ../system/roles/laptop;
|
||||||
|
uniRole = ../system/roles/uni;
|
||||||
in {
|
in {
|
||||||
herugrim = lib.nixosSystem {
|
herugrim = lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
@ -18,6 +22,8 @@ in {
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
workstationRole
|
||||||
|
laptopRole
|
||||||
]
|
]
|
||||||
++ shared;
|
++ shared;
|
||||||
};
|
};
|
||||||
|
@ -31,6 +37,9 @@ in {
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
workstationRole
|
||||||
|
laptopRole
|
||||||
|
uniRole
|
||||||
]
|
]
|
||||||
++ shared;
|
++ shared;
|
||||||
};
|
};
|
||||||
|
|
|
@ -143,11 +143,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
device = {
|
device = {
|
||||||
roles = {
|
roles.virtual-machine = false;
|
||||||
type = "laptop";
|
|
||||||
virtual-machine = false;
|
|
||||||
isUniMachine = true;
|
|
||||||
};
|
|
||||||
cpu.type = "amd";
|
cpu.type = "amd";
|
||||||
gpu.type = "amd";
|
gpu.type = "amd";
|
||||||
hasTPM = true;
|
hasTPM = true;
|
||||||
|
|
|
@ -1,49 +1,11 @@
|
||||||
{
|
{lib, ...}: let
|
||||||
lib,
|
inherit (lib) mkOption;
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
|
|
||||||
cfg = config.myOptions.device.roles;
|
|
||||||
in {
|
in {
|
||||||
options.myOptions.device.roles = {
|
options.myOptions.device.roles = {
|
||||||
type = mkOption {
|
|
||||||
type = types.enum ["laptop" "desktop" "server"];
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
The type/purpoes of the device that will be used within the rest of the configuration.
|
|
||||||
- laptop: portable devices with battery optimizations
|
|
||||||
- desktop: stationary devices configured for maximum performance
|
|
||||||
- server: server and infrastructure
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
virtual-machine = mkOption {
|
virtual-machine = mkOption {
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = "Is this system a virtual machine?";
|
description = "Is this system a virtual machine?";
|
||||||
};
|
};
|
||||||
|
|
||||||
isWorkstation = mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = builtins.elem cfg.type ["laptop" "desktop"];
|
|
||||||
readOnly = true;
|
|
||||||
description = ''
|
|
||||||
Is this machine a workstation?
|
|
||||||
|
|
||||||
Workstation machines are meant for regular day-to-day use.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
isUniMachine = mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Should University specific configuration be applied?
|
|
||||||
|
|
||||||
(Things like University specific software, etc.)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
# We import all of the roles here, with the type checks being handled
|
|
||||||
# in the individual files each time. This is a bit ugly, but necessary
|
|
||||||
# as NixOS doesn't support optional imports, due to circual imports
|
|
||||||
# (there might be a change of the config value inside one of the
|
|
||||||
# imported files).
|
|
||||||
imports = [
|
|
||||||
./workstation
|
|
||||||
./laptop
|
|
||||||
./uni
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,14 +1,8 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
hardware.acpilight.enable = true;
|
hardware.acpilight.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [acpi];
|
environment.systemPackages = with pkgs; [acpi];
|
||||||
|
@ -23,5 +17,4 @@ in {
|
||||||
cpupower
|
cpupower
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop"];
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./power-profiles-daemon
|
./power-profiles-daemon
|
||||||
./upower.nix
|
./upower.nix
|
||||||
|
@ -15,7 +6,7 @@ in {
|
||||||
./systemd.nix
|
./systemd.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
config = {
|
||||||
environment.systemPackages = with pkgs; [powertop];
|
environment.systemPackages = with pkgs; [powertop];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,11 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (lib.modules) mkForce;
|
inherit (lib.modules) mkForce;
|
||||||
inherit (lib.strings) makeBinPath;
|
inherit (lib.strings) makeBinPath;
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop"];
|
|
||||||
in {
|
in {
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# allows changing system behavior based upon user-selected power profiles
|
# allows changing system behavior based upon user-selected power profiles
|
||||||
# (with `powerprofilesctl` command)
|
# (with `powerprofilesctl` command)
|
||||||
services.power-profiles-daemon.enable = true;
|
services.power-profiles-daemon.enable = true;
|
||||||
|
@ -39,5 +34,4 @@ in {
|
||||||
wants = ["power-profiles-daemon.service"];
|
wants = ["power-profiles-daemon.service"];
|
||||||
wantedBy = ["default.target"];
|
wantedBy = ["default.target"];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services = {
|
services = {
|
||||||
# DBus service that provides power management support to applications
|
# DBus service that provides power management support to applications
|
||||||
upower = {
|
upower = {
|
||||||
|
@ -19,5 +9,4 @@ in {
|
||||||
criticalPowerAction = "Hibernate";
|
criticalPowerAction = "Hibernate";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services.libinput = {
|
services.libinput = {
|
||||||
# enable libinput
|
# enable libinput
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -28,5 +19,4 @@ in {
|
||||||
disableWhileTyping = true;
|
disableWhileTyping = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,3 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (config.myOptions.device.roles) isUniMachine;
|
|
||||||
in {
|
|
||||||
config = mkIf isUniMachine {
|
|
||||||
environment.systemPackages = [pkgs.android-studio];
|
environment.systemPackages = [pkgs.android-studio];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,9 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf getExe;
|
inherit (lib) getExe;
|
||||||
inherit (lib.strings) concatStringsSep;
|
inherit (lib.strings) concatStringsSep;
|
||||||
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
|
|
||||||
greetingMsg = "'Access is restricted to authorized personnel only.'";
|
greetingMsg = "'Access is restricted to authorized personnel only.'";
|
||||||
tuiGreetTheme = "'border=magenta;text=cyan;prompt=green;time=red;action=white;button=yellow;container=black;input=gray'";
|
tuiGreetTheme = "'border=magenta;text=cyan;prompt=green;time=red;action=white;button=yellow;container=black;input=gray'";
|
||||||
|
|
||||||
|
@ -46,7 +43,6 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
vt = 1;
|
vt = 1;
|
||||||
|
@ -74,5 +70,4 @@ in {
|
||||||
|
|
||||||
# Persist info about previous session & user
|
# Persist info about previous session & user
|
||||||
myOptions.system.impermanence.root.extraDirectories = ["/var/cache/tuigreet"];
|
myOptions.system.impermanence.root.extraDirectories = ["/var/cache/tuigreet"];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# unlock GPG keyring on login
|
# unlock GPG keyring on login
|
||||||
security.pam.services = let
|
security.pam.services = let
|
||||||
gnupg = {
|
gnupg = {
|
||||||
|
@ -31,5 +22,4 @@ in {
|
||||||
inherit gnupg;
|
inherit gnupg;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
fonts = {
|
fonts = {
|
||||||
enableDefaultPackages = false;
|
enableDefaultPackages = false;
|
||||||
|
|
||||||
|
@ -116,5 +106,4 @@ in {
|
||||||
# Tool for searching and previewing installed fonts
|
# Tool for searching and previewing installed fonts
|
||||||
font-manager
|
font-manager
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
programs = {
|
programs = {
|
||||||
# allow non-root users to mount fuse filesystems with allow_other
|
# allow non-root users to mount fuse filesystems with allow_other
|
||||||
fuse.userAllowOther = true;
|
fuse.userAllowOther = true;
|
||||||
|
@ -24,5 +15,4 @@ in {
|
||||||
# registry for linux (thanks to Gnome)
|
# registry for linux (thanks to Gnome)
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# Screen locker which works across all virtual terminals
|
# Screen locker which works across all virtual terminals
|
||||||
# Use `systemctl start physlock` to securely lock the screen
|
# Use `systemctl start physlock` to securely lock the screen
|
||||||
services.physlock = {
|
services.physlock = {
|
||||||
|
@ -23,5 +14,4 @@ in {
|
||||||
hibernate = true;
|
hibernate = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,8 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
cfg = config.myOptions.home-manager.programs.games.steam;
|
cfg = config.myOptions.home-manager.programs.games.steam;
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
in {
|
||||||
config = mkIf ((builtins.elem deviceType acceptedTypes) && cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
remotePlay.openFirewall = false;
|
remotePlay.openFirewall = false;
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# Unconditionally enable thunar file manager here as a relatively
|
# Unconditionally enable thunar file manager here as a relatively
|
||||||
# lightweight fallback option for my default file manager.
|
# lightweight fallback option for my default file manager.
|
||||||
programs.thunar = {
|
programs.thunar = {
|
||||||
|
@ -32,5 +22,4 @@ in {
|
||||||
|
|
||||||
# thumbnail support on thunar
|
# thumbnail support on thunar
|
||||||
services.tumbler.enable = true;
|
services.tumbler.enable = true;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,8 @@
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
cfgUser = config.myOptions.system.username;
|
cfgUser = config.myOptions.system.username;
|
||||||
cfg = config.myOptions.home-manager.programs.applications.virtualbox;
|
cfg = config.myOptions.home-manager.programs.applications.virtualbox;
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
in {
|
||||||
config = mkIf ((builtins.elem deviceType acceptedTypes) && cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
virtualisation.virtualbox.host = {
|
virtualisation.virtualbox.host = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,8 @@
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
cfgUser = config.myOptions.system.username;
|
cfgUser = config.myOptions.system.username;
|
||||||
cfg = config.myOptions.home-manager.programs.applications.wireshark;
|
cfg = config.myOptions.home-manager.programs.applications.wireshark;
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
in {
|
||||||
config = mkIf ((builtins.elem deviceType acceptedTypes) && cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
programs.wireshark = {
|
programs.wireshark = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.wireshark;
|
package = pkgs.wireshark;
|
||||||
|
|
|
@ -1,15 +1,8 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
inherit (lib) mkIf;
|
|
||||||
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
environment.systemPackages = [pkgs.appimage-run];
|
environment.systemPackages = [pkgs.appimage-run];
|
||||||
|
|
||||||
# run appimages with appimage-run
|
# run appimages with appimage-run
|
||||||
|
@ -53,5 +46,4 @@ in {
|
||||||
# symlink there for compatibility.
|
# symlink there for compatibility.
|
||||||
# - For example the rye installed python binaries look there
|
# - For example the rye installed python binaries look there
|
||||||
environment.etc."ssl/cert.pem".source = "/etc/ssl/certs/ca-certificates.crt";
|
environment.etc."ssl/cert.pem".source = "/etc/ssl/certs/ca-certificates.crt";
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# https://dataswamp.org/~solene/2022-09-28-earlyoom.html
|
# https://dataswamp.org/~solene/2022-09-28-earlyoom.html
|
||||||
# avoid the linux kernel locking itself when we're putting too much strain on the memory
|
# avoid the linux kernel locking itself when we're putting too much strain on the memory
|
||||||
# this helps avoid having to shut down forcefully when we OOM
|
# this helps avoid having to shut down forcefully when we OOM
|
||||||
|
@ -29,5 +19,4 @@ in {
|
||||||
echo "Process $EARLYOOM_NAME ($EARLYOOM_PID) was killed"
|
echo "Process $EARLYOOM_NAME ($EARLYOOM_PID) was killed"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services = {
|
services = {
|
||||||
udev.packages = with pkgs; [gnome.gnome-settings-daemon];
|
udev.packages = with pkgs; [gnome.gnome-settings-daemon];
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
|
@ -21,5 +11,4 @@ in {
|
||||||
xdg.portal.config.common = {
|
xdg.portal.config.common = {
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
# despite being under logind, this has nothing to do with login
|
# despite being under logind, this has nothing to do with login
|
||||||
# it's about power management
|
# it's about power management
|
||||||
services.logind = {
|
services.logind = {
|
||||||
|
@ -18,5 +9,4 @@ in {
|
||||||
HibernateDelaySec=3600
|
HibernateDelaySec=3600
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services = {
|
services = {
|
||||||
# enable GVfs - a userspace virtual filesystem
|
# enable GVfs - a userspace virtual filesystem
|
||||||
gvfs.enable = true;
|
gvfs.enable = true;
|
||||||
|
@ -16,5 +6,4 @@ in {
|
||||||
# storage daemon required for udiskie auto-mount
|
# storage daemon required for udiskie auto-mount
|
||||||
udisks2.enable = true;
|
udisks2.enable = true;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
{
|
{config, ...}: {
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
in {
|
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes) {
|
|
||||||
services = {
|
services = {
|
||||||
# enable GVfs, a userspace virtual filesystem
|
# enable GVfs, a userspace virtual filesystem
|
||||||
# (allows viewing ftp,sftp,... directly from the file manager)
|
# (allows viewing ftp,sftp,... directly from the file manager)
|
||||||
|
@ -16,5 +7,4 @@ in {
|
||||||
# Storage daemon required for udiskie auto-mount
|
# Storage daemon required for udiskie auto-mount
|
||||||
udisks2.enable = !config.boot.isContainer;
|
udisks2.enable = !config.boot.isContainer;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,11 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf optional;
|
inherit (lib) mkIf optional;
|
||||||
deviceType = config.myOptions.device.roles.type;
|
|
||||||
acceptedTypes = ["laptop" "desktop"];
|
|
||||||
|
|
||||||
cfg = config.myOptions.workstation.printing;
|
cfg = config.myOptions.workstation.printing;
|
||||||
cfgUser = config.myOptions.system.username;
|
cfgUser = config.myOptions.system.username;
|
||||||
in {
|
in {
|
||||||
config = mkIf (builtins.elem deviceType acceptedTypes && cfg.enable) {
|
config = mkIf cfg.enable {
|
||||||
# enable cups and add some drivers for common printers
|
# enable cups and add some drivers for common printers
|
||||||
services = {
|
services = {
|
||||||
printing = {
|
printing = {
|
||||||
|
|
Loading…
Reference in a new issue