Files
nixos-config/systems/x86_64-linux/drivebystation-nix/default.nix
T
2026-09-30 19:53:42 +02:00

230 lines
6.9 KiB
Nix

# nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set.
# namespace,
# The system architecture for this host (eg. `x86_64-linux`).
# system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
# target,
# A normalized name for the system target (eg. `iso`).
# format,
# A boolean to determine whether this system is a virtual target using nixos-generators.
# virtual,
# An attribute map of your defined hosts.
# systems,
# All other arguments come from the system system.
# config,
...
}:
let
# inherit (lib.my-namespace) systemPackages;
inherit pkgs;
installedPackages = lib.my-namespace.mkPackages pkgs;
in
{
# inherit system;
imports = [
./configuration.nix
./mutter-tearing.nix
./video.nix
inputs.wallpaperengine.nixosModules.default
inputs.aagl.nixosModules.default
];
config = {
programs.linux-wallpaperengine.enable = true;
system.stateVersion = "26.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Distrobox
my-namespace.distrobox.enable = true;
# Desktops
my-namespace.desktop-environment.cinnamon.enable = true;
my-namespace.desktop-environment.xfce.enable = false;
my-namespace.desktop-environment.gnome.enable = true;
my-namespace.desktop-environment.kde.enable = false;
my-namespace.desktop-environment.hyprland.enable = false;
my-namespace.desktop-environment.cosmic.enable = false;
my-namespace.performance-tuning.enable = true;
my-namespace.file-organization.enable = true;
# GNOME-keyring
my-namespace.gnome-keyring.enable = true;
# CS Tools
my-namespace.cs-tools.enable = true;
users.users.andreas = {
isNormalUser = true;
description = "Andreas Schaafsma";
extraGroups = [
"networkmanager"
"wheel"
"libvirtd"
"plugdev"
"docker"
"gamemode"
];
packages = with pkgs; [
# Packages from inputsq
# inputs.game-of-life.packages.x86_64-linux.default
inputs.zen-browser.packages.x86_64-linux.default
# inputs.anikki.packages.x86_64-linux.default
# We want flatpak support
flatpak
# GNOME shit
thunderbird
soundwireserver
# vscode
# discord
spotify
appimage-run
prismlauncher #replaces broken minecraft package
trilium-desktop
terraform
virt-manager
nil
codex
# thunderbird
];
};
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
programs.anime-games-launcher.enable = true;
services.gnome.gnome-remote-desktop.enable = true;
my-namespace.keychron-keyboard.enable = true;
# lib.my-namespace.home.stream-tools.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
59010 #SoundWireServer
5901
5001
11434
3389 #RDP
22 #ssh
];
networking.firewall.allowedUDPPorts = [
59010 #SoundWireServer
5901
5001
11434
3389 #RDP
22 #ssh
];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# Install firefox.
programs.firefox.enable = true;
nixpkgs.config.allowBroken = true;
powerManagement.cpuFreqGovernor = "performance";
# Set up system Packages
environment.sessionVariables.GI_TYPELIB_PATH =
lib.makeSearchPath "lib/girepository-1.0" [
pkgs.my-namespace.rounded-blur
];
environment.sessionVariables = {
# If you are using Hyprland, labwc, or Sway (wlroots-based):
WLR_DRM_NO_ATOMIC = "1";
KWIN_DRM_DISABLE_TRIPLE_BUFFERING="1";
# If you are using KDE Plasma (KWin):
KWIN_FORCE_SW_CURSOR = "1";
# For modern wlroots (and Aquamarine in Hyprland) to force software cursors:
WLR_NO_HARDWARE_CURSORS = "1";
};
environment.systemPackages = with pkgs; [
git
wine
# bottles
gparted
ntfs3g
ntfsprogs
synergy
mangohud
my-namespace.udev-steelseries
my-namespace.linux-wallpaperengine
my-namespace.rounded-blur
my-namespace.rounded-windows-bms
my-namespace.cs-demo-manager
vscode-modernized
(pkgs.writeShellScriptBin "switch-to-desktop" ''
#!/bin/sh
# Kill Steam and return to display manager
pkill steam || true
pkill gamescope || true
# End the session cleanly
loginctl terminate-session "$XDG_SESSION_ID"
'')
(pkgs.writeShellScriptBin "steamos-session-select" ''
#!/bin/sh
exec switch-to-desktop
'')
# Vulkan packages for Steam
mesa
vulkan-loader
vulkan-validation-layers
vulkan-extension-layer
vulkan-tools
libva
libva-utils
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
]
++ installedPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld; #replaces nix-ld-rs
};
services.flatpak.enable = true;
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
services.openssh = {
enable = true;
settings.PasswordAuthentication = true;
# settings = {
# # passwordAuthentication = true;
# };
};
# services.xrdp.enable = true;
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
# services.xrdp.defaultWindowManager = "startxfce4";
# services.xrdp.openFirewall = true;
# services.xrdp.audio.enable = false;
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
# If no user is logged in, the machine will power down after 20 minutes.
# systemd.targets.sleep.enable = false;
# systemd.targets.suspend.enable = false;
# systemd.targets.hibernate.enable = false;
# systemd.targets.hybrid-sleep.enable = false;
};
}