summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/apps.nix112
-rw-r--r--modules/common.nix146
-rw-r--r--modules/development.nix66
-rw-r--r--modules/gaming.nix33
-rw-r--r--modules/packages.nix140
5 files changed, 211 insertions, 286 deletions
diff --git a/modules/apps.nix b/modules/apps.nix
new file mode 100644
index 0000000..401a21b
--- /dev/null
+++ b/modules/apps.nix
@@ -0,0 +1,112 @@
+{ pkgs, lib, config, ... }: {
+
+ options.apps.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = true;
+ description = "enables apps";
+ };
+
+ config = lib.mkIf config.apps.enable {
+
+ programs.firefox.enable = true;
+
+ environment.systemPackages = with pkgs; [
+ # System
+ glib-networking
+ openssl
+ glibcLocales
+ libnotify
+ wl-clipboard
+ jdk
+
+ libratbag # Mouse software (GHUB replacement)
+ piper # ^ GUI frontend
+
+ # Utility
+ gimp
+ keepassxc
+ protonvpn-gui
+ (python312.withPackages (pypkgs: [
+ pypkgs.matplotlib
+ pypkgs.pandas
+ pypkgs.pygithub
+ ]))
+ kdePackages.filelight
+ kdePackages.korganizer
+ kdePackages.kaddressbook
+ syncthingtray
+ libreoffice
+ albert
+ aseprite
+ cloudflare-warp
+ haruna
+ gparted
+ gnome-clocks
+
+ # Communication
+ whatsie
+ vesktop
+
+ # Terminal
+ ghostty
+ nerd-fonts.jetbrains-mono
+ oh-my-posh
+ tmux
+ neovim
+ tree-sitter
+
+ # CLI
+ git
+ delta
+ gh
+ stow
+ eza
+ keychain
+ bc
+ bat
+ fd
+ ripgrep
+ wakatime-cli
+ fastfetch
+ btop
+ sqlite
+ unzip
+ fzf
+ zoxide
+ watchexec
+ gitleaks
+ rar
+ dig
+ minisign
+ libisoburn
+ ncdu
+ imagemagick
+ ghostscript # for imagemagick to support pdf files
+ xxd
+ duf
+ tldr
+ bottom
+ hyperfine # for benchmarking
+ wget
+ tectonic
+ mermaid-cli
+ ffmpeg
+ nh
+ ];
+
+ # VPN for Vault Hunters to avoid connection issues
+ # Note, will break discord, also tried proton VPN, still has conn issues
+ services.cloudflare-warp.enable = true;
+
+ # Mouse config service (used with piper)
+ services.ratbagd.enable = true;
+
+ # Install Docker (without using root access)
+ #virtualisation.docker.enable = true;
+ virtualisation.docker.rootless = {
+ enable = true;
+ setSocketVariable = true;
+ };
+
+ };
+}
diff --git a/modules/common.nix b/modules/common.nix
deleted file mode 100644
index b9fed82..0000000
--- a/modules/common.nix
+++ /dev/null
@@ -1,146 +0,0 @@
-{ pkgs, ... }: {
-
- imports = [
- ./packages.nix
- ];
-
- # User
- users.users.kyren = {
- isNormalUser = true;
- description = "Kyren";
- extraGroups = [ "networkmanager" "wheel" ];
- shell = pkgs.zsh;
- };
-
- programs.zsh.enable = true;
-
- # Localization
- time.timeZone = "Asia/Hebron";
- i18n.defaultLocale = "en_US.UTF-8";
- i18n.supportedLocales = [
- "en_US.UTF-8/UTF-8"
- "C.UTF-8/UTF-8"
- "en_IL/UTF-8"
- ];
-
- # Allow sudo without a password if in "wheel" group.
- security.sudo.wheelNeedsPassword = false;
-
- # Bootloader
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
- boot.supportedFilesystems = [ "ntfs" ];
-
- # Nix Config
- system.stateVersion = "24.05"; # DO NOT CHANGE!
- nixpkgs.config.allowUnfree = true;
- nix.settings.experimental-features = [ "nix-command" "flakes" ];
- nix.settings.auto-optimise-store = true; # reduces nix store size
-
- # Enable dynamic linking of apps that are not in nixpkgs
- # Fixes issues with neovim plugins not working
- programs.nix-ld.enable = true;
- programs.nix-ld.libraries = with pkgs; [
- stdenv.cc.cc
- ];
-
- programs.firefox.enable = true;
-
- # Install Steam
- programs.steam = {
- enable = true;
- remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
- dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
- localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
- };
-
- # Install Docker (without using root access)
- #virtualisation.docker.enable = true;
- virtualisation.docker.rootless = {
- enable = true;
- setSocketVariable = true;
- };
-
- # Enable sound with pipewire.
- services.pulseaudio.enable = false;
- security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- # If you want to use JACK applications, uncomment this
- #jack.enable = true;
-
- # use the example session manager (no others are packaged yet so this is enabled by default,
- # no need to redefine it in your config for now)
- #media-session.enable = true;
- };
-
- # ENable CUPS daemon for printing
- services.printing.enable = false;
-
- # Install Flatpak and Flathub
- services.flatpak.enable = true;
-
- # Enable openssh
- services.openssh.enable = true;
-
- # Mouse config service (used with piper)
- services.ratbagd.enable = true;
-
- # Enable KVM/QEMU virtualization
- programs.virt-manager.enable = true;
- users.groups.libvirtd.members = ["kyren"];
- virtualisation.libvirtd.enable = true;
- virtualisation.spiceUSBRedirection.enable = true;
-
- services.syncthing.enable = true;
- services.syncthing = {
- group = "users";
- user = "kyren";
- dataDir = "/home/kyren";
- configDir = "/home/kyren/.config/syncthing";
- };
- systemd.tmpfiles.rules = [
- "d /home/kyren/.config/syncthing 0700 kyren users"
- ];
-
- # VPN for Vault Hunters to avoid connection issues
- # Note, will break discord, also tried proton VPN, still has conn issues
- services.cloudflare-warp.enable = true;
-
- systemd.timers."git-auto-sync" = {
- wantedBy = [ "timers.target" ];
- timerConfig = {
- OnBootSec = "5m";
- OnUnitActiveSec = "5m";
- Unit = "git-auto-sync.service";
- };
- };
-
- systemd.services."git-auto-sync" = {
- script = "$HOME/scripts/git-auto-sync.sh";
- path = [
- pkgs.git
- pkgs.gh
- pkgs.keychain
- pkgs.openssh
- ];
- serviceConfig = { Type = "oneshot"; User = "kyren"; };
- };
-
- systemd.timers."k-sleep-tracker" = {
- wantedBy = [ "timers.target" ];
- timerConfig = {
- OnBootSec = "1m";
- OnUnitActiveSec = "1m";
- Unit = "k-sleep-tracker.service";
- };
- };
-
- systemd.services."k-sleep-tracker" = {
- script = "$HOME/projects/k/bin/k tracker sleep";
- serviceConfig = { Type = "oneshot"; User = "kyren"; };
- };
-}
diff --git a/modules/development.nix b/modules/development.nix
new file mode 100644
index 0000000..989444c
--- /dev/null
+++ b/modules/development.nix
@@ -0,0 +1,66 @@
+{ pkgs, lib, config, ... }: {
+
+ options.development.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = "enables development";
+ };
+
+ config = lib.mkIf config.development.enable {
+
+ environment.systemPackages = with pkgs; [
+ jetbrains.idea-community
+
+ # LSP
+ asm-lsp
+ astro-language-server
+ basedpyright
+ bash-language-server
+ vscode-langservers-extracted # html/css/json
+ gopls
+ lemminx # xml
+ lua-language-server
+ markdown-oxide
+ marksman
+ mdx-language-server
+ neocmakelsp
+ nil # nix
+ tailwindcss-language-server
+ taplo # toml
+ typescript-language-server
+ yaml-language-server
+ # pnpm i -g css-variables-language-server
+ # pnpm install -g gh-actions-language-server
+
+ # Tools
+ stylua
+ gofumpt
+ golangci-lint
+ prettierd
+ jq
+ lldb # codelldb debugger
+ shellcheck
+ beautysh # shell formatter
+ gdb
+ nasm
+ rustup
+ tokei # count lines of code
+ go
+ pnpm
+ nodejs_24
+ clang
+ clang-tools
+ gcc
+ gnumake
+ goose
+ sqlc
+ maven
+ gradle
+ kotlin
+ mold # fast linker, for rust
+ gomodifytags
+ sops
+ ];
+
+ };
+}
diff --git a/modules/gaming.nix b/modules/gaming.nix
new file mode 100644
index 0000000..f6a9c42
--- /dev/null
+++ b/modules/gaming.nix
@@ -0,0 +1,33 @@
+{ pkgs, lib, config, ... }: {
+
+ options.gaming.enable = lib.mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = "enables gaming";
+ };
+
+ config = lib.mkIf config.gaming.enable {
+
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
+ dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
+ localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
+ };
+
+ environment.systemPackages = with pkgs; [
+ r2modman # For modded valheim
+ prismlauncher # mc
+ drawio # For VH
+
+ (minecraft.overrideAttrs (finalAttrs: previousAttrs: {
+ meta.lib.broken = false;
+ }))
+
+ kdePackages.kmines # Minesweeper for fun lol
+ kdePackages.kpat # Solitaire
+ # btw missing the card/brick thing with weird symbols, not sure what that game was called
+ ];
+
+ };
+}
diff --git a/modules/packages.nix b/modules/packages.nix
deleted file mode 100644
index 2b5b261..0000000
--- a/modules/packages.nix
+++ /dev/null
@@ -1,140 +0,0 @@
-{ pkgs, ... }: {
-
- environment.systemPackages = with pkgs; [
- glib-networking
- openssl
- clang
- clang-tools
- ghostty
- glibcLocales
-
- nerd-fonts.jetbrains-mono
- keepassxc
- git
- gh
- delta
- stow
- eza
- oh-my-posh
- gcc
- gnumake
- neovim
- fzf
- zoxide
- tmux
- bc
- keychain
- bat
- sqlite
- fd
- ripgrep
- wakatime-cli
- fastfetch
- btop
- protonvpn-gui
- unzip
- go
- pnpm
- nodejs_24
- (python312.withPackages (pypkgs: [
- pypkgs.matplotlib
- pypkgs.pandas
- pypkgs.pygithub
- ]))
- watchexec
- golangci-lint
- libnotify
- wl-clipboard
- whatsie
- libratbag # Mouse software (GHUB replacement)
- piper
- goose
- sqlc
- jetbrains.idea-community
- jdk
- maven
- gradle
- kdePackages.filelight
- kotlin
- (minecraft.overrideAttrs (finalAttrs: previousAttrs: {
- meta.lib.broken = false;
- }))
- rustup
- tokei
- kdePackages.kmines # Minesweeper for fun lol
- kdePackages.kpat # Solitaire
- # btw missing the card/brick thing with weird symbols, not sure what that game was called
- gimp
- kdePackages.korganizer
- kdePackages.kaddressbook
- gitleaks
- rar
- gomodifytags
- sops
- dig
- syncthingtray
- libreoffice
- vesktop
- nasm
- albert
- gdb
- minisign
- libisoburn
- ncdu
- imagemagick
- ghostscript # for imagemagick to support pdf files
- xxd
- gnome-clocks
- duf
- tldr
- bottom
- hyperfine
- nh
- wget
- mold
- aseprite
- prismlauncher
- cloudflare-warp
- drawio
- tree-sitter
- tectonic
- mermaid-cli
- ffmpeg
- haruna
- gparted
- r2modman
- openrgb-with-all-plugins
-
- # LSP
- asm-lsp
- astro-language-server
- basedpyright
- bash-language-server
- vscode-langservers-extracted # html/css/json
- gopls
- lemminx
- lua-language-server
- markdown-oxide
- marksman
- mdx-language-server
- neocmakelsp
- nil
- tailwindcss-language-server
- taplo
- typescript-language-server
- yaml-language-server
- # pnpm i -g css-variables-language-server
- # pnpm install -g gh-actions-language-server
-
- # Tools
- stylua
- gofumpt
- golangci-lint
- prettierd
- jq
- lldb # codelldb debugger
- shellcheck
- beautysh # shell formatter
- ];
-
-}