dotfiles/hosts/myputer/default.nix

234 lines
5 KiB
Nix
Raw Normal View History

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
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";
# };
#};
# 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-10-30 19:45:26 +10:00
users = {
defaultUserShell = pkgs.bash;
users = {
# just me fr (personal account)
me = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.fish;
packages = with pkgs; [
firefox
nitch
starfetch
tldr
];
};
# programming/development account
dev = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.zsh;
packages = with pkgs; [
];
};
# user for my professional jobs and stuff
ae = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.fish;
packages = with pkgs; [
];
};
};
2024-10-30 13:51:36 +10:00
};
2024-10-30 19:45:26 +10:00
home-manager.users.me = import ../../homes/me;
2024-10-30 13:51:36 +10:00
# ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [
2024-10-30 23:34:23 +10:00
# Applications
#kitty (switched to Rio)
vesktop
helvum
easyeffects
2024-10-30 17:35:16 +10:00
# Pretty necessary
#vim
2024-10-30 13:51:36 +10:00
git
2024-10-30 17:35:16 +10:00
# Super duper necessary
wget
tree
2024-10-30 13:51:36 +10:00
];
# Enable the use of certain programs
programs = {
hyprland.enable = true;
fish.enable = true;
zsh.enable = true;
2024-10-30 17:35:16 +10:00
2024-10-30 19:45:26 +10:00
git.enable = true;
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
'';
# set cc=80
};
};
};
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
"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-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;
# DO NOT MODIFY
system.stateVersion = "24.05"; # Did you read the comment?
}