CrOS/modules/core.nix
2024-10-14 09:02:40 -04:00

187 lines
4.9 KiB
Nix

{
config,
lib,
pkgs,
...
}: {
options = {
module = {
enable = lib.mkEnableOption "enables packages";
core.enable = lib.mkEnableOption "enables required packages";
gui.enable = lib.mkEnableOption "enables gui+DE packages";
wayland.enable = lib.mkEnableOption "enables wayland packages";
x11.enable = lib.mkEnableOption "enables x11 packages";
programming.enable = lib.mkEnableOption "enables programming packages";
hacking.enable = lib.mkEnableOption "enables hacking packages";
mudding.enable = lib.mkEnableOption "enables mudding packages";
gaming.enable = lib.mkEnableOption "enables gaming packages";
};
user = {
enable = lib.mkEnableOption "enables users";
crow = {
enable = lib.mkEnableOption "enable crow";
home.enable = lib.mkEnableOption "enable home configuration";
};
overseer = {
enable = lib.mkEnableOption "enable container overseer user";
};
};
};
config = {
system.stateVersion = "24.05";
time.timeZone = "America/New_York";
nix.settings.experimental-features = ["flakes" "nix-command"];
environment.variables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
user = {
enable = lib.mkDefault true;
crow = {
enable = lib.mkDefault false;
home.enable = lib.mkDefault config.user.crow.enable;
};
overseer = {
enable = lib.mkDefault false;
};
};
fonts.packages = with pkgs; [
font-awesome
nerdfonts
];
module = {
enable = lib.mkDefault true;
core.enable = lib.mkDefault true;
gui.enable = lib.mkDefault false;
programming.enable = lib.mkDefault false;
wayland.enable = lib.mkDefault false;
x11.enable = lib.mkDefault false;
hacking.enable = lib.mkDefault false;
mudding.enable = lib.mkDefault false;
gaming.enable = lib.mkDefault false;
};
desktop = {
sway.enable = lib.mkDefault false;
i3.enable = lib.mkDefault false;
};
xdg.portal = {
xdgOpenUsePortal = true;
enable = true;
wlr.enable = true;
extraPortals = with pkgs;
[
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
xdg-desktop-portal-kde
];
};
# Configure pulseaudio
hardware.graphics.enable32Bit = config.module.gaming.enable;
hardware.pulseaudio.support32Bit = config.module.gaming.enable;
hardware.pulseaudio.enable = lib.mkDefault true;
services.pipewire.enable = false;
services.keyd = {
enable = true;
keyboards.default = {
ids = [ "*" ];
extraConfig = ''
[global]
default_layout = main
[main:layout]
capslock = layer(standardL2)
[control+shift]
m = setlayout(main)
c = setlayout(colemak)
[standardL2]
w = up
s = down
a = left
d = right
b = C-b
space = playpause
. = nextsong
, = previoussong
[ = delete
] = end
escape = ~
home = end
[colemakL2]
w = up
r = down
a = left
s = right
b = C-b
space = playpause
. = nextsong
, = previoussong
[ = delete
] = end
escape = ~
home = end
[colemak:layout]
capslock = layer(colemakL2)
w = w
, = ,
s = r
a = a
c = c
g = d
q = q
e = f
] = ]
d = s
/ = /
; = o
' = '
r = p
f = t
t = g
u = l
. = .
j = n
k = e
p = ;
o = y
z = z
h = h
i = u
[ = [
v = v
l = i
m = m
n = k
x = x
b = b
y = j
'';
};
};
};
}