diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index b9ab6fe..53f3c97 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -1,233 +1,39 @@ -{ config, inputs, pkgs, ... }: - +{ pkgs, ... }: { - imports = - [ - ./hardware-configuration.nix - inputs.home-manager.nixosModules.default - ../../modules/nixos/nvidia.nix - ../../modules/nixos/bspwm.nix - ../../modules/nixos/cups.nix - ]; + imports = [ + ./hardware-configuration.nix + ../../modules/nixos/common.nix + ../../modules/nixos/audio.nix + ../../modules/nixos/shell.nix + ../../modules/nixos/dev.nix + ../../modules/nixos/storage.nix + ../../modules/nixos/gaming.nix + ../../modules/nixos/apps.nix + ../../modules/nixos/portals.nix + ../../modules/nixos/bspwm.nix + ../../modules/nixos/nvidia.nix + ../../modules/nixos/cups.nix + ]; - # nixpkgs.overlays = [ - # (import ./ghidra-m32r-overlay.nix) - # ]; + networking.hostName = "nixos"; + home-manager.users.chris = import ./home.nix; - # Extra Nix Settings - nix.settings = { - auto-optimise-store = true; - experimental-features = [ "nix-command" "flakes" ]; - }; + users.users.chris.extraGroups = [ "dialout" "storage" ]; - programs.nix-ld.enable = true; + environment.systemPackages = with pkgs; [ + lazygit file disktui busybox nmap screen + ]; - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + programs.zsh.shellAliases.ssh-server = "ssh braincell@192.168.1.3"; - networking.hostName = "nixos"; - networking.networkmanager.enable = true; - time.timeZone = "America/Chicago"; - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # 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; - }; - - # Enable Direnv - programs.direnv.enable = true; - - # User Account - users.users.chris = { - isNormalUser = true; - description = "chris"; - extraGroups = [ "networkmanager" "wheel" "dialout" "storage" ]; - shell = pkgs.zsh; - packages = with pkgs; [ - telegram-desktop - discord - ungoogled-chromium - inkscape - obsidian - sourcegit - obs-studio - r2modman - signal-desktop - kdePackages.dolphin - flameshot - vscodium - nautilus - onlyoffice-desktopeditors - vlc - orca-slicer - blender - grayjay - vlc - kdePackages.kdenlive - kicad - # ghidra - ]; - }; - - home-manager = { - useUserPackages = true; - extraSpecialArgs = { inherit inputs; }; - users."chris" = import ./home.nix; - }; - - - # services.freenet = { - # enable = true; - # }; - - # Garbage Collection - nix.gc = { - automatic = true; - dates = "weekly"; - persistent = true; - options = ""; - }; - - - # Mount the data drive fileSystems."/data" = { device = "/dev/disk/by-uuid/58c7b996-c436-47e8-8018-244417acf067"; fsType = "ext4"; options = [ "nofail" ]; }; - # ZSH - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestions.enable = true; - syntaxHighlighting.enable = true; - interactiveShellInit = '' - fastfetch - ''; - - shellAliases = { - ll = "ls -l"; - edit = "hx ~/dotfiles"; - update = "sh ~/dotfiles/rebuild.sh"; - ssh-server = "ssh braincell@192.168.1.3"; - calc = "kalker"; - n = "nvim ."; - # ssh-pihole = "ssh bell@192.168.1.23"; - }; - - histSize = 10000; - histFile = "$HOME/.zsh_history"; - setOptions = [ - "HIST_IGNORE_ALL_DUPS" - ]; - - oh-my-zsh = { - enable = true; - theme = "clean"; - plugins = ["git" "sudo" "direnv"]; - }; - }; - - # Steam - programs.steam.enable = true; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - # System Packages - environment.systemPackages = with pkgs; [ - vim - wget - git - file - helix - lazygit - nixd - fastfetch - disktui - busybox - kalker - nmap - screen - btop - udiskie - ]; - - # extra filesystems - boot.supportedFilesystems = { - exfat = true; - ntfs = true; - }; - - - # Enable Virtualization - virtualisation.libvirtd.enable = true; - programs.virt-manager.enable = true; - virtualisation.podman = { - enable = true; - dockerCompat = true; - }; - - # Enable Flatpacks - services.flatpak.enable = true; - - # Xdg portal - xdg.portal = { - enable = true; - extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gnome]; - # config.common.default = ""; - }; - - # OpenSSH - services.openssh.enable = true; - - # UDisks (for auto mounting) - services.udisks2 = { - enable = true; - }; - - services.gvfs.enable = true; - - systemd.user.services.udiskie = { - description = "udiskie automount daemon"; - wantedBy = [ "graphical-session.target" ]; - partOf = [ "graphical-session.target" ]; - serviceConfig = { - ExecStart = "${pkgs.udiskie}/bin/udiskie --automount --notify --tray"; - Restart = "always"; - }; - }; - - - # Firewall networking.firewall.allowedTCPPorts = [ 9999 ]; networking.firewall.allowedUDPPorts = [ 9999 ]; - - system.stateVersion = "25.11"; # Did you read the comment? DONT TOUCH :) -} + + system.stateVersion = "25.11"; # don't change +} \ No newline at end of file diff --git a/hosts/p50/configuration.nix b/hosts/p50/configuration.nix index 1a0ff9f..5124347 100644 --- a/hosts/p50/configuration.nix +++ b/hosts/p50/configuration.nix @@ -1,88 +1,17 @@ -{ config, pkgs, inputs, ... }: +{ pkgs, ... }: { - imports = - [ - ./hardware-configuration.nix - inputs.home-manager.nixosModules.default - ../../modules/nixos/bspwm.nix - ../../modules/nixos/quadro-m1000m.nix - ]; - - # Nix options - nix.settings = { - experimental-features = ["nix-command" "flakes"]; - }; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - # Use latest kernel. - boot.kernelPackages = pkgs.linuxPackages_latest; - - networking.hostName = "p50"; # Define your hostname. - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Chicago"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users."chris" = { - isNormalUser = true; - description = "chris"; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; []; - }; - - - home-manager = { - useUserPackages = true; - extraSpecialArgs = { inherit inputs; }; - users."chris" = import ./home.nix; - }; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - environment.systemPackages = with pkgs; [ - vim - wget - helix - nixd - git - fastfetch - btop + imports = [ + ./hardware-configuration.nix + ../../modules/nixos/common.nix + ../../modules/nixos/bspwm.nix + ../../modules/nixos/quadro-m1000m.nix ]; - # Enable the OpenSSH daemon. - services.openssh.enable = true; + networking.hostName = "p50"; + home-manager.users.chris = import ./home.nix; - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - system.stateVersion = "26.05"; # Did you read the comment? + boot.kernelPackages = pkgs.linuxPackages_latest; -} + system.stateVersion = "26.05"; # don't change +} \ No newline at end of file diff --git a/modules/nixos/apps.nix b/modules/nixos/apps.nix new file mode 100644 index 0000000..fb06ae0 --- /dev/null +++ b/modules/nixos/apps.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + users.users.chris.packages = with pkgs; [ + telegram-desktop discord inkscape obsidian obs-studio + r2modman signal-desktop flameshot vscodium + nautilus onlyoffice-desktopeditors vlc orca-slicer blender grayjay + kdePackages.kdenlive kicad + ]; +} \ No newline at end of file diff --git a/modules/nixos/audio.nix b/modules/nixos/audio.nix new file mode 100644 index 0000000..021af23 --- /dev/null +++ b/modules/nixos/audio.nix @@ -0,0 +1,11 @@ +{ ... }: +{ + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; +} \ No newline at end of file diff --git a/modules/nixos/common.nix b/modules/nixos/common.nix new file mode 100644 index 0000000..5d99913 --- /dev/null +++ b/modules/nixos/common.nix @@ -0,0 +1,52 @@ +{ pkgs, inputs, ... }: +{ + imports = [ inputs.home-manager.nixosModules.default ]; + + nix.settings = { + auto-optimise-store = true; + experimental-features = [ "nix-command" "flakes" ]; + }; + nix.gc = { + automatic = true; + dates = "weekly"; + persistent = true; + options = ""; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.networkmanager.enable = true; + time.timeZone = "America/Chicago"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + services.xserver.xkb = { layout = "us"; variant = ""; }; + + users.users.chris = { + isNormalUser = true; + description = "chris"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + home-manager = { + useUserPackages = true; + extraSpecialArgs = { inherit inputs; }; + }; + + nixpkgs.config.allowUnfree = true; + services.openssh.enable = true; + + environment.systemPackages = with pkgs; [ + vim wget git helix nixd nixfmt btop fastfetch lazygit + ]; +} \ No newline at end of file diff --git a/modules/nixos/dev.nix b/modules/nixos/dev.nix new file mode 100644 index 0000000..23cbf84 --- /dev/null +++ b/modules/nixos/dev.nix @@ -0,0 +1,11 @@ +{ ... }: +{ + programs.nix-ld.enable = true; + + virtualisation.libvirtd.enable = true; + programs.virt-manager.enable = true; + virtualisation.podman = { + enable = true; + dockerCompat = true; + }; +} \ No newline at end of file diff --git a/modules/nixos/gaming.nix b/modules/nixos/gaming.nix new file mode 100644 index 0000000..b1408e4 --- /dev/null +++ b/modules/nixos/gaming.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.steam.enable = true; +} \ No newline at end of file diff --git a/modules/nixos/portals.nix b/modules/nixos/portals.nix new file mode 100644 index 0000000..d367358 --- /dev/null +++ b/modules/nixos/portals.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + services.flatpak.enable = true; + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gnome ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/shell.nix b/modules/nixos/shell.nix new file mode 100644 index 0000000..a88ff2f --- /dev/null +++ b/modules/nixos/shell.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: +{ + programs.direnv.enable = true; + users.users.chris.shell = pkgs.zsh; + + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestions.enable = true; + syntaxHighlighting.enable = true; + interactiveShellInit = "fastfetch"; + shellAliases = { + ll = "ls -l"; + calc = "kalker"; + n = "nvim ."; + }; + histSize = 10000; + histFile = "$HOME/.zsh_history"; + setOptions = [ "HIST_IGNORE_ALL_DUPS" ]; + oh-my-zsh = { + enable = true; + theme = "clean"; + plugins = [ "git" "sudo" "direnv" ]; + }; + }; + + environment.systemPackages = [ pkgs.kalker ]; +} \ No newline at end of file diff --git a/modules/nixos/storage.nix b/modules/nixos/storage.nix new file mode 100644 index 0000000..268746d --- /dev/null +++ b/modules/nixos/storage.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: +{ + boot.supportedFilesystems = { exfat = true; ntfs = true; }; + services.udisks2.enable = true; + services.gvfs.enable = true; + + environment.systemPackages = [ pkgs.udiskie ]; + systemd.user.services.udiskie = { + description = "udiskie automount daemon"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.udiskie}/bin/udiskie --automount --notify --tray"; + Restart = "always"; + }; + }; +} \ No newline at end of file