refactor(system): flatten
This commit is contained in:
parent
24dee2cadc
commit
f47154c234
29 changed files with 32 additions and 268 deletions
|
|
@ -23,7 +23,7 @@ in
|
||||||
cpu.type = "amd";
|
cpu.type = "amd";
|
||||||
cpu.amd.pstate.enable = true;
|
cpu.amd.pstate.enable = true;
|
||||||
gpu.type = "amd";
|
gpu.type = "amd";
|
||||||
features = [ "ssd" ];
|
features = [ "ssd" "audio" "video" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (lib.generators) toLua;
|
|
||||||
inherit (lib.lists) any elem optionals;
|
|
||||||
# inherit (builtins) elem;
|
|
||||||
hasBT = (elem "bluetooth" config.systemModules.host.hardware.features);
|
|
||||||
hasFunction = f: elem f config.systemModules.host.function;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = mkIf (any hasFunction ["workstation" "gaming" "media-server"]) {
|
|
||||||
hardware.pulseaudio.enable = !config.services.pipewire.enable;
|
|
||||||
security.rtkit.enable = config.services.pipewire.enable;
|
|
||||||
services.pipewire =
|
|
||||||
let
|
|
||||||
quantum = 64;
|
|
||||||
rate = 48000;
|
|
||||||
qr = "${toString quantum}/${toString rate}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
|
|
||||||
# Low latency module provided by notashelf/nyx
|
|
||||||
extraConfig.pipewire."99-lowlatency" = {
|
|
||||||
context = {
|
|
||||||
properties.default.clock.min-quantum = quantum;
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
name = "libpipewire-module-rtkit";
|
|
||||||
flags = ["ifexists" "nofail"];
|
|
||||||
args = {
|
|
||||||
nice.level = -15;
|
|
||||||
rt = {
|
|
||||||
prio = 88;
|
|
||||||
time.soft = 200000;
|
|
||||||
time.hard = 200000;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "libpipewire-module-protocol-pulse";
|
|
||||||
args = {
|
|
||||||
server.address = ["unix:native"];
|
|
||||||
pulse.min = {
|
|
||||||
req = qr;
|
|
||||||
quantum = qr;
|
|
||||||
frag = qr;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
stream.properties = {
|
|
||||||
node.latency = qr;
|
|
||||||
resample.quality = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wireplumber = {
|
|
||||||
enable = true;
|
|
||||||
configPackages = let
|
|
||||||
matches = toLua {
|
|
||||||
multiline = false;
|
|
||||||
indent = false;
|
|
||||||
} [[["node.name" "matches" "alsa_output.*"]]];
|
|
||||||
|
|
||||||
apply_properties = toLua {} {
|
|
||||||
"audio.format" = "S32LE";
|
|
||||||
"audio.rate" = rate * 2;
|
|
||||||
"api.alsa.period-size" = 2;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
[
|
|
||||||
(pkgs.writeTextDir "share/lowlatency.lua.d/99-alsa-lowlatency.lua" ''
|
|
||||||
alsa_monitor.rules = {
|
|
||||||
{
|
|
||||||
matches = ${matches};
|
|
||||||
apply_properties = ${apply_properties};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'')
|
|
||||||
]
|
|
||||||
++ optionals hasBT [
|
|
||||||
(pkgs.writeTextDir "share/bluetooth.lua.d/51-bluez-config.lua" ''
|
|
||||||
bluez_monitor.properties = {
|
|
||||||
["bluez5.enable-sbc-xq"] = true,
|
|
||||||
["bluez5.enable-msbc"] = true,
|
|
||||||
["bluez5.enable-hw-volume"] = true,
|
|
||||||
["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
|
|
||||||
}
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services = {
|
|
||||||
pipewire.wantedBy = ["default.target"];
|
|
||||||
pipewire-pulse.wantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5,16 +5,13 @@
|
||||||
./shell
|
./shell
|
||||||
./boot
|
./boot
|
||||||
./nix
|
./nix
|
||||||
./programs
|
|
||||||
./displayManager
|
./displayManager
|
||||||
./networking
|
./networking
|
||||||
./locale.nix
|
./locale.nix
|
||||||
./virtualization
|
./virtualization
|
||||||
./security
|
./security
|
||||||
./services
|
./services
|
||||||
./audio
|
|
||||||
./host
|
./host
|
||||||
./video
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,9 @@ in
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xdgOpenUsePortal = true;
|
xdgOpenUsePortal = true;
|
||||||
extraPortals = [
|
extraPortals = with pkgs; [
|
||||||
pkgs.xdg-desktop-portal-gtk
|
xdg-desktop-portal-hyprland
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
common.default = ["gtk"];
|
common.default = ["gtk"];
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,9 @@
|
||||||
mtr
|
mtr
|
||||||
tcpdump
|
tcpdump
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
wireshark.enable = true;
|
||||||
|
bandwhich.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ in
|
||||||
options = "--delete-older-than 30d";
|
options = "--delete-older-than 30d";
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
flake-registry = "etc/nix/registry.json";
|
flake-registry = "/etc/nix/registry.json";
|
||||||
allowed-users = [ "root" "@wheel" ];
|
allowed-users = [ "root" "@wheel" ];
|
||||||
trusted-users = [ "root" "@wheel" ];
|
trusted-users = [ "root" "@wheel" ];
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (builtins) elem;
|
|
||||||
host = config.systemModules.host;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = mkIf (elem "workstation" host.function) {
|
|
||||||
programs.bandwhich.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./dconf
|
|
||||||
./kdeconnect
|
|
||||||
./seahorse
|
|
||||||
./wireshark
|
|
||||||
./bandwhich
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (builtins) elem;
|
|
||||||
host = config.systemModules.host;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = mkIf (elem "workstation" host.function) {
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (builtins) elem;
|
|
||||||
host = config.systemModules.host;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = mkIf (elem "workstation" host.function) {
|
|
||||||
programs.wireshark.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./1password
|
./kernel.nix
|
||||||
./kernel
|
./pam.nix
|
||||||
./pam
|
./polkit.nix
|
||||||
./polkit
|
./sudo.nix
|
||||||
./sudo
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,8 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./mediaServer
|
./system76Scheduler.nix
|
||||||
./system76Scheduler
|
./dbus.nix
|
||||||
./dbus
|
./gnome.nix
|
||||||
./gnome
|
./gvfs.nix
|
||||||
./gvfs
|
|
||||||
];
|
];
|
||||||
|
|
||||||
options.systemModules.services = {
|
|
||||||
mediaServer = {
|
|
||||||
enable = lib.mkEnableOption "Enable mediaserver service module";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.systemModules.services.mediaServer;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
users.groups.media = { };
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
jellyfin
|
|
||||||
jellyfin-web
|
|
||||||
jellyfin-ffmpeg
|
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
|
||||||
jellyfin = {
|
|
||||||
group = "media";
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
deluge = {
|
|
||||||
group = "media";
|
|
||||||
enable = true;
|
|
||||||
web.enable = true;
|
|
||||||
};
|
|
||||||
radarr = {
|
|
||||||
group = "media";
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
sonarr = {
|
|
||||||
group = "media";
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
prowlarr.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /jellyfin 0770 - media - -"
|
|
||||||
];
|
|
||||||
|
|
||||||
fileSystems."/jellyfin" = {
|
|
||||||
device = "/dev/disk/by-label/jellyfin";
|
|
||||||
fsType = "btrfs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
isx86Linux = pkgs: with pkgs.stdenv; hostPlatform.isLinux && hostPlatform.isx86;
|
|
||||||
host = config.systemModules.host;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
config = mkIf (host.type != "phone") {
|
|
||||||
hardware = {
|
|
||||||
opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = isx86Linux pkgs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
xdgOpenUsePortal = true;
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-hyprland
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
common.default = ["gtk"];
|
|
||||||
hyprland.default = ["gtk" "hyprland"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./pipewire
|
./programs
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./dconf.nix
|
||||||
|
./kdeconnect.nix
|
||||||
|
./1password.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -9,6 +9,10 @@ let
|
||||||
hosts = "${systemInputs}/hosts";
|
hosts = "${systemInputs}/hosts";
|
||||||
base = "${systemInputs}/modules/base";
|
base = "${systemInputs}/modules/base";
|
||||||
|
|
||||||
|
gaming = "${systemInputs}/modules/roles/gaming";
|
||||||
|
workstation = "${systemInputs}/modules/roles/workstation";
|
||||||
|
|
||||||
|
|
||||||
specialArgs = {inherit inputs self;};
|
specialArgs = {inherit inputs self;};
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
@ -20,6 +24,8 @@ in
|
||||||
"${hosts}/ooksdesk"
|
"${hosts}/ooksdesk"
|
||||||
hm
|
hm
|
||||||
base
|
base
|
||||||
|
gaming
|
||||||
|
workstation
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue