treewide: cleanup config with enable options

This commit is contained in:
Leonardo Eugênio 2025-02-20 22:01:03 -03:00
parent d469c5fa79
commit 0a387960a2
28 changed files with 420 additions and 358 deletions

View file

@ -102,17 +102,25 @@
inputs.agenix.nixosModules.default
inputs.home-manager.nixosModules.home-manager
inputs.disko.nixosModules.disko
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.lelgenio = import ./user/home.nix;
home-manager.backupFileExtension = "bkp";
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
home-manager.extraSpecialArgs = {
inherit inputs;
};
}
(
{ config, ... }:
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.lelgenio = {
my = config.my;
imports = [
./user/home.nix
];
};
home-manager.backupFileExtension = "bkp";
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
home-manager.extraSpecialArgs = {
inherit inputs;
};
}
)
]
++ lib.optional (desktop == "gnome") ./system/gnome.nix
++ lib.optional (desktop == "kde") ./system/kde.nix;
@ -133,7 +141,6 @@
./system/monolith-gitlab-runner.nix
./system/monolith-forgejo-runner.nix
./system/nix-serve.nix
./system/steam.nix
] ++ common_modules;
};
double-rainbow = lib.nixosSystem {
@ -151,7 +158,6 @@
++ [
{
packages.media-packages.enable = lib.mkOverride 0 false;
programs.steam.enable = lib.mkOverride 0 false;
services.flatpak.enable = lib.mkOverride 0 false;
}
];

View file

@ -41,6 +41,8 @@ in
package = pkgs.unstable.opentabletdriver;
};
my.gaming.enable = true;
boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ];
boot.initrd.kernelModules = [ "amdgpu" ];

View file

@ -1,6 +1,18 @@
{ lib, ... }:
{
options = {
my = lib.mkOption { };
my = {
themes = lib.mkOption { };
key = lib.mkOption { };
theme = lib.mkOption { };
accent = lib.mkOption { };
font = lib.mkOption { };
username = lib.mkOption { type = lib.types.str; };
mail = lib.mkOption { };
dmenu = lib.mkOption { type = lib.types.str; };
desktop = lib.mkOption { type = lib.types.str; };
browser = lib.mkOption { type = lib.types.str; };
editor = lib.mkOption { type = lib.types.str; };
};
};
}

17
system/android.nix Normal file
View file

@ -0,0 +1,17 @@
{
config,
pkgs,
lib,
...
}:
{
options.my.android.enable = lib.mkEnableOption { };
config = lib.mkIf config.my.android.enable {
# Open kde connect ports
programs.kdeconnect.enable = true;
programs.adb.enable = true;
services.udev.packages = [ pkgs.android-udev-rules ];
};
}

View file

@ -2,7 +2,6 @@
config,
pkgs,
lib,
inputs,
...
}:
{

View file

@ -1,15 +1,11 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{
config,
pkgs,
inputs,
...
}:
{ pkgs, ... }:
{
imports = [
./gamemode.nix
./android.nix
./gaming.nix
./media-packages.nix
./boot.nix
./thunar.nix
@ -25,39 +21,27 @@
../settings
];
my = import ../user/variables.nix;
my = import ../user/variables.nix // {
android.enable = true;
media-packages.enable = true;
containers.enable = true;
};
zramSwap.enable = true;
programs.adb.enable = true;
services.udev.packages = [ pkgs.android-udev-rules ];
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;
packages.media-packages.enable = true;
environment.systemPackages = with pkgs; [
pavucontrol
glib # gsettings
usbutils
# dracula-theme # gtk theme
adwaita-icon-theme # default gnome cursors
nix-output-monitor
];
services.geoclue2.enable = true;
# Workaround for nm-wait-online hanging??
# Ref: https://github.com/NixOS/nixpkgs/issues/180175
systemd.services.NetworkManager-wait-online = {
serviceConfig.ExecStart = [
""
"${pkgs.networkmanager}/bin/nm-online -q"
];
};
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';

View file

@ -1,30 +1,39 @@
{ pkgs, lib, ... }:
{
services.flatpak.enable = true;
pkgs,
lib,
config,
...
}:
{
options.my.containers.enable = lib.mkEnableOption { };
virtualisation.docker = {
enable = true;
autoPrune = {
config = lib.mkIf config.my.containers.enable {
services.flatpak.enable = true;
virtualisation.docker = {
enable = true;
dates = "monthly";
flags = [
"--all"
"--volumes"
];
};
daemon.settings = {
# needed by bitbucket runner ???
log-driver = "json-file";
log-opts = {
max-size = "10m";
max-file = "3";
autoPrune = {
enable = true;
dates = "monthly";
flags = [
"--all"
"--volumes"
];
};
daemon.settings = {
# needed by bitbucket runner ???
log-driver = "json-file";
log-opts = {
max-size = "10m";
max-file = "3";
};
};
};
networking.firewall.extraCommands = lib.getExe pkgs._docker-block-external-connections;
programs.extra-container.enable = true;
programs.firejail.enable = true;
};
networking.firewall.extraCommands = lib.getExe pkgs._docker-block-external-connections;
programs.extra-container.enable = true;
programs.firejail.enable = true;
}

View file

@ -1,27 +0,0 @@
{
config,
pkgs,
inputs,
...
}:
{
programs.gamemode.enable = true;
programs.gamemode.enableRenice = true;
programs.gamemode.settings = {
general = {
renice = 10;
};
# Warning: GPU optimisations have the potential to damage hardware
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 0;
amd_performance_level = "high";
};
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
};
};
}

63
system/gaming.nix Normal file
View file

@ -0,0 +1,63 @@
{
config,
pkgs,
lib,
inputs,
...
}:
{
options.my.gaming.enable = lib.mkEnableOption { };
config = lib.mkIf config.my.gaming.enable {
programs.steam.enable = true;
programs.steam.extraPackages =
config.fonts.packages
++ (with pkgs; [
capitaine-cursors
bibata-cursors
mangohud
xdg-user-dirs
gamescope
# gamescope compatibility??
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
]);
environment.systemPackages = with pkgs; [
protontricks
bottles
inputs.dzgui-nix.packages.${pkgs.system}.default
];
programs.gamemode = {
enable = true;
enableRenice = true;
settings = {
general = {
renice = 10;
};
# Warning: GPU optimisations have the potential to damage hardware
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 0;
amd_performance_level = "high";
};
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
};
};
};
};
}

