HUUUUGE refactor

This commit is contained in:
Sakooooo 2023-07-07 20:38:41 +03:00
parent aa1ca2fd26
commit a37e283887
Signed by: sako
GPG key ID: 3FD715D87D7725E0
31 changed files with 389 additions and 291 deletions

View file

@ -32,6 +32,7 @@
};
# this shouldnt cause any issues right?
networking.hostName = "sakotop";
networking.networkmanager.enable = true;
time.timeZone = "Africa/Cairo";
@ -45,4 +46,76 @@
# already sold soul to corporations \_O_/
nixpkgs.config.allowUnfree = true;
services.xserver = {
layout = "us";
};
# nix makes alot of garbage so remove it :)
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
# 100% need this everyone probably knows gpg
programs.gnupg.agent = {
enable = true;
pinentryFlavor = "gtk2";
# enableSSHSupport = true;
};
# i dont care what ANYONE says git is always
# a requirement for a nixos system so it is
# also bare minimum
programs.git = {
enable = true;
package = pkgs.gitFull;
};
# bare minimum
# :)
environment.systemPackages = with pkgs; [
neovim
wget
killall
alsa-utils
pulseaudio
pamixer
feh
unzip
gh
htop
tree
];
users.users.sako = {
shell = pkgs.zsh;
isNormalUser = true;
# sudo and networkmanager
extraGroups = [ "wheel" "networkmanager" ];
};
home-manager.useUserPackages = true;
home-manager.users.sako = { pkgs, ...}:{
# CHANGE THIS WHEN THE SYSTEM VERSION
# CHANGES TOO !!!!!!
home.stateVersion = "23.05";
home.packages = [];
home.username = "sako";
home.homeDirectory = "/home/sako";
programs.bash.enable = true;
programs.home-manager.enable = true;
# git
xdg.configFile = {
git = {
source = ../../config/git;
};
};
};
# change this when nixos update blah blah blah
# something read the docs haha
# ok
system.stateVersion = "23.05"; # read the comment
}

View file

