2024-10-30 13:51:36 +10:00
|
|
|
{
|
|
|
|
|
pkgs,
|
|
|
|
|
inputs,
|
|
|
|
|
...
|
2024-10-30 19:45:26 +10:00
|
|
|
}:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
home-manager = builtins.fetchTarball {
|
|
|
|
|
url = "https://github.com/nix-community/home-manager/archive/master.tar.gz";
|
|
|
|
|
sha256 = "0kg9iaixqygpncw7avgh1grwyjgnfc9i7k9pk8hc4xrvr8jv2l3c";
|
|
|
|
|
};
|
|
|
|
|
in
|
|
|
|
|
{
|
2024-10-30 13:51:36 +10:00
|
|
|
imports = [
|
2024-10-30 19:45:26 +10:00
|
|
|
./hardware-configuration.nix
|
|
|
|
|
(import "${home-manager}/nixos")
|
2024-10-30 23:25:57 +10:00
|
|
|
inputs.spicetify-nix.nixosModules.default
|
2024-10-30 19:45:26 +10:00
|
|
|
];
|
2024-10-30 13:51:36 +10:00
|
|
|
|
2024-10-30 23:25:57 +10:00
|
|
|
programs.spicetify =
|
|
|
|
|
let
|
|
|
|
|
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
enable = true;
|
|
|
|
|
enabledExtensions = with spicePkgs.extensions; [
|
|
|
|
|
adblock
|
|
|
|
|
hidePodcasts
|
|
|
|
|
shuffle # shuffle+ (special characters are sanitized out of extension names)
|
|
|
|
|
];
|
|
|
|
|
#theme = spicePkgs.themes.catppuccin;
|
|
|
|
|
#colorScheme = "mocha";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-10-30 13:51:36 +10:00
|
|
|
# Use the systemd-boot EFI boot loader.
|
|
|
|
|
# TODO: use GRUB2 instead
|
2024-11-04 11:59:14 +10:00
|
|
|
#boot.loader.systemd-boot.enable = true;
|
|
|
|
|
#boot.loader.efi.canTouchEfiVariables = true;
|
|
|
|
|
boot.loader = {
|
|
|
|
|
efi = {
|
|
|
|
|
canTouchEfiVariables = true;
|
|
|
|
|
efiSysMountPoint = "/boot/efi";
|
|
|
|
|
};
|
|
|
|
|
grub = {
|
|
|
|
|
efiSupport = true;
|
|
|
|
|
#efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system
|
|
|
|
|
device = "nodev";
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-10-30 13:51:36 +10:00
|
|
|
|
|
|
|
|
# Set your time zone.
|
|
|
|
|
time.timeZone = "Australia/Brisbane";
|
|
|
|
|
|
|
|
|
|
# Select internationalisation properties.
|
|
|
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
|
|
|
console = {
|
|
|
|
|
font = "Lat2-Terminus16";
|
|
|
|
|
keyMap = "us";
|
|
|
|
|
#useXkbConfig = true; # use xkb.options in tty.
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ----- NETWORKING SECTION -----
|
|
|
|
|
networking.hostName = "myputer";
|
|
|
|
|
# Pick only one of the below networking options.
|
|
|
|
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
|
|
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
|
|
|
|
|
|
|
|
|
# Open ports in the firewall.
|
|
|
|
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
|
|
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
|
|
|
# Or disable the firewall altogether.
|
|
|
|
|
networking.firewall.enable = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ----- SERVICES -----
|
|
|
|
|
services = {
|
|
|
|
|
# Set display manager (login screen)
|
|
|
|
|
displayManager = {
|
|
|
|
|
sddm = {
|
|
|
|
|
enable = true;
|
|
|
|
|
theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
|
|
|
|
|
# enable experimental sddm support for wayland
|
|
|
|
|
wayland.enable = true;
|
|
|
|
|
};
|
|
|
|
|
defaultSession = "hyprland";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Enable sound
|
|
|
|
|
# TODO: use the modules/core/pipewire.nix module instead :)
|
|
|
|
|
pipewire = {
|
|
|
|
|
enable = true;
|
|
|
|
|
pulse.enable = true;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2024-11-07 17:37:15 +10:00
|
|
|
# allow wheel group to use passwordless sudo
|
|
|
|
|
security.sudo.wheelNeedsPassword = false;
|
2024-10-30 19:45:26 +10:00
|
|
|
users = {
|
2024-11-04 11:59:14 +10:00
|
|
|
# using fish as the login shell tends
|
|
|
|
|
# to go very poorly because it isn't
|
|
|
|
|
# POSIX compliant, so we'll just use
|
|
|
|
|
# simple Bash then :)
|
2024-10-30 19:45:26 +10:00
|
|
|
defaultUserShell = pkgs.bash;
|
|
|
|
|
|
|
|
|
|
users = {
|
|
|
|
|
# just me fr (personal account)
|
|
|
|
|
me = {
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
extraGroups = [ "wheel" ];
|
2024-11-04 11:59:14 +10:00
|
|
|
shell = pkgs.bash; #pkgs.fish
|
2024-10-30 19:45:26 +10:00
|
|
|
packages = with pkgs; [
|
|
|
|
|
firefox
|
|
|
|
|
nitch
|
|
|
|
|
starfetch
|
|
|
|
|
tldr
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# programming/development account
|
|
|
|
|
dev = {
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
extraGroups = [ "wheel" ];
|
2024-11-04 11:59:14 +10:00
|
|
|
shell = pkgs.bash; #pkgs.zsh
|
2024-10-30 19:45:26 +10:00
|
|
|
packages = with pkgs; [
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# user for my professional jobs and stuff
|
|
|
|
|
ae = {
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
extraGroups = [ "wheel" ];
|
2024-11-04 11:59:14 +10:00
|
|
|
shell = pkgs.bash; #pkgs.fish
|
2024-10-30 19:45:26 +10:00
|
|
|
packages = with pkgs; [
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-10-30 13:51:36 +10:00
|
|
|
};
|
|
|
|
|
|
2024-11-07 17:37:15 +10:00
|
|
|
home-manager = {
|
|
|
|
|
users.me = import ../../homes/me;
|
|
|
|
|
sharedModules = [
|
|
|
|
|
#inputs.nixcord.homeManagerModules.nixcord
|
|
|
|
|
#inputs.nixvim.homeManagerModules.nixvim
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2024-10-30 13:51:36 +10:00
|
|
|
# ---- SYSTEM PACKAGES -----
|
|
|
|
|
environment.systemPackages = with pkgs; [
|
2024-11-04 11:59:14 +10:00
|
|
|
# User Environment
|
|
|
|
|
inputs.swww.packages.${pkgs.system}.swww
|
|
|
|
|
#vesktop
|
2024-10-30 23:34:23 +10:00
|
|
|
helvum
|
|
|
|
|
easyeffects
|
2024-11-04 11:59:14 +10:00
|
|
|
ani-cli
|
|
|
|
|
wl-clipboard # clipboard for wayland
|
|
|
|
|
|
2024-11-07 17:37:15 +10:00
|
|
|
python311 # I use 3.11 since it's in a pretty stable state now
|
|
|
|
|
poetry # python dependency management and packaging
|
2024-11-04 11:59:14 +10:00
|
|
|
|
|
|
|
|
# fish plugins
|
|
|
|
|
grc # colorise command outputs
|
2024-10-30 23:34:23 +10:00
|
|
|
|
2024-11-07 17:37:15 +10:00
|
|
|
httpie
|
|
|
|
|
curlie
|
|
|
|
|
zoxide
|
|
|
|
|
doggo
|
|
|
|
|
|
2024-10-30 17:35:16 +10:00
|
|
|
# Pretty necessary
|
2024-10-30 13:51:36 +10:00
|
|
|
git
|
2024-11-07 17:37:15 +10:00
|
|
|
brightnessctl
|
|
|
|
|
acpi
|
|
|
|
|
|
2024-11-04 11:59:14 +10:00
|
|
|
# Unix Commands
|
2024-10-30 17:35:16 +10:00
|
|
|
wget
|
|
|
|
|
tree
|
2024-10-30 13:51:36 +10:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# Enable the use of certain programs
|
|
|
|
|
programs = {
|
2024-11-04 11:59:14 +10:00
|
|
|
hyprland = {
|
|
|
|
|
enable = true;
|
|
|
|
|
# set the flake package
|
|
|
|
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
|
|
|
# make sure to also set the portal package, so that they are in sync
|
|
|
|
|
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
|
|
|
|
|
|
|
|
|
xwayland.enable = true;
|
|
|
|
|
#systemd.enable = true;
|
|
|
|
|
};
|
|
|
|
|
|
2024-10-30 17:35:16 +10:00
|
|
|
|
2024-11-04 11:59:14 +10:00
|
|
|
zsh.enable = true;
|
|
|
|
|
fish.enable = true;
|
2024-10-30 19:45:26 +10:00
|
|
|
|
2024-10-30 17:35:16 +10:00
|
|
|
neovim = {
|
|
|
|
|
enable = true;
|
|
|
|
|
defaultEditor = true;
|
|
|
|
|
viAlias = true;
|
|
|
|
|
vimAlias = true;
|
|
|
|
|
configure = {
|
|
|
|
|
customRC = ''
|
|
|
|
|
set number
|
|
|
|
|
set tabstop=4
|
|
|
|
|
set shiftwidth=4
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-11-04 11:59:14 +10:00
|
|
|
|
|
|
|
|
# I want to use fish as my login shell but it always goes terrible
|
|
|
|
|
# cause it isn't POSIX compliant, so instead Bash is my login and
|
|
|
|
|
# will just exec fish (^-^)
|
|
|
|
|
bash = {
|
|
|
|
|
interactiveShellInit = ''
|
|
|
|
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
|
|
|
|
then
|
|
|
|
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
|
|
|
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
|
|
|
|
fi
|
|
|
|
|
'';
|
|
|
|
|
};
|
2024-10-30 17:35:16 +10:00
|
|
|
};
|
|
|
|
|
|
2024-10-30 19:45:26 +10:00
|
|
|
|
2024-10-30 17:35:16 +10:00
|
|
|
|
|
|
|
|
# ----- FONTS -----
|
|
|
|
|
fonts = {
|
|
|
|
|
enableDefaultPackages = true; # no clue what this line does tbh
|
2024-10-30 19:45:26 +10:00
|
|
|
packages = with pkgs; [
|
2024-10-30 23:25:57 +10:00
|
|
|
(nerdfonts.override { fonts = [ "Cousine" # its already i guess
|
|
|
|
|
"Iosevka" # nah nah
|
|
|
|
|
"IosevkaTerm" # big nah
|
|
|
|
|
"CascadiaCode" # potential
|
|
|
|
|
"FiraCode" # potential
|
2024-11-04 11:59:14 +10:00
|
|
|
"JetBrainsMono" # for my rofi theme
|
2024-10-30 23:25:57 +10:00
|
|
|
"Hasklig"
|
|
|
|
|
"Hack"]; })
|
2024-10-30 17:35:16 +10:00
|
|
|
|
|
|
|
|
# texlive maintains a noto-emoji flake
|
|
|
|
|
texlivePackages.noto-emoji
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
fontconfig = {
|
|
|
|
|
defaultFonts = {
|
|
|
|
|
serif = [ "Iosevka" ]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font
|
|
|
|
|
sansSerif = [ "Iosevka "];
|
|
|
|
|
monospace = [ "Cousine" ];
|
|
|
|
|
emoji = [ "Noto Emoji" ];
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-10-30 13:51:36 +10:00
|
|
|
};
|
|
|
|
|
|
2024-10-30 17:35:16 +10:00
|
|
|
|
2024-11-04 11:59:14 +10:00
|
|
|
# ----- STYLIX -----
|
|
|
|
|
|
|
|
|
|
#stylix = {
|
|
|
|
|
# enable = true;
|
|
|
|
|
# image = pkgs.fetchurl {
|
|
|
|
|
# url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg";
|
|
|
|
|
# sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50=";
|
|
|
|
|
# };
|
|
|
|
|
#
|
|
|
|
|
# # Stylix will automatically theme applications
|
|
|
|
|
# #autoEnable = true;
|
|
|
|
|
# #image = ../../wallpapers/wall.png;
|
|
|
|
|
# #image = "/home/me/nixdots/wallpapers/ghibli-esque-valley.png";
|
|
|
|
|
#};
|
|
|
|
|
|
2024-10-30 19:45:26 +10:00
|
|
|
|
|
|
|
|
|
2024-10-30 13:51:36 +10:00
|
|
|
# Enable the new CLI commands and the flakes as experimental features
|
|
|
|
|
nix.settings.experimental-features = [
|
|
|
|
|
"nix-command"
|
|
|
|
|
"flakes"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# 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;
|
|
|
|
|
# };
|
|
|
|
|
|
|
|
|
|
# Enable the OpenSSH daemon.
|
|
|
|
|
# services.openssh.enable = true;
|
|
|
|
|
|
2024-11-04 11:59:14 +10:00
|
|
|
|
|
|
|
|
# Enable OpenGL
|
|
|
|
|
hardware = {
|
|
|
|
|
graphics.enable = true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2024-10-30 13:51:36 +10:00
|
|
|
|
|
|
|
|
# DO NOT MODIFY
|
|
|
|
|
system.stateVersion = "24.05"; # Did you read the comment?
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|