first try

This commit is contained in:
2025-12-07 00:53:22 -05:00
commit e048d4d5c7
17 changed files with 455 additions and 0 deletions

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
This config is NOT a template, if you decide to use this DO NOT ASK FOR SUPPORT, I WILL block you.
Anything else, feel free to ask about!
Yes I know it's bad ^.^

43
flake.nix Normal file
View File

@@ -0,0 +1,43 @@
{
description = "MY NixOS configuration BITCH not yours fuck YOU honestly";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/master";
# The `follows` keyword in inputs is used for inheritance.
# Here, `inputs.nixpkgs` of home-manager is kept consistent with
# the `inputs.nixpkgs` of the current flake,
# to avoid problems caused by different versions of nixpkgs.
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
home-manager,
}@inputs: let
inherit (self) outputs;
nix.registry.nixos.flake = inputs.self;
environment.etc."nix/inputs/nixpkgs".source = nixpkgs.outPath;
nix.nixPath = ["nixpkgs=${nixpkgs.outPath}"];
in{
nixosConfigurations = {
homepc = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs;};
system = "x86_64-linux";
modules = [
./machines/homepc/configuration.nix
{
home-manager.extraSpecialArgs = {inherit inputs outputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.laythe = import ./machines/homepc/home.nix;
}
]
}
}
};
}

117
global/default.nix Normal file
View File

@@ -0,0 +1,117 @@
# This is for global config I DEFINITELY want on all machines, this should only include basic utilities and be relatively small.
# There is no order for where things are in this, it's a little messy.
{pkgs, ...}:
{
time.timezone = "America/Eastern"; # Is there a better way for this? What if I'm travelling?
# 🇺🇸
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# TODO: Look and find out if there's a better way to configure printers, my Brother needs to be reconnected every boot :/
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
publish = {
enable = true;
userServices = true;
};
};
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
programs.adb.enable = true; # Bit heavy but you never know when you might need it...
users.users.laythe = {
isNormalUser = true;
description = "laythe";
extraGroups = [ "networkmanager" "wheel" "docker" "adbusers" "jackaudio" "podman" ];
#To make podman work
subUidRanges = [{ startUid = 100000; count = 65536; }];
subGidRanges = [{ startGid = 100000; count = 65536; }];
};
programs.appimage = {
enable = true;
binfmt = true;
package = pkgs.appimage-run.override {
extraPkgs = pkgs: [
];
};
};
services.flatpak.enable = true;
programs.nix-ld.enable = true;
nixpkgs.config.allowUnfree = true;
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "daily"; # Maybe the solution is to buy more storage for my devices :p
options = "--delete-older-than 3d";
};
environment.systemPackages = with pkgs; [
git
wget
wineWowPackages.stable # Heavy but really annoying to not have when you need it
winetricks
gparted
unrar
electrum
qpwgraph
libimobiledevice
ifuse
neofetch
gimp # Despite the fact it falls under creative an image editor is too important to leave out.
zip
xz
unzip
p7zip
dnsutils
file
which
tree
gnused
gnutar
gawk
zstd
lsof
sysstat
lm_sensors
ethtool
pciutils # lspci
usbutils # lsusb
ffmpeg-full
];
services.usbmuxd = {
enable = true;
package = pkgs.usbmuxd2;
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
}

15
home/bash.nix Normal file
View File

@@ -0,0 +1,15 @@
{}:
{
programs.bash = {
enable = true;
enableCompletion = true;
bashrcExtra = ''
export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
'';
shellAliases = {
activate-linux = "echo Done!"; # I am a shitposter at heart
};
};
}

6
home/default.nix Normal file
View File

@@ -0,0 +1,6 @@
{
imports = [
./git.nix
./bash.nix
];
}

8
home/git.nix Normal file
View File

@@ -0,0 +1,8 @@
{...}:
{
programs.git = {
enable = true;
userName = "TheCrazyInsanity";
userEmail = "notarealemailcheckmysite@thecrazyinsanity.win";
};
}

View File

@@ -0,0 +1,136 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
../../modules/communication/default.nix
../../modules/creative/default.nix
../../modules/development/default.nix
../../modules/fabrication/default.nix
../../modules/gaming/default.nix
../../modules/kde/default.nix
../../modules/virtualization/default.nix
../../modules/vr/default.nix
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "homepc"; # Define your hostname.
# Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true;
# Only computer I own that can actually run ollama, and I don't want to make an ai folder.
services.ollama = {
enable = true;
acceleration = "cuda";
host = "[::]";
};
# Set your time zone.
# time.timeZone = "Europe/Amsterdam";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
services.xserver.enable = true; # On anything else modern this should be false.
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# services.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.alice = {
# isNormalUser = true;
# extraGroups = [ "wheel" ]; # Enable sudo for the user.
# packages = with pkgs; [
# tree
# ];
# };
# programs.firefox.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.11"; # Did you read the comment?
}

View File

@@ -0,0 +1,28 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
swapDevices =
[ { device = "/dev/disk/by-uuid/7762478c-1123-4a1f-9402-1bba3723e53d"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.networkmanager.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true; # Fine since it's not a laptop.
system.stateVersion = "24.11"; # No touchy
}

14
machines/homepc/home.nix Normal file
View File

@@ -0,0 +1,14 @@
{config, pkgs, lib, inputs, outputs, ...}:
{
# These both are probably always going to be the same, but I'll keep them local just in case:tm:
home.username = "laythe";
home.homeDirectory = "/home/laythe";
imports = [
../../home/default.nix
];
home.stateVersion = "24.11";
programs.home-manager.enable = true;
}

View File

@@ -0,0 +1,8 @@
{pkgs, ...}:
{
environment.systemPackages = with pkgs; [
discord
jami
element-desktop
]
}

View File

@@ -0,0 +1,9 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
blender
davinci-resolve
shotcut
glaxnimate
kdePackages.kdenlive
]
}

View File

@@ -0,0 +1,7 @@
{pkgs, ...}:
{
environment.systemPackages = with pkgs [
vscode
antigravity # Free Gemini 3 credits was too good of an offer to not take up, even if it requires selling my soul.
];
}

View File

@@ -0,0 +1,7 @@
{pkgs, ...}:
{
environment.systemPackages = with pkgs; [
kicad
cura
];
}

View File

@@ -0,0 +1,16 @@
{pkgs, environment, ...}:
{
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
environment.systemPackages = with pkgs; [
obs-studio
ckan
lutris
prismlauncher
];
}

12
modules/kde/default.nix Normal file
View File

@@ -0,0 +1,12 @@
{pkgs, ...}:
{
# Should be determined by machine config
# services.xserver.enable = true;
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
environment.systemPackages = with pkgs; [
firefox # Odd spot, but my choice of browser is determined by environment.
kdePackages.kate
];
}

View File

@@ -0,0 +1,18 @@
{pkgs, ...}:
{
environment.systemPackages = with pkgs; [
qemu
distrobox
];
programs.virt-manager.enable = true;
users.groups.libvirtd.members = ["laythe"];
virtualisation.libvirtd.enable = true;
virtualisation.spiceUSBRedirection.enable = true;
virtualisation.libvirtd.qemu.swtpm.enable = true;
virtualisation.podman = {
enable = true;
dockerCompat = true;
};
}

6
modules/vr/default.nix Normal file
View File

@@ -0,0 +1,6 @@
{pkgs, ...}:
{
services.wivrn = {
enable = true;
};
}