View file

@ -5,10 +5,10 @@
...
}:
let
cfg = config.packages.media-packages;
cfg = config.my.media-packages;
in
{
options.packages.media-packages = {
options.my.media-packages = {
enable = lib.mkEnableOption "media packages";
};
config = lib.mkIf cfg.enable {

View file

@ -6,8 +6,6 @@
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Open kde connect ports
programs.kdeconnect.enable = true;
networking.firewall = {
enable = true;
@ -15,7 +13,7 @@
};
# Enable CUPS to print documents.
# services.printing.enable = true;
services.printing.enable = true;
security.rtkit.enable = true;
services.openssh = {
@ -27,4 +25,13 @@
KbdInteractiveAuthentication = false;
};
};
# Workaround for nm-wait-online hanging??
# Ref: https://github.com/NixOS/nixpkgs/issues/180175
systemd.services.NetworkManager-wait-online = {
serviceConfig.ExecStart = [
""
"${pkgs.networkmanager}/bin/nm-online -q"
];
};
}

View file

@ -1,36 +0,0 @@
{
config,
pkgs,
inputs,
...
}:
{
programs.steam.enable = true;
programs.steam.extraPackages =
config.fonts.packages
++ (with pkgs; [
capitaine-cursors
bibata-cursors
mangohud
xdg-user-dirs
gamescope
# gamescope compatibility??
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
]);
environment.systemPackages = with pkgs; [
protontricks
bottles
inputs.dzgui-nix.packages.${pkgs.system}.default
];
}

8
user/dummy.nix Normal file
View file

@ -0,0 +1,8 @@
{ lib, ... }:
{
options.my = {
android.enable = lib.mkEnableOption { };
media-packages.enable = lib.mkEnableOption { };
containers.enable = lib.mkEnableOption { };
};
}

View file

@ -6,9 +6,12 @@
}:
let
inherit (config.my) accent editor desktop;
cfg = config.my.fish;
in
{
config = {
options.my.fish.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
programs.fish = {
enable = true;
shellInit = ''

View file

@ -2,16 +2,10 @@
config,
pkgs,
lib,
inputs,
...
}:
let
inherit (config.my)
key
theme
accent
font
;
inherit (config.my) theme accent;
inherit (theme) color;
colors = {

24
user/gaming.nix Normal file
View file

@ -0,0 +1,24 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.gaming;
in
{
options.my.gaming.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
my.mangohud.enable = true;
home.packages = with pkgs; [
# lutris-unwrapped
# steam # It's enabled in the system config
tlauncher
gamescope
glxinfo
vulkan-tools
];
};
}

View file

@ -7,9 +7,13 @@
let
inherit (config.my) accent theme editor;
inherit (theme) color;
cfg = config.my.helix;
in
{
config = {
options.my.helix.enable = lib.mkEnableOption "Enable helix config";
config = lib.mkIf cfg.enable {
programs.helix = {
enable = true;
settings = {

View file

@ -8,6 +8,7 @@
}:
{
imports = [
./dummy.nix
./waybar
./helix.nix
./kakoune
@ -21,6 +22,7 @@
./rofi.nix
./mpv.nix
./mangohud.nix
./gaming.nix
./pipewire.nix
./mimeapps.nix
./desktop-entries.nix
@ -44,7 +46,11 @@
./powerplay-led-idle.nix
];
my = import ./variables.nix;
my = import ./variables.nix // {
sway.enable = true;
pass.enable = true;
fish.enable = true;
};
# Home Manager needs a bit of information about you and the
# paths it should manage.
@ -91,14 +97,6 @@
mate.engrampa
# gnome.nautilus
## games
# lutris-unwrapped
# steam # It's enabled in the system config
tlauncher
gamescope
glxinfo
vulkan-tools
## Theming
orchis_theme_compact
papirus_red
@ -130,6 +128,8 @@
unstable.blade-formatter
nixfmt-rfc-style
nix-output-monitor
];
fonts.fontconfig.enable = true;

View file

@ -1,80 +1,68 @@
{
config,
pkgs,
lib,
font,
...
}:
{ config, lib, ... }:
let
inherit (config.my)
key
theme
color
accent
font
;
cfg = config.my.mangohud;
in
{
config = {
programs.mangohud = {
enable = true;
enableSessionWide = true;
settings = {
full = true;
# histogram = true;
no_display = true;
fps_limit = "0,30,60,72,90,120,144,240,288,320";
toggle_fps_limit = "Shift_R+F10";
toggle_preset = "Control_R+F9";
fps_metrics = "Control_R+F8";
options.my.mangohud.enable = lib.mkEnableOption { };
# legacy_layout = "false";
# gpu_stats = true;
# gpu_temp = true;
# gpu_core_clock = true;
# gpu_mem_clock = true;
# gpu_power = true;
# gpu_load_change = true;
# gpu_load_value = "50,90";
gpu_load_color = "FFFFFF,FFAA7F,CC0000";
# gpu_text = "GPU";
# cpu_stats = true;
# cpu_temp = true;
# cpu_power = true;
# cpu_mhz = true;
# cpu_load_change = true;
# core_load_change = true;
# cpu_load_value = "50,90";
cpu_load_color = "FFFFFF,FFAA7F,CC0000";
cpu_color = "2e97cb";
# cpu_text = "CPU";
# io_stats = true;
# io_read = true;
# io_write = true;
io_color = "a491d3";
# swap = true;
# vram = true;
vram_color = "ad64c1";
# ram = true;
ram_color = "c26693";
# fps = true;
engine_color = "eb5b5b";
gpu_color = "2e9762";
wine_color = "eb5b5b";
# frame_timing = "1";
frametime_color = "00ff00";
media_player_color = "ffffff";
background_alpha = "0.8";
font_size = "24";
config.programs.mangohud = lib.mkIf cfg.enable {
enable = true;
enableSessionWide = true;
settings = {
full = true;
# histogram = true;
no_display = true;
fps_limit = "0,30,60,72,90,120,144,240,288,320";
toggle_fps_limit = "Shift_R+F10";
toggle_preset = "Control_R+F9";
fps_metrics = "Control_R+F8";
background_color = "020202";
position = "top-left";
# text_color = "ffffff";
round_corners = "10";
toggle_hud = "Shift_R+F12";
# toggle_logging = "Shift_L+F12";
# output_folder = "/home/lelgenio";
};
# legacy_layout = "false";
# gpu_stats = true;
# gpu_temp = true;
# gpu_core_clock = true;
# gpu_mem_clock = true;
# gpu_power = true;
# gpu_load_change = true;
# gpu_load_value = "50,90";
gpu_load_color = "FFFFFF,FFAA7F,CC0000";
# gpu_text = "GPU";
# cpu_stats = true;
# cpu_temp = true;
# cpu_power = true;
# cpu_mhz = true;
# cpu_load_change = true;
# core_load_change = true;
# cpu_load_value = "50,90";
cpu_load_color = "FFFFFF,FFAA7F,CC0000";
cpu_color = "2e97cb";
# cpu_text = "CPU";
# io_stats = true;
# io_read = true;
# io_write = true;
io_color = "a491d3";
# swap = true;
# vram = true;
vram_color = "ad64c1";
# ram = true;
ram_color = "c26693";
# fps = true;
engine_color = "eb5b5b";
gpu_color = "2e9762";
wine_color = "eb5b5b";
# frame_timing = "1";
frametime_color = "00ff00";
media_player_color = "ffffff";
background_alpha = "0.8";
font_size = "24";
background_color = "020202";
position = "top-left";
# text_color = "ffffff";
round_corners = "10";
toggle_hud = "Shift_R+F12";
# toggle_logging = "Shift_L+F12";
# output_folder = "/home/lelgenio";
};
};
}

View file

@ -4,8 +4,13 @@
config,
...
}:
let
cfg = config.my.mpd;
in
{
config = lib.mkIf (config.my.desktop != "gnome") {
options.my.mpd.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
services.mpd = {
enable = true;
musicDirectory = config.home.homeDirectory + "/Música";

View file

@ -2,11 +2,15 @@
config,
pkgs,
lib,
inputs,
...
}:
let
cfg = config.my.pass;
in
{
config = {
options.my.pass.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
programs.password-store = {
enable = true;
package = pkgs.pass.withExtensions (

View file

@ -5,13 +5,10 @@
...
}:
let
inherit (config.my)
key
accent
font
theme
;
inherit (config.my) accent font theme;
inherit (theme) color;
cfg = config.my.sway;
in
{
imports = [
@ -24,10 +21,17 @@ in
./swaylock.nix
./theme.nix
];
config = lib.mkIf (config.my.desktop == "sway") {
services.mako.enable = true;
services.swayidle.enable = true;
services.kanshi.enable = true;
options.my.sway.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
my.mako.enable = true;
my.kanshi.enable = true;
my.swayidle.enable = true;
my.swaylock.enable = true;
my.mpd.enable = true;
my.zathura.enable = true;
my.waybar.enable = true;
wayland.windowManager.sway = {
enable = true;
@ -36,7 +40,7 @@ in
bars = [ ];
floating.modifier = "Mod4";
terminal = pkgs.alacritty.executable;
terminal = lib.getExe pkgs.alacritty;
window.titlebar = false;
gaps = {
@ -69,7 +73,7 @@ in
};
output = {
"*" = {
adaptive_sync = "off";
adaptive_sync = "on";
bg = "${theme.background} fill";
mode = "1920x1080@144.000Hz";
};
@ -132,7 +136,6 @@ in
swaylock
wdisplays
waybar
dhist
demoji
bmenu

View file

@ -1,20 +1,12 @@
{
config,
pkgs,
lib,
...
}:
{ config, lib, ... }:
let
inherit (config.my)
key
accent
font
theme
;
inherit (theme) color;
cfg = config.my.kanshi;
in
{
services.kanshi = {
options.my.kanshi.enable = lib.mkEnableOption { };
config.services.kanshi = lib.mkIf cfg.enable {
enable = true;
settings = [
{
profile = {

View file

@ -6,60 +6,66 @@
}:
let
inherit (config.my)
key
accent
font
theme
;
inherit (theme) color;
cfg = config.my.mako;
in
{
services.mako = {
borderSize = 2;
padding = "5";
margin = "15";
layer = "overlay";
options.my.mako.enable = lib.mkEnableOption { };
font = "${font.interface} ${toString font.size.small}";
textColor = color.txt;
config = lib.mkIf cfg.enable {
services.mako = {
enable = true;
borderSize = 2;
padding = "5";
margin = "15";
layer = "overlay";
backgroundColor = color.bg;
borderColor = accent.color;
progressColor = "over ${accent.color}88";
font = "${font.interface} ${toString font.size.small}";
textColor = color.txt;
defaultTimeout = 10000;
backgroundColor = color.bg;
borderColor = accent.color;
progressColor = "over ${accent.color}88";
extraConfig = ''
[app-name=volumesh]
default-timeout=5000
group-by=app-name
format=<b>%s</b>\n%b
'';
defaultTimeout = 10000;
# # {{@@ header() @@}}
# # text
extraConfig = ''
[app-name=volumesh]
default-timeout=5000
group-by=app-name
format=<b>%s</b>\n%b
'';
# # features
# icons=1
# markup=1
# actions=1
# default-timeout=10000
# # {{@@ header() @@}}
# # text
# # position
# layer=overlay
};
systemd.user.services.mako = lib.mkIf (config.services.mako.enable) {
Unit = {
Description = "Notification daemon";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
# # features
# icons=1
# markup=1
# actions=1
# default-timeout=10000
# # position
# layer=overlay
};
Service = {
ExecStart = "${pkgs.mako}/bin/mako";
Restart = "on-failure";
};
Install = {
WantedBy = [ "sway-session.target" ];
systemd.user.services.mako = lib.mkIf (config.services.mako.enable) {
Unit = {
Description = "Notification daemon";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.mako}/bin/mako";
Restart = "on-failure";
};
Install = {
WantedBy = [ "sway-session.target" ];
};
};
};
}

View file

@ -5,18 +5,15 @@
...
}:
let
inherit (config.my)
key
accent
font
theme
;
inherit (theme) color;
asScript = filename: text: toString (pkgs.writeShellScript filename text);
cfg = config.my.swayidle;
in
{
services.swayidle = {
options.my.swayidle.enable = lib.mkEnableOption { };
config.services.swayidle = {
enable = cfg.enable;
timeouts = [
{
timeout = 360;

View file

@ -1,20 +1,14 @@
{
config,
pkgs,
lib,
...
}:
{ config, lib, ... }:
let
inherit (config.my)
key
accent
font
theme
;
inherit (config.my) accent font theme;
inherit (theme) color;
cfg = config.my.swaylock;
in
{
programs.swaylock.settings = {
options.my.swaylock.enable = lib.mkEnableOption { };
config.programs.swaylock.settings = lib.mkIf cfg.enable {
image = toString theme.background;
font = font.interface;
font-size = font.size.medium;

View file

@ -14,9 +14,13 @@ let
font
;
inherit (theme) color;
cfg = config.my.waybar;
in
{
config = {
options.my.waybar.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
programs.waybar = {
enable = true;
systemd.enable = true;

View file

@ -1,10 +1,4 @@
{
config,
pkgs,
lib,
font,
...
}:
{ config, lib, ... }:
let
inherit (config.my)
key
@ -13,56 +7,62 @@ let
theme
;
inherit (theme) color;
cfg = config.my.zathura;
in
{
config = {
programs.zathura.enable = true;
programs.zathura.options = {
font = "${font.mono} ${toString font.size.small}";
guioptions = "s";
options.my.zathura.enable = lib.mkEnableOption { };
selection-clipboard = "clipboard";
config = lib.mkIf cfg.enable {
programs.zathura = {
enable = true;
options = {
font = "${font.mono} ${toString font.size.small}";
guioptions = "s";
recolor = true;
# Turn images grayscale, so they don't look weird
recolor-keephue = false;
recolor-lightcolor = "rgba(0,0,0,0)";
recolor-darkcolor = color.txt;
selection-clipboard = "clipboard";
default-bg = color.bg_dark;
recolor = true;
# Turn images grayscale, so they don't look weird
recolor-keephue = false;
recolor-lightcolor = "rgba(0,0,0,0)";
recolor-darkcolor = color.txt;
inputbar-bg = color.bg_dark;
inputbar-fg = color.txt;
default-bg = color.bg_dark;
statusbar-bg = color.bg;
statusbar-fg = color.txt;
inputbar-bg = color.bg_dark;
inputbar-fg = color.txt;
completion-bg = color.bg;
completion-fg = color.txt;
statusbar-bg = color.bg;
statusbar-fg = color.txt;
completion-group-bg = color.bg_dark;
completion-group-fg = color.txt;
completion-bg = color.bg;
completion-fg = color.txt;
completion-highlight-bg = accent.color;
completion-highlight-fg = accent.fg;
completion-group-bg = color.bg_dark;
completion-group-fg = color.txt;
index-active-bg = accent.color;
index-active-fg = accent.fg;
};
programs.zathura.mappings = {
"<C-b>" = "toggle_statusbar";
${key.left} = "scroll left";
${key.down} = "scroll down";
${key.up} = "scroll up";
${key.right} = "scroll right";
"[index] ${key.left}" = "navigate_index collapse";
"[index] ${key.down}" = "navigate_index down";
"[index] ${key.up}" = "navigate_index up";
"[index] ${key.right}" = "navigate_index expand";
${lib.toUpper key.down} = "navigate next";
${lib.toUpper key.up} = "navigate previous";
${key.next} = "search forward";
${lib.toUpper key.next} = "search backward";
completion-highlight-bg = accent.color;
completion-highlight-fg = accent.fg;
index-active-bg = accent.color;
index-active-fg = accent.fg;
};
mappings = {
"<C-b>" = "toggle_statusbar";
${key.left} = "scroll left";
${key.down} = "scroll down";
${key.up} = "scroll up";
${key.right} = "scroll right";
"[index] ${key.left}" = "navigate_index collapse";
"[index] ${key.down}" = "navigate_index down";
"[index] ${key.up}" = "navigate_index up";
"[index] ${key.right}" = "navigate_index expand";
${lib.toUpper key.down} = "navigate next";
${lib.toUpper key.up} = "navigate previous";
${key.next} = "search forward";
${lib.toUpper key.next} = "search backward";
};
};
};
}