nixos/nixos/desktop_configuration.nix
2023-12-30 21:39:49 -07:00

105 lines
2.3 KiB
Nix

{ config, lib, inputs, outputs, pkgs, userName, hostName, desktop, timeZone, gaming, ... }:
let
supportedDesktops = [ "sway" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
in
{
assertions = [
{
assertion = builtins.elem desktop supportedDesktops;
message = "Unsupported desktop environment: ${desktop}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
../modules/user/main_user.nix
../modules/sway/sway_conf.nix
# inputs.nur.hmModules.nur
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# nixpkgs.config.allowUnfree = true;
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
main_user = {
enable = true;
userName = userName;
isDesktopUser = true;
};
swaywm = {
enable = desktop == "sway";
useNonFree = true;
installGaming = gaming;
systemPackages = with pkgs; [
# Dev Tools
dbeaver
cargo
kakoune
# flutter
docker
docker-compose
python310
nodejs_21
### LSP's
rnix-lsp # Nix LSP
nodePackages.typescript-language-server
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
rubyPackages.solargraph
python310Packages.python-lsp-server
### Misc
# android-udev-rules
# android-tools
# sdkmanager
# Productivity
libreoffice
# Gaming
wine-wayland
r2modman
# Better Unix
bat
duf
fd
fzf
lsd
ripgrep
gtop
# Photo / Video
davinci-resolve-studio
imv
mpv
gimp
# Work
slack
];
};
programs.adb.enable = true;
system.stateVersion = "23.11"; # Did you read the comment?
}