341 lines
6.6 KiB
Nix
341 lines
6.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
|
|
{
|
|
imports = [
|
|
/etc/nixos/hardware-configuration.nix
|
|
];
|
|
|
|
# Nix settings
|
|
## Limit Cores on rebuild and enable Flakes
|
|
nix = {
|
|
registry = {
|
|
voidarc = {
|
|
from = {
|
|
id = "voidarc";
|
|
type = "indirect";
|
|
};
|
|
to = {
|
|
type = "git";
|
|
url = "https://git.voidarc.co.uk/voidarc/flakes.git";
|
|
};
|
|
};
|
|
};
|
|
settings = {
|
|
cores = 6;
|
|
download-buffer-size = 524288000;
|
|
experimental-features = [
|
|
"nix-command"
|
|
"flakes"
|
|
];
|
|
};
|
|
};
|
|
|
|
## Allow unfree packages and add pkgs.unstable
|
|
nixpkgs = {
|
|
config = {
|
|
allowUnfree = true;
|
|
packageOverrides = pkgs: {
|
|
unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") {
|
|
config = {
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
## Optimise Nix store on rebuild and collect garbage as a service
|
|
nix.optimise.automatic = true;
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "daily";
|
|
options = "--delete-older-than 5d";
|
|
};
|
|
|
|
# Bootloader theming and plymouth
|
|
boot = {
|
|
loader = {
|
|
timeout = 2;
|
|
efi = {
|
|
canTouchEfiVariables = true;
|
|
};
|
|
grub = {
|
|
efiSupport = true;
|
|
device = "nodev";
|
|
theme = pkgs.catppuccin-grub;
|
|
};
|
|
};
|
|
plymouth = {
|
|
enable = true;
|
|
theme = "catppuccin-mocha";
|
|
themePackages = with pkgs; [
|
|
# By default we would install all themes
|
|
(catppuccin-plymouth.override {
|
|
variant = "mocha";
|
|
})
|
|
];
|
|
};
|
|
};
|
|
|
|
## Use latest kernel
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
# Bluetooth and Networking
|
|
hardware.bluetooth.enable = true;
|
|
hardware.xpadneo.enable = true;
|
|
|
|
networking.networkmanager.enable = true;
|
|
networking.networkmanager.dns = "none";
|
|
networking.nameservers = [
|
|
"1.1.1.1"
|
|
"8.8.8.8"
|
|
];
|
|
|
|
# Locale
|
|
time.timeZone = "Europe/London";
|
|
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";
|
|
};
|
|
|
|
# Userspace Stuff
|
|
## Keymap
|
|
services.xserver.xkb = {
|
|
layout = "gb";
|
|
variant = "";
|
|
};
|
|
console.keyMap = "uk";
|
|
|
|
## Desktop
|
|
services.xserver.enable = true;
|
|
programs.hyprland = {
|
|
enable = true;
|
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
|
};
|
|
security.polkit.enable = true;
|
|
|
|
## Audio Server
|
|
services.pulseaudio.enable = false;
|
|
security.rtkit.enable = true;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
# Local User
|
|
## User config
|
|
users.users.user01 = {
|
|
isNormalUser = true;
|
|
shell = pkgs.zsh;
|
|
description = "user01";
|
|
extraGroups = [
|
|
"input"
|
|
"root"
|
|
"plugdev"
|
|
"bluetooth"
|
|
"networkmanager"
|
|
"docker"
|
|
"wheel"
|
|
];
|
|
packages =
|
|
with pkgs;
|
|
let
|
|
input =
|
|
{
|
|
package,
|
|
output ? "default",
|
|
}:
|
|
inputs.${package}.packages.${pkgs.stdenv.hostPlatform.system}.${output};
|
|
wrap =
|
|
{
|
|
name,
|
|
pkg,
|
|
modules,
|
|
}:
|
|
pkgs.symlinkJoin {
|
|
inherit name;
|
|
paths = [ pkg ];
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/${name} \
|
|
--prefix PATH : ${pkgs.lib.makeBinPath modules}
|
|
'';
|
|
};
|
|
in
|
|
[
|
|
# Ricing
|
|
## Desktop
|
|
bibata-cursors
|
|
catppuccin-gtk
|
|
waybar
|
|
hyprlock
|
|
dunst
|
|
wlogout
|
|
wpaperd
|
|
|
|
## Desktop Utilities
|
|
grimblast
|
|
gsettings-desktop-schemas
|
|
wl-clipboard
|
|
(wrap {
|
|
name = "otter-launcher";
|
|
pkg = (
|
|
input {
|
|
package = "otter-launcher";
|
|
}
|
|
);
|
|
modules = [
|
|
chafa
|
|
jq
|
|
];
|
|
})
|
|
(input { package = "fsel"; })
|
|
|
|
# Terminal
|
|
## Styling / Functionality
|
|
oh-my-posh
|
|
carapace
|
|
zsh-autocomplete
|
|
bat
|
|
|
|
## Tools
|
|
lazygit
|
|
p7zip-rar
|
|
any-nix-shell
|
|
dysk
|
|
bluetui
|
|
fzf
|
|
ripgrep
|
|
wget
|
|
htop
|
|
playerctl
|
|
git
|
|
lsd
|
|
(input {
|
|
package = "doot";
|
|
})
|
|
|
|
## Other CLI Apps
|
|
nodejs
|
|
fastfetch
|
|
zellij
|
|
cava
|
|
cmatrix
|
|
opencode
|
|
tailscale
|
|
syncthing
|
|
(input { package = "norgolith"; })
|
|
jellyfin-tui
|
|
|
|
# Apps
|
|
## Actual Useful Stuff
|
|
nemo
|
|
kitty
|
|
firefox
|
|
gotify-desktop
|
|
pavucontrol
|
|
mpv
|
|
input-remapper
|
|
|
|
## Other Nonsense
|
|
tor-browser
|
|
techmino
|
|
prismlauncher
|
|
delfin
|
|
(input {
|
|
package = "chataigne";
|
|
})
|
|
];
|
|
};
|
|
|
|
## Zsh
|
|
programs.zsh = {
|
|
enable = true;
|
|
enableCompletion = true;
|
|
enableBashCompletion = true;
|
|
autosuggestions.enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
histSize = 10000;
|
|
ohMyZsh = {
|
|
enable = true;
|
|
plugins = [
|
|
"git"
|
|
"dirhistory"
|
|
"history"
|
|
];
|
|
};
|
|
};
|
|
users.defaultUserShell = pkgs.zsh;
|
|
|
|
## User programs
|
|
programs = {
|
|
dconf.enable = true;
|
|
xfconf.enable = true;
|
|
gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; # For wlogout svgs
|
|
};
|
|
|
|
## User Services
|
|
services = {
|
|
gvfs.enable = true;
|
|
input-remapper.enable = true;
|
|
tailscale.enable = true;
|
|
printing.enable = true;
|
|
upower.enable = true;
|
|
openssh.enable = true;
|
|
avahi.enable = true;
|
|
};
|
|
|
|
## Fonts
|
|
fonts.packages = with pkgs; [
|
|
nerd-fonts.fira-mono
|
|
];
|
|
fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ];
|
|
|
|
# System Packages
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
# Utilities
|
|
inputs.nvim-wrapped.packages.${stdenv.hostPlatform.system}.default
|
|
vim
|
|
unzip
|
|
python310
|
|
usbutils
|
|
curlWithGnuTls
|
|
|
|
# System
|
|
mesa
|
|
vulkan-tools
|
|
gvfs
|
|
clang
|
|
xdg-desktop-portal
|
|
xdg-desktop-portal-hyprland
|
|
glib
|
|
gnutls
|
|
liblzf
|
|
librsvg
|
|
appimage-run
|
|
libnotify
|
|
gsettings-desktop-schemas
|
|
];
|
|
|
|
# The comment
|
|
system.stateVersion = "25.05"; # Did you read the comment?
|
|
|
|
}
|