@ -9,279 +9,42 @@
../../default.nix
];
# grub (mount efi partition to /boot/efi)
# why /boot/efi? instead of /efi?
# 1. when dualbooting, windows makes the efi partition 100mb instead of 512mb+ (we need this for generations
# and intel microcode)
# 2. nixos does not like /efi :(
#boot.loader = {
# efi = {
# canTouchEfiVariables = true;
# efiSysMountPoint = "/boot/efi";
# };
# grub = {
# devices = [ "nodev" ];
# efiSupport = true;
# enable = true;
# useOSProber = true;
# };
#};
# TODO(sako):: figure out plymouth and why my system is too fast
#boot.plymouth.enable = true;
# for later when i setup flakes
#nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking.hostName = "sakotop"; # Define your hostname.
# 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.
# Set your time zone.
#time.timeZone = "Africa/Cairo";
# 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 xkbOptions in tty.
#};
# Enable the X11 windowing system.
services.xserver = {
enable = true;
# bspwm
windowManager.bspwm.enable = true;
layout = "us";
};
# Configure keymap in X11
#services.xserver.layout = "us";
#services.xserver.xkbOptions = "eurosign:e,caps:escape";
# Nvidia Drivers
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# packages that are unfree because they want to or need to
#nixpkgs.config.allowUnfreePredicate = pkg:
# builtins.elem (lib.getName pkg) [
# "steam"
# "steam-original"
# "discord"
# "widevine-cdm"
# ];
# we already sold our souls to corporations why
# bother at this point
# in default.nix
#nixpkgs.config.allowUnfree = true;
# Bluetooth
hardware.bluetooth = {
enable = true;
settings = {
General = {
ControllerMode = "bredr";
config = {
desktop = {
bspwm.enable = true;
kitty.enable = true;
keepassxc.enable = true;
game = {
steam.enable = true;
lutris.enable = true;
wine.enable = true;
};
};
# i barely use bluetooth so keep it on demand
powerOnBoot = false;
web = {
qutebrowser.enable = true;
};
services.blueman.enable = true;
# Enable CUPS to print documents.
# services.printing.enable = true;
# for some reason this needs to be disabled
sound.enable = false;
# dont like pulseaudio
#hardware.pulseaudio.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
dev = {
editors = {
nvim.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true;
# TODO(sako):: put this in different files
# Define a user account. Don't forget to set a password with passwd.
users.users.sako= {
shell = pkgs.zsh;
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ]; # Enable sudo for the user.
packages = with pkgs; [
firefox
# qutebrowser
qutebrowser-qt6
# qute-keepassxc
python310Packages.pynacl
# adblock
python310Packages.adblock
# end qutebrowser
keepassxc
tree
dmenu
rofi
kitty
polybar
xorg.xbacklight
steam
winetricks
wineWowPackages.staging
lutris
discord
networkmanagerapplet
gcc
python3
python310Packages.pip
rustup
cargo
nodejs
yarn
newsboat
ncmpcpp
];
cpp.enable = true;
javascript.enable = true;
python.enable = true;
rust.enable = true;
};
# TODO(sako):: make overlays in different folder
nixpkgs.overlays = [
(final: prev: { qutebrowser = prev.qutebrowser.override { enableWideVine = true; }; })
(final: prev: { polybar = prev.polybar.override { pulseSupport = true;}; })
];
# garbage collection
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
devices = {
nvidia.enable = true;
bluetooth.enable = true;
pipewire.enable = true;
};
home-manager.useUserPackages = true;
home-manager.users.sako = { pkgs, ...}: {
# CHANGE THIS WHEN THE SYSTEM VERSION CHANGES TOO!!!
home.stateVersion = "23.05";
home.packages = [];
home.username = "sako";
home.homeDirectory = "/home/sako";
programs.bash.enable = true;
programs.home-manager.enable = true;
programs.git = {
enable = true;
package = pkgs.gitFull;
media = {
ncmpcpp.enable = true;
mpd.enable = true;
};
xdg.configFile = {
git = {
source = ../../config/git;
};
nvim = {
source = ../../config/nvim;
recursive = true;
};
bspwm = {
source = ../../config/bspwm;
};
sxhkd = {
source = ../../config/sxhkd;
};
kitty = {
source = ../../config/kitty;
};
"qutebrowser/config.py" = {
source = ../../config/qutebrowser/config.py;
};
"qutebrowser/greasemonkey" = {
source = ../../config/qutebrowser/greasemonkey;
recursive = true;
};
ncmpcpp = {
source = ../../config/ncmpcpp;
recursive = true;
shell = {
newsboat.enable = true;
zsh.enable = true;
};
};
};
programs.zsh = {
enable = true;
# TODO(sako):: make my own zsh config
promptInit = "source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
};
fonts.fonts = with pkgs;[
jetbrains-mono
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
# git crediental manager is in gitFull package
# config options happen to be here too
#programs.git = {
# enable = true;
# package = pkgs.gitFull;
# userName = "Sakooooo";
# userEmail = "78461130+Sakooooo@users.noreply.github.com";
#};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
killall
alsa-utils
pulseaudio
pamixer
feh
unzip
gh
htop
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
pinentryFlavor = "gtk2";
# 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 value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
}

View file

@ -1,4 +1,11 @@
{
# List your module files here
# my-module = import ./my-module.nix;
#desktop = ./desktop;
desktop = import ./desktop;
dev = import ./dev;
# name conflict :(
devices = import ./devices;
media = import ./media;
shell = import ./shell;
}

View file

@ -10,7 +10,7 @@ in {
services.xserver = {
enable = true;
windowManager.bspwm.enable = true;
layout = "us";
libinput.enable = true;
};
xdg.configFile = {
bspwm = {
@ -26,6 +26,7 @@ in {
pulseSupport = true;
})
xorg.xbacklight
networkmanagerapplet
];
};
}

View file

@ -0,0 +1,3 @@
{
discord = ./discord.nix;
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.desktop.chat.discord;
in {
options.modules.desktop.chat.discord = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
discord
];
};
}

View file

@ -1,5 +1,8 @@
{
bspwm = ./bspwm.nix;
kitty = ./kitty.nix;
web = ./web;
bspwm = import ./bspwm.nix;
kitty = import ./kitty.nix;
web = import ./web;
keepassxc = import ./keepassxc.nix;
chat = import ./chat;
game = import ./game;
}

View file

@ -0,0 +1,5 @@
{
lutris = ./lutris.nix;
steam = ./steam.nix;
wine = ./wine.nix;
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.desktop.game.lutris;
in {
options.modules.desktop.game.lutris = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
lutris
];
};
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.desktop.game.steam;
in {
options.modules.desktop.game.steam = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
steam
];
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.desktop.game.wine;
in {
options.modules.desktop.game.wine= {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
winetricks
wineWowPackages.staging
];
};
}

View file

@ -0,0 +1,13 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.desktop.keepassxc;
in {
options.modules.desktop.keepassxc = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
keepassxc
];
};
}

View file

@ -16,5 +16,10 @@ in {
"JetBrainsMono"
];})
];
xdg.configFile = {
kitty = {
source = ../../config/kitty;
};
};
};
}

