nixos/scrappy/desktop-configuration.nix

167 lines
4.4 KiB
Nix

{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
let
supportedDesktops = [ "gnome" "hyprland" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
deskCfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "";
type = lib.types.str;
description = "Desktop Environment";
};
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Whether to install gaming software or not";
};
};
imports = [
modules/user/main_user.nix
];
config = {
assertions = [
{
assertion = builtins.elem deskCfg.de supportedDesktops;
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# boot.plymouth.enable = true;
boot = {
plymouth = {
enable = true;
theme = "circle_flow";
themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = [ "circle_flow" ];
})
];
};
# Enable "Silent Boot"
consoleLogLevel = 0;
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
loader.timeout = 0;
# Use the systemd-boot EFI boot loader.
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
};
networking.hostName = deskCfg.hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.wireless.iwd.enable = true;
time.timeZone = timeZone;
main_user = {
enable = true;
userName = deskCfg.userName;
isDesktopUser = true;
};
#niriwm = {
# enable = false;
# useNonFree = true;
# #installGaming = deskCfg.installGaming;
# systemPackages = with pkgs; [
# libreoffice
# rpi-imagergh
# ];
#};
## TODO move all of this into a hyprland config
environment.systemPackages = with pkgs; [
cryptsetup
nwg-hello
cage
];
# Get block UUID with
# `sudo blkid /dev/mmcblk1p1`
# Makes encrypted device available under /dev/mapper/enc_source
environment.etc.crypttab.text = ''
enc_source UUID=6e131a4e-1cba-4db7-b635-42381e4fd790 /root/keyfile
'';
programs.hyprland.enable = true;
# programs.steam.enable = true;
# For electron apps in wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.hyprland}/bin/hyprland";
user = "scrappy";
};
default_session = initial_session;
};
};
# For yubioath desktop
services.pcscd.enable = true;
# Audio
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
wireplumber.enable = true;
};
programs.thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
programs.file-roller.enable = true;
programs.xfconf.enable = true;
# sound.enable = false;
# services.xserver = {
# enable = true;
# displayManager.gdm.enable = true;
# desktopManager.gnome.enable = true;
# };
programs.regreet.enable = true;
programs.zsh.enable = true;
nixpkgs.config.allowUnfree = true;
system.stateVersion = "24.05"; # Did you read the comment?
};
}