mirror of
https://github.com/ItsDrike/nixdots
synced 2025-01-23 21:04:34 +00:00
Compare commits
5 commits
e79a5d7cde
...
575e6ae979
Author | SHA1 | Date | |
---|---|---|---|
ItsDrike | 575e6ae979 | ||
ItsDrike | 00016063fe | ||
ItsDrike | c6c3ecb1e9 | ||
ItsDrike | 0c996b540f | ||
ItsDrike | 50015511a8 |
|
@ -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
|
||||||
];
|
];
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
3
home/programs/terminal/coding/cpp.nix
Normal file
3
home/programs/terminal/coding/cpp.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [ninja];
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./python
|
./python
|
||||||
|
./cpp.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
nixd
|
nixd
|
||||||
emmet-language-server
|
emmet-language-server
|
||||||
vscode-langservers-extracted
|
vscode-langservers-extracted
|
||||||
|
kotlin-language-server
|
||||||
|
|
||||||
# Linters / formatters
|
# Linters / formatters
|
||||||
stylua
|
stylua
|
||||||
|
@ -49,6 +50,7 @@
|
||||||
alejandra
|
alejandra
|
||||||
deadnix
|
deadnix
|
||||||
statix
|
statix
|
||||||
|
ktlint
|
||||||
|
|
||||||
# Other tools / utilities
|
# Other tools / utilities
|
||||||
ripgrep
|
ripgrep
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -98,6 +98,11 @@
|
||||||
".local/share/cargo"
|
".local/share/cargo"
|
||||||
".local/share/go"
|
".local/share/go"
|
||||||
".config/rye"
|
".config/rye"
|
||||||
|
|
||||||
|
# University crap
|
||||||
|
"Android/Sdk"
|
||||||
|
"AndroidStudioProjects"
|
||||||
|
".android"
|
||||||
];
|
];
|
||||||
extraFiles = [
|
extraFiles = [
|
||||||
".config/gtk-3.0/bookmarks"
|
".config/gtk-3.0/bookmarks"
|
||||||
|
@ -138,10 +143,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
device = {
|
device = {
|
||||||
roles = {
|
roles.virtual-machine = false;
|
||||||
type = "laptop";
|
|
||||||
virtual-machine = false;
|
|
||||||
};
|
|
||||||
cpu.type = "amd";
|
cpu.type = "amd";
|
||||||
gpu.type = "amd";
|
gpu.type = "amd";
|
||||||
hasTPM = true;
|
hasTPM = true;
|
||||||
|
@ -182,10 +184,10 @@
|
||||||
"eDP-1, 1920x1200@60, 0x1080, 1"
|
"eDP-1, 1920x1200@60, 0x1080, 1"
|
||||||
|
|
||||||
# HDMI-A-1 above primary
|
# HDMI-A-1 above primary
|
||||||
"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
#"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
||||||
|
|
||||||
# HDMI-A-1 left to primary
|
# HDMI-A-1 left to primary
|
||||||
#"HDMI-A-1, 1920x1080@60, 1920x1080, 1"
|
"HDMI-A-1, 1920x1080@60, 1920x1080, 1"
|
||||||
|
|
||||||
# Mirror the primary (laptop) monitor on externals
|
# Mirror the primary (laptop) monitor on externals
|
||||||
", preferred, auto, 1, mirror, eDP-1"
|
", preferred, auto, 1, mirror, eDP-1"
|
||||||
|
|
|
@ -1,39 +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.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +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
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
3
system/roles/uni/android.nix
Normal file
3
system/roles/uni/android.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = [pkgs.android-studio];
|
||||||
|
}
|
5
system/roles/uni/default.nix
Normal file
5
system/roles/uni/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./android.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -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";
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
./misc.nix
|
./misc.nix
|
||||||
./logind.nix
|
./logind.nix
|
||||||
./gnome-keyring.nix
|
./gnome-keyring.nix
|
||||||
|
./flatpak.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
3
system/roles/workstation/services/flatpak.nix
Normal file
3
system/roles/workstation/services/flatpak.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
}
|
|
@ -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