diff --git a/default.nix b/default.nix index 60e29413..93cb5a9b 100644 --- a/default.nix +++ b/default.nix @@ -32,7 +32,6 @@ }; # this shouldnt cause any issues right? - networking.hostName = "sakotop"; networking.networkmanager.enable = true; time.timeZone = "Africa/Cairo"; @@ -46,76 +45,4 @@ # 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 } diff --git a/hosts/sakotop/configuration.nix b/hosts/sakotop/configuration.nix index 41804b06..467777a1 100644 --- a/hosts/sakotop/configuration.nix +++ b/hosts/sakotop/configuration.nix @@ -9,42 +9,279 @@ ../../default.nix ]; - config = { - desktop = { - bspwm.enable = true; - kitty.enable = true; - keepassxc.enable = true; - game = { - steam.enable = true; - lutris.enable = true; - wine.enable = true; + # 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"; }; }; - web = { - qutebrowser.enable = true; - }; - dev = { - editors = { - nvim.enable = true; + # i barely use bluetooth so keep it on demand + powerOnBoot = false; + }; + 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; + }; + + # 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 + ]; + }; + + # 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"; + }; + + 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; + }; + 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; }; - cpp.enable = true; - javascript.enable = true; - python.enable = true; - rust.enable = true; - }; - devices = { - nvidia.enable = true; - bluetooth.enable = true; - pipewire.enable = true; - }; - media = { - ncmpcpp.enable = true; - mpd.enable = 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? + } diff --git a/modules/default.nix b/modules/default.nix index 9235496b..39459fce 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,11 +1,4 @@ { # 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; } diff --git a/modules/desktop/bspwm.nix b/modules/desktop/bspwm.nix index 4fb5bcd7..c827b02a 100644 --- a/modules/desktop/bspwm.nix +++ b/modules/desktop/bspwm.nix @@ -10,7 +10,7 @@ in { services.xserver = { enable = true; windowManager.bspwm.enable = true; - libinput.enable = true; + layout = "us"; }; xdg.configFile = { bspwm = { @@ -26,7 +26,6 @@ in { pulseSupport = true; }) xorg.xbacklight - networkmanagerapplet ]; }; } diff --git a/modules/desktop/chat/default.nix b/modules/desktop/chat/default.nix deleted file mode 100644 index 8485816d..00000000 --- a/modules/desktop/chat/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - discord = ./discord.nix; -} diff --git a/modules/desktop/chat/discord.nix b/modules/desktop/chat/discord.nix deleted file mode 100644 index 4fa20ea7..00000000 --- a/modules/desktop/chat/discord.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index 15d2cf20..246221f5 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,8 +1,5 @@ { - bspwm = import ./bspwm.nix; - kitty = import ./kitty.nix; - web = import ./web; - keepassxc = import ./keepassxc.nix; - chat = import ./chat; - game = import ./game; + bspwm = ./bspwm.nix; + kitty = ./kitty.nix; + web = ./web; } diff --git a/modules/desktop/game/default.nix b/modules/desktop/game/default.nix deleted file mode 100644 index dacca1d4..00000000 --- a/modules/desktop/game/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - lutris = ./lutris.nix; - steam = ./steam.nix; - wine = ./wine.nix; -} diff --git a/modules/desktop/game/lutris.nix b/modules/desktop/game/lutris.nix deleted file mode 100644 index 8aa1e21b..00000000 --- a/modules/desktop/game/lutris.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/desktop/game/steam.nix b/modules/desktop/game/steam.nix deleted file mode 100644 index 8aa350fe..00000000 --- a/modules/desktop/game/steam.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/desktop/game/wine.nix b/modules/desktop/game/wine.nix deleted file mode 100644 index 94cd555a..00000000 --- a/modules/desktop/game/wine.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/desktop/keepassxc.nix b/modules/desktop/keepassxc.nix deleted file mode 100644 index 3ec2ddec..00000000 --- a/modules/desktop/keepassxc.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/desktop/kitty.nix b/modules/desktop/kitty.nix index e161a91f..5cc26915 100644 --- a/modules/desktop/kitty.nix +++ b/modules/desktop/kitty.nix @@ -16,10 +16,5 @@ in { "JetBrainsMono" ];}) ]; - xdg.configFile = { - kitty = { - source = ../../config/kitty; - }; - }; }; } diff --git a/modules/dev/cpp.nix b/modules/dev/cpp.nix index 336d2db7..3505c38e 100644 --- a/modules/dev/cpp.nix +++ b/modules/dev/cpp.nix @@ -10,7 +10,6 @@ in { users.users.sako.packages = with pkgs; [ cmake gcc - gnumake ]; }; } diff --git a/modules/dev/default.nix b/modules/dev/default.nix index a5853630..6b4561e9 100644 --- a/modules/dev/default.nix +++ b/modules/dev/default.nix @@ -1,7 +1,6 @@ +{ config, pkgs, lib, ...}: { - editors = ./editors/default.nix; - cpp = ./cpp.nix; - javascript = ./javascript.nix; - python = ./python.nix; - rust = ./rust.nix; + imports = [ + ./cpp.nix + ]; } diff --git a/modules/dev/editors/default.nix b/modules/dev/editors/default.nix deleted file mode 100644 index 6a56dc96..00000000 --- a/modules/dev/editors/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - nvim = ./nvim.nix; -} diff --git a/modules/dev/editors/nvim.nix b/modules/dev/editors/nvim.nix deleted file mode 100644 index c92f3d8d..00000000 --- a/modules/dev/editors/nvim.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ 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; - }; - }; - }; -} diff --git a/modules/dev/javascript.nix b/modules/dev/javascript.nix deleted file mode 100644 index 376eaf39..00000000 --- a/modules/dev/javascript.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/dev/python.nix b/modules/dev/python.nix deleted file mode 100644 index 9c4a8152..00000000 --- a/modules/dev/python.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/dev/rust.nix b/modules/dev/rust.nix deleted file mode 100644 index 4392eafc..00000000 --- a/modules/dev/rust.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ 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 - ]; - }; -} diff --git a/modules/devices/bluetooth.nix b/modules/devices/bluetooth.nix deleted file mode 100644 index 10b72022..00000000 --- a/modules/devices/bluetooth.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ 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; - }; -} diff --git a/modules/devices/default.nix b/modules/devices/default.nix deleted file mode 100644 index f3c2d70e..00000000 --- a/modules/devices/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - nvidia = ./nvidia; - bluetooth = ./bluetooth.nix; - pipewire = ./pipewire.nix; -} diff --git a/modules/devices/pipewire.nix b/modules/devices/pipewire.nix deleted file mode 100644 index a9abbd06..00000000 --- a/modules/devices/pipewire.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ 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; - }; - }; -} diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix new file mode 100644 index 00000000..22e1f04a --- /dev/null +++ b/modules/hardware/bluetooth.nix @@ -0,0 +1,5 @@ +{ config, pkgs, lib, ...}: +{ + +} + diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix new file mode 100644 index 00000000..da5304eb --- /dev/null +++ b/modules/hardware/default.nix @@ -0,0 +1,6 @@ +{ config, pkgs, lib, ...}: +{ + imports = [ + ./nvidia + ]; +} diff --git a/modules/devices/nvidia/default.nix b/modules/hardware/nvidia/default.nix similarity index 80% rename from modules/devices/nvidia/default.nix rename to modules/hardware/nvidia/default.nix index 83b90d8c..238523c0 100644 --- a/modules/devices/nvidia/default.nix +++ b/modules/hardware/nvidia/default.nix @@ -1,12 +1,5 @@ { 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; @@ -38,6 +31,6 @@ in { intelBusId = "PCI:0:2:0"; nvidiaBusId = "PCI:1:0:0"; }; - }; }; + } diff --git a/modules/media/default.nix b/modules/media/default.nix deleted file mode 100644 index ef91e1a8..00000000 --- a/modules/media/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - mpd = ./mpd; - ncmpcpp = ./ncmpcpp; -} diff --git a/modules/media/mpd/default.nix b/modules/media/mpd/default.nix index 5caa7259..ad41802a 100644 --- a/modules/media/mpd/default.nix +++ b/modules/media/mpd/default.nix @@ -1,11 +1,5 @@ { 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 @@ -19,6 +13,5 @@ in { systemd.services.mpd.environment = { XDG_RUNTIME_DIR = "/run/user/1000"; }; - }; } diff --git a/modules/media/ncmpcpp/default.nix b/modules/media/ncmpcpp/default.nix deleted file mode 100644 index eacd5560..00000000 --- a/modules/media/ncmpcpp/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ 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; - }; - }; - }; -} diff --git a/modules/shell/default.nix b/modules/shell/default.nix deleted file mode 100644 index f3e629ed..00000000 --- a/modules/shell/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - zsh = ./zsh.nix; - newsboat = ./newsboat.nix; -} diff --git a/modules/shell/newsboat.nix b/modules/shell/newsboat.nix deleted file mode 100644 index 327027e8..00000000 --- a/modules/shell/newsboat.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ 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 - }; -}