View file

@ -10,6 +10,7 @@ in {
users.users.sako.packages = with pkgs; [
cmake
gcc
gnumake
];
};
}

View file

@ -1,6 +1,7 @@
{ config, pkgs, lib, ...}:
{
imports = [
./cpp.nix
];
editors = ./editors/default.nix;
cpp = ./cpp.nix;
javascript = ./javascript.nix;
python = ./python.nix;
rust = ./rust.nix;
}

View file

@ -0,0 +1,3 @@
{
nvim = ./nvim.nix;
}

View file

@ -0,0 +1,21 @@
{ config, pkgs, lib, ...}:
with lib;
let cfg = config.modules.dev.editors.nvim;
in {
options.modules.dev.editors.nvim = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
neovim
];
xdg.configFile = {
nvim = {
source = ../../../config/nvim;
recursive = true;
};
};
};
}

View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.dev.javascript;
in {
options.modules.dev.javascript = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
nodejs
yarn
];
};
}

15
modules/dev/python.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.dev.python;
in {
options.modules.dev.python= {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
python3
python310Packages.pip
];
};
}

15
modules/dev/rust.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.dev.rust;
in {
options.modules.dev.rust = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
rustup
cargo
];
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ...}:
with lib;
let cfg = config.modules.devices.bluetooth;
in {
options.modules.devices.bluetooth = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
hardware.bluetooth = {
enable = true;
settings = {
General = {
ControllerMode = "bredr";
};
};
powerOnBoot = false;
};
services.blueman.enable = true;
};
}

View file

@ -0,0 +1,5 @@
{
nvidia = ./nvidia;
bluetooth = ./bluetooth.nix;
pipewire = ./pipewire.nix;
}

View file

@ -1,5 +1,12 @@
{ config, pkgs, lib, ...}:
{
with lib;
let cfg = config.modules.devices.nvidia;
in {
options.modules.devices.nvidia = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
hardware.opengl = {
enable = true;
@ -32,5 +39,5 @@
nvidiaBusId = "PCI:1:0:0";
};
};
};
}

View file

@ -0,0 +1,22 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.devices.pipewire;
in {
options.modules.devices.pipewire= {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
# pipewire hates this
sound.enable = false;
hardware.pulseaudio.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
};
}

View file

@ -1,5 +0,0 @@
{ config, pkgs, lib, ...}:
{
}

View file

@ -1,6 +0,0 @@
{ config, pkgs, lib, ...}:
{
imports = [
./nvidia
];
}

View file

@ -0,0 +1,4 @@
{
mpd = ./mpd;
ncmpcpp = ./ncmpcpp;
}

View file

@ -1,5 +1,11 @@
{ config, pkgs, lib, ...}:
{
with lib;
let cfg = config.modules.media.mpd;
in {
options.modules.media.mpd = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
services.mpd = {
enable = true;
# pipewire fix
@ -13,5 +19,6 @@
systemd.services.mpd.environment = {
XDG_RUNTIME_DIR = "/run/user/1000";
};
};
}

View file

@ -0,0 +1,22 @@
{ options, config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.media.ncmpcpp;
in {
options.modules.media.ncmpcpp = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako = {
packages = with pkgs; [
ncmpcpp
];
};
xdg.configFile = {
ncmpcpp = {
source = ../../config/ncmpcpp;
recursive = true;
};
};
};
}

View file

@ -0,0 +1,4 @@
{
zsh = ./zsh.nix;
newsboat = ./newsboat.nix;
}

View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ...}:
with lib;
let cfg = config.modules.shell.newsboat;
in {
options.modules.shell.newsboat= {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
users.users.sako.packages = with pkgs; [
newsboat
];
# TODO(sako):: make newsboat config
};
}