274 lines
7.0 KiB
Nix
274 lines
7.0 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
imports =
|
|
[ # Include the results of the hardware scan.
|
|
./hardware-configuration.nix
|
|
];
|
|
# Allow Nix command and flakes (ofc)
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ]; // you want this
|
|
|
|
# Allow unfree packages
|
|
nixpkgs = {
|
|
config = {
|
|
allowUnfree = true;
|
|
packageOverrides = pkgs: {
|
|
unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") {}; #to install packages from unstable, put "unstable." before the package
|
|
};
|
|
};
|
|
};
|
|
|
|
# Boot
|
|
boot = {
|
|
loader = {
|
|
timeout = 2;
|
|
efi = {
|
|
canTouchEfiVariables = true; # allows dual booting windows i think
|
|
};
|
|
grub = {
|
|
efiSupport = true;
|
|
device = "nodev";
|
|
theme = pkgs.catppuccin-grub; #nice grub theme
|
|
};
|
|
};
|
|
plymouth = {
|
|
enable = true;
|
|
theme = "catppuccin-mocha"; # nice plymouth theme
|
|
themePackages = with pkgs; [
|
|
# By default we would install all themes
|
|
(catppuccin-plymouth.override {
|
|
variant = "mocha";
|
|
})
|
|
];
|
|
};
|
|
};
|
|
|
|
# Use latest kernel.
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
# Networking settings
|
|
networking.hostName = "mobile02"; # Define your hostname. #change this to whatever u want ur hostname to be (will kick you off wifi)
|
|
networking.networkmanager.enable = true; #nmtui the goat
|
|
|
|
# Enable bluetooth
|
|
hardware.bluetooth.enable = true;
|
|
|
|
# Opengl and vulkan
|
|
hardware.graphics = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [ # change if not intel graphics
|
|
vaapiIntel
|
|
vaapiVdpau
|
|
];
|
|
};
|
|
|
|
# Set your time zone.
|
|
time.timeZone = "Europe/London"; # obvious
|
|
|
|
# Locale
|
|
i18n.defaultLocale = "en_GB.UTF-8";
|
|
i18n.extraLocaleSettings = {
|
|
LC_ADDRESS = "en_GB.UTF-8";
|
|
LC_IDENTIFICATION = "en_GB.UTF-8";
|
|
LC_MEASUREMENT = "en_GB.UTF-8";
|
|
LC_MONETARY = "en_GB.UTF-8";
|
|
LC_NAME = "en_GB.UTF-8";
|
|
LC_NUMERIC = "en_GB.UTF-8";
|
|
LC_PAPER = "en_GB.UTF-8";
|
|
LC_TELEPHONE = "en_GB.UTF-8";
|
|
LC_TIME = "en_GB.UTF-8";
|
|
};
|
|
|
|
# Windowing Systems
|
|
services.xserver.enable = true;
|
|
services.displayManager.sddm = {
|
|
enable = true;
|
|
theme = "catppuccin-mocha"; # login theme
|
|
package = pkgs.kdePackages.sddm;
|
|
};
|
|
programs.hyprland.enable = true; # hyprland and io management
|
|
security.polkit.enable = true;
|
|
|
|
# Keymap
|
|
services.xserver.xkb = {
|
|
layout = "gb";
|
|
variant = "";
|
|
};
|
|
console.keyMap = "uk";
|
|
|
|
# Enable CUPS to print documents. (idk why this is here)
|
|
|
|
# Pipewire
|
|
services.pulseaudio.enable = false; # fuck pulseaudio
|
|
security.rtkit.enable = true;
|
|
services.pipewire = { # my goat pipewire
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
# Local User
|
|
users.users.user01 = { # change user01 to what u want ur username to be
|
|
isNormalUser = true;
|
|
shell = pkgs.zsh; # best shell ovs
|
|
description = "user01"; # useless lol
|
|
extraGroups = [ "input" "networkmanager" "docker" "wheel" ]; # docker not needed, but incase u want to install
|
|
packages = with pkgs; [ # packages that are installed only for ur user (if you switch user then these wont be available)
|
|
# Ricing
|
|
bibata-cursors
|
|
catppuccin-gtk
|
|
# (builtins.getFlake "/etc/nixos/way-edges").packages.${pkgs.system}.default (ignore this)
|
|
waybar
|
|
swaynotificationcenter
|
|
fuzzel
|
|
swww # to set wallpapers, "swww img (path to img)
|
|
oh-my-posh # terminal shell
|
|
|
|
# Terminal
|
|
carapace # better autocomplete
|
|
kitty
|
|
github-cli
|
|
light
|
|
bluetuith # bluetooth tui if u want it
|
|
wget
|
|
playerctl
|
|
git
|
|
fastfetch
|
|
lsd # better ls
|
|
# juce (ignore)
|
|
stow # for config management
|
|
fzf
|
|
ripgrep # nvim stuff
|
|
zsh-autocomplete
|
|
# (if u want) nodejs
|
|
lazygit
|
|
tailscale
|
|
|
|
# Thunar stuff
|
|
xfce.thunar
|
|
xfce.thunar-volman
|
|
xfce.thunar-vcs-plugin
|
|
xfce.thunar-archive-plugin
|
|
|
|
# Apps
|
|
pavucontrol
|
|
firefox
|
|
# tor-browser (if u want)
|
|
# gotify-desktop (ignore this, it's useless)
|
|
techmino
|
|
mpv
|
|
prismlauncher
|
|
delfin
|
|
libreoffice-qt6
|
|
syncthing
|
|
xremap
|
|
blueman
|
|
];
|
|
};
|
|
|
|
# Zsh
|
|
programs.zsh = { # terminal config
|
|
enable = true;
|
|
enableCompletion = true;
|
|
enableBashCompletion = true;
|
|
autosuggestions.enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
histSize = 10000;
|
|
ohMyZsh = {
|
|
enable = true;
|
|
plugins = [ "git" "dirhistory" "history" ];
|
|
};
|
|
};
|
|
|
|
# Ntfy Notifcations (doesnt work, feel free to delete)
|
|
systemd.user.services.ntfy-listener = {
|
|
description = "NTFY listener for Hyprland notifications";
|
|
after = [ "network-online.target" ];
|
|
wants = [ "network-online.target" ];
|
|
|
|
serviceConfig = {
|
|
ExecStart = "/home/user01/.config/scripts/.venv/bin/python /home/user01/.config/scripts/notify.py";
|
|
Restart = "always";
|
|
RestartSec = 5;
|
|
Environment = "DISPLAY=:0 XDG_RUNTIME_DIR=/run/user/%U PATH=/run/current-system/sw/bin";
|
|
WorkingDirectory = "/home/user01"; # optional, but can help
|
|
};
|
|
|
|
wantedBy = [ "default.target" ];
|
|
};
|
|
|
|
# User programs
|
|
programs.steam.enable = true;
|
|
|
|
# User Services (disable some of these idk)
|
|
services.gvfs.enable = true;
|
|
services.tailscale.enable = true;
|
|
services.printing.enable = true;
|
|
services.upower.enable = true;
|
|
services.openssh.enable = true;
|
|
|
|
# Fonts
|
|
fonts.packages = with pkgs; [
|
|
nerd-fonts.fira-mono # best terminal font
|
|
];
|
|
|
|
fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ];
|
|
environment.systemPackages = with pkgs; [ # packages that are installed systemwide (dw u can still use user packages with sudo)
|
|
|
|
# Catppuccin sddm theme
|
|
(pkgs.catppuccin-sddm.override {
|
|
flavor = "mocha";
|
|
font = "Fira Mono Nerd Font";
|
|
fontSize = "11";
|
|
background = null;
|
|
})
|
|
# Terminal things
|
|
(pkgs.symlinkJoin {
|
|
name = "nvim-with-lsp";
|
|
paths = [ pkgs.neovim ];
|
|
buildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/nvim \
|
|
--prefix PATH : ${pkgs.lib.makeBinPath [ # put lsps and stuff in this list, won't be accessible to anything but nvim (need to precede with pkgs.)
|
|
pkgs.lua-language-server
|
|
pkgs.vscode-langservers-extracted
|
|
pkgs.emmet-ls
|
|
pkgs.ripgrep
|
|
pkgs.typescript-language-server
|
|
pkgs.tailwindcss-language-server
|
|
pkgs.stylua
|
|
]}
|
|
'';
|
|
})
|
|
vim # dont remove or u die (nano is always installed just in case)
|
|
unzip
|
|
python310 # Its python like come on
|
|
|
|
# Graphics Drivers
|
|
mesa
|
|
vulkan-tools
|
|
|
|
# FileSystem Dependancies
|
|
gvfs
|
|
|
|
# C copmpiler
|
|
clang
|
|
|
|
# XDG Desktop Portal Etc
|
|
xdg-desktop-portal
|
|
xdg-desktop-portal-hyprland
|
|
|
|
# Other things (from gnome)
|
|
glib
|
|
gnutls
|
|
appimage-run
|
|
libnotify
|
|
gsettings-desktop-schemas
|
|
];
|
|
|
|
# The comment (don't ever change this number, its important)
|
|
system.stateVersion = "25.05"; # Did you read the comment?
|
|
|
|
}
|