diff --git a/README.md b/README.md index c5901da..a454684 100644 --- a/README.md +++ b/README.md @@ -6,30 +6,43 @@ ZaneyOS is my production machines config files. ## What Is NixOS -example +NixOS is a Linux distribution known for its unique approach to package management and system configuration. It uses the Nix package manager, which is based on a purely functional approach to managing software and system configurations. + +In NixOS, the entire operating system configuration is described declaratively in a configuration file, allowing for reproducibility and easy rollbacks. This means that changes to the system can be tracked and reversed, making it robust and reliable for system administrators and developers. ## Why Choose NixOS +Choosing NixOS often depends on specific needs and preferences. Here are some reasons why people opt for NixOS: + +### Declarative Configuration + +NixOS employs a declarative approach to system configuration. This means the entire system configuration is defined in a single file, making it reproducible and easier to manage. Changes are tracked and can be rolled back if needed. + +### Functional Package Management + +The Nix package manager ensures that each package and its dependencies are isolated and managed separately. This prevents conflicts between different versions of software and enables easy rollbacks to previous versions. + +### Reproducibility + +NixOS allows for consistent and reproducible environments, critical in development, testing, and deployment scenarios. It's particularly valuable in DevOps and CI/CD pipelines where consistent environments are essential. + +### Multiple Environments and Rollbacks + +With NixOS, it's possible to have multiple versions of the same software installed simultaneously without conflicts. This flexibility is especially useful for developers or those requiring different versions of software for various projects. + +### Community and Customization + +NixOS has an active community that contributes to its growth, sharing configurations, and offering support. Its customizable nature allows users to tailor their systems to their needs. + # Steps To Reproduce My System -## 1a) Starting From Fresh Install -Install NixOS as you normally would. Under the NixOS Downloads Page Section you will find a GNOME or Plasma live isos and you can install any desktop environment you please. +Clone this repo, replace your hardware-configuration.nix with the one inside the workstation folder, enable flakes in your default configuration.nix, then go into repo folder and run this command: -After booting into the install ensure you are connected to the internet and go into your /etc/nixos/configuration.nix file and ensure git and your favorite editor are in system or user packages. After doing that run the sudo nixos-rebuild switch command. +``` +sudo nixos-rebuild switch --flake .#workstation +``` -Now you are ready to move onto the pulling my dotfiles section. - -## 1b) On Excisting System - -asdasd - -## 2) Pulling In Dotfiles - -Now that you have git you can pull the dotfiles like so: - -## 3) Run The Build Script - -Go into the zaneyos folder you got and you'll see a build script. You can run this command now to install my configs, you can also run this after you make any changes in that folder. +Replace #workstation with laptop to switch to my Intel Whitebook laptop's configuration. Hope you enjoy! diff --git a/build b/build deleted file mode 100755 index 93c884d..0000000 --- a/build +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -sudo rm /etc/nixos/configuration.nix -sudo rm /etc/nixos/home.nix -sudo rm -rf /etc/configfiles -sudo rm -rf /etc/scripts - -sudo cp nixos/configuration.nix /etc/nixos/ -sudo cp nixos/home.nix /etc/nixos/ - -sudo cp -r configfiles/ /etc/ -sudo cp -r scripts/ /etc/ - -sudo nixos-rebuild switch diff --git a/configfiles/emoji b/config/emoji similarity index 100% rename from configfiles/emoji rename to config/emoji diff --git a/configfiles/hypr/animations.conf b/config/hyprland/animations.conf similarity index 100% rename from configfiles/hypr/animations.conf rename to config/hyprland/animations.conf diff --git a/configfiles/hypr/autostart.conf b/config/hyprland/autostart.conf similarity index 89% rename from configfiles/hypr/autostart.conf rename to config/hyprland/autostart.conf index 4db02de..8fc3c6e 100644 --- a/configfiles/hypr/autostart.conf +++ b/config/hyprland/autostart.conf @@ -6,4 +6,6 @@ exec-once = dbus-update-activation-environment --systemd --all exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = hyprctl setcursor Bibata-Modern-Ice 24 -exec-once = autohypr +exec-once = swww init +exec-once = waybar +exec-once = swaync diff --git a/configfiles/hypr/hyprland.conf b/config/hyprland/hyprland.conf similarity index 95% rename from configfiles/hypr/hyprland.conf rename to config/hyprland/hyprland.conf index 77c10ce..7fb6118 100644 --- a/configfiles/hypr/hyprland.conf +++ b/config/hyprland/hyprland.conf @@ -21,9 +21,7 @@ # flipped + 90 degrees -> 5 # flipped + 180 degrees -> 6 # flipped + 270 degrees -> 7 -monitor=,highres,auto,auto # Automatic Configuration -monitor=DP-1,highres,0x560,1 # Vertical Ultrawide -monitor=HDMI-A-1,highres,2560x0,1,transform,3 # Vertical Ultrawide +monitor=,highres,auto,1 # Automatic Configuration # ___ ______ _________ ________ ______ # __ | / /__(_)____________ /________ __ ___ __ \___ ____ /____________ diff --git a/configfiles/hypr/keybindings.conf b/config/hyprland/keybindings.conf similarity index 63% rename from configfiles/hypr/keybindings.conf rename to config/hyprland/keybindings.conf index 7884d3c..cc00a2d 100644 --- a/configfiles/hypr/keybindings.conf +++ b/config/hyprland/keybindings.conf @@ -6,16 +6,16 @@ # /____/ /____/ $mainMod = SUPER # Sound Control Keybinds -bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ -bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle -bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle +bind = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle # Brightness Control Keybinds -bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- -bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% +bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- +bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% # System Application Keybinds -bind = $mainMod, Return, exec, kitty -bind = $mainMod SHIFT, Return, exec, tofi-drun | xargs hyprctl dispatch exec -- +bind = $mainMod, Return, exec, kitty +bind = $mainMod SHIFT, Return, exec, rofi -show drun bind = $mainMod SHIFT, W, exec, kitty -e amfora bind = $mainMod SHIFT, S, exec, web-search bind = $mainMod, W, exec, firefox @@ -24,36 +24,36 @@ bind = $mainMod, S, exec, grim -g "$(slurp)" bind = $mainMod, D, exec, discord bind = $mainMod, O, exec, obs bind = $mainMod, G, exec, gimp -bind = $mainMod SHIFT, G, exec, godot4 +bind = $mainMod SHIFT, G, exec, godot4 bind = $mainMod, T, exec, thunar bind = $mainMod, M, exec, ario # OBS Global Keybinds -bind = ALT, F1, pass, ^(com\.obsproject\.Studio)$ -bind = ALT, F2, pass, ^(com\.obsproject\.Studio)$ -bind = ALT, F3, pass, ^(com\.obsproject\.Studio)$ -bind = ALT, F4, pass, ^(com\.obsproject\.Studio)$ -bind = ALT, F5, pass, ^(com\.obsproject\.Studio)$ +bind = ALT, F1, pass, ^(com\.obsproject\.Studio)$ +bind = ALT, F2, pass, ^(com\.obsproject\.Studio)$ +bind = ALT, F3, pass, ^(com\.obsproject\.Studio)$ +bind = ALT, F4, pass, ^(com\.obsproject\.Studio)$ +bind = ALT, F5, pass, ^(com\.obsproject\.Studio)$ # Hyprland Keybinds bind = $mainMod, Q, killactive, bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod SHIFT, I, togglesplit, # dwindle -bind = $mainMod, F, fullscreen, -bind = $mainMod SHIFT, F, togglefloating, -bind = $mainMod SHIFT, C, exit, +bind = $mainMod SHIFT, I, togglesplit, # dwindle +bind = $mainMod, F, fullscreen, +bind = $mainMod SHIFT, F, togglefloating, +bind = $mainMod SHIFT, C, exit, # Move window with mainMod + shift + arrow keys -bind = $mainMod SHIFT, left, movewindow, l -bind = $mainMod SHIFT, right, movewindow, r -bind = $mainMod SHIFT, up, movewindow, u -bind = $mainMod SHIFT, down, movewindow, d -bind = $mainMod SHIFT, h, movewindow, l -bind = $mainMod SHIFT, l, movewindow, r -bind = $mainMod SHIFT, k, movewindow, u -bind = $mainMod SHIFT, j, movewindow, d +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d +bind = $mainMod SHIFT, h, movewindow, l +bind = $mainMod SHIFT, l, movewindow, r +bind = $mainMod SHIFT, k, movewindow, u +bind = $mainMod SHIFT, j, movewindow, d # Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d +bind = $mainMod, down, movefocus, d bind = $mainMod, h, movefocus, l bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u diff --git a/configfiles/hypr/theme.conf b/config/hyprland/theme.conf similarity index 100% rename from configfiles/hypr/theme.conf rename to config/hyprland/theme.conf diff --git a/configfiles/neofetch/config.conf b/config/neofetch/config.conf similarity index 100% rename from configfiles/neofetch/config.conf rename to config/neofetch/config.conf diff --git a/configfiles/pipewire/pipewire.conf b/config/pipewire/pipewire.conf similarity index 100% rename from configfiles/pipewire/pipewire.conf rename to config/pipewire/pipewire.conf diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi new file mode 100644 index 0000000..5340917 --- /dev/null +++ b/config/rofi/config.rasi @@ -0,0 +1,81 @@ +@theme "/dev/null" + +* { + bg: #181E27; + background-color: @bg; +} + +configuration { + show-icons: true; + icon-theme: "Papirus"; + location: 0; + font: "JetBrainsMono Nerd Font 12"; + display-drun: "Launch:"; +} + +window { + width: 35%; + transparency: "real"; + orientation: vertical; + border-color: #74adc0; +} + +mainbox { + children: [inputbar, listview]; +} + + +// ELEMENT +// ----------------------------------- + +element { + padding: 4 12; + text-color: #EFE7DD; +} + +element selected { + background-color: #74adc0; +} + +element-text { + background-color: inherit; + text-color: inherit; +} + +element-icon { + size: 16 px; + background-color: inherit; + padding: 0 6 0 0; + alignment: vertical; +} + +listview { + columns: 2; + lines: 9; + padding: 8 0; + fixed-height: true; + fixed-columns: true; + fixed-lines: true; + border: 0 10 6 10; +} + +// INPUT BAR +//------------------------------------------------ + +entry { + text-color: #EFE7DD; + padding: 10 10 0 0; + margin: 0 -2 0 0; +} + +inputbar { + background-image: url("~/.config/rofi/rofi.jpg", width); + padding: 180 0 0; + margin: 0 0 0 0; +} + +prompt { + text-color: #aaffaa; + padding: 10 6 0 10; + margin: 0 -2 0 0; +} diff --git a/config/rofi/rofi.jpg b/config/rofi/rofi.jpg new file mode 100644 index 0000000..50fbaed Binary files /dev/null and b/config/rofi/rofi.jpg differ diff --git a/configfiles/swaync/config.json b/config/swaync/config.json similarity index 98% rename from configfiles/swaync/config.json rename to config/swaync/config.json index 4a25746..06aa6f2 100644 --- a/configfiles/swaync/config.json +++ b/config/swaync/config.json @@ -89,7 +89,7 @@ "command": "steam" }, { - "label": "", + "label": "", "command": "firefox" }, { diff --git a/configfiles/swaync/style.css b/config/swaync/style.css similarity index 98% rename from configfiles/swaync/style.css rename to config/swaync/style.css index 5c55b5c..87c4009 100644 --- a/configfiles/swaync/style.css +++ b/config/swaync/style.css @@ -1,5 +1,5 @@ * { - font-family: Ubuntu Nerd Font; + font-family: Ubuntu; font-weight: bolder; } @@ -166,7 +166,7 @@ } .blank-window { - background: alpha(black, 0.1) + background: alpha(black, 0) } .widget-title { diff --git a/configfiles/.vimrc b/config/vimrc similarity index 100% rename from configfiles/.vimrc rename to config/vimrc diff --git a/configfiles/.Xresources b/configfiles/.Xresources deleted file mode 100644 index 1703a2f..0000000 --- a/configfiles/.Xresources +++ /dev/null @@ -1,23 +0,0 @@ -Xcursor.theme: Bibata-Modern-Ice -Xcursor.size: 24 - -! Tokyo Night -*foreground: #c0caf5 -*background: #1a1b26 -*color0: #15161e -*color1: #f7768e -*color2: #9ece6a -*color3: #e0af68 -*color4: #7aa2f7 -*color5: #bb9af7 -*color6: #7dcfff -*color7: #a9b1d6 - -*color8: #414868 -*color9: #f7768e -*color10: #9ece6a -*color11: #e0af68 -*color12: #7aa2f7 -*color13: #bb9af7 -*color14: #7dcfff -*color15: #c0caf5 diff --git a/configfiles/starship.toml b/configfiles/starship.toml deleted file mode 100644 index f5f8574..0000000 --- a/configfiles/starship.toml +++ /dev/null @@ -1,22 +0,0 @@ -[character] -error_symbol = "[λ](bold #ff5555)" -success_symbol = "[λ](bold #f8f8f2)" - -[cmd_duration] -style = "bold #f1fa8c" - -[directory] -style = "bold #50fa7b" - -[git_branch] -style = "bold #ff79c6" - -[git_status] -style = "bold #ff5555" - -[hostname] -style = "bold #ff5555" - -[username] -format = "[$user]($style) on " -style_user = "bold #bd93f9" diff --git a/configfiles/tofi/config b/configfiles/tofi/config deleted file mode 100644 index 78060e3..0000000 --- a/configfiles/tofi/config +++ /dev/null @@ -1,35 +0,0 @@ -# ███████╗ █████╗ ███╗ ██╗███████╗██╗ ██╗███████╗ -# ╚══███╔╝██╔══██╗████╗ ██║██╔════╝╚██╗ ██╔╝██╔════╝ -# ███╔╝ ███████║██╔██╗ ██║█████╗ ╚████╔╝ ███████╗ -# ███╔╝ ██╔══██║██║╚██╗██║██╔══╝ ╚██╔╝ ╚════██║ -# ███████╗██║ ██║██║ ╚████║███████╗ ██║ ███████║ -# ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚══════╝ -# Dotfiles circa 2023 - -# Font -font = Ubuntu Nerd Font -font-size = 18 - -# Window Style -anchor = top -width = 100% -height = 100% -outline-width = 0 -border-width = 0 -min-input-width = 130 -result-spacing = 30 -padding-top = 35% -padding-bottom = 0 -padding-left = 35% -padding-right = 0 -num-results = 5 -prompt-text = "What Ya Need? " - -background-color = #000A -text-color = #c0caf5 -input-color = #7aa2f7 -selection-color = #7dcfff -selection-match-color = #9ece6a - -clip-to-padding = false -require-match = false diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..12a7577 --- /dev/null +++ b/flake.nix @@ -0,0 +1,44 @@ +{ + description = "ZaneyOS"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; + home-manager.url = "github:nix-community/home-manager/release-23.11"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + hyprland.url = "github:hyprwm/Hyprland"; + }; + + outputs = inputs@{ nixpkgs, home-manager, ... }: + let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + config = { + allowUnfree = true; + }; + }; + in { + nixosConfigurations = { + laptop = nixpkgs.lib.nixosSystem { + specialArgs = { inherit system; inherit inputs; }; + modules = [ ./laptop/configuration.nix + home-manager.nixosModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.zaney = import ./home.nix; + } + ]; + }; + workstation = nixpkgs.lib.nixosSystem { + specialArgs = { inherit system; inherit inputs; }; + modules = [ ./workstation/configuration.nix + home-manager.nixosModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.zaney = import ./home.nix; + } + ]; + }; + }; + }; +} diff --git a/configfiles/UniSans-Heavy.otf b/fonts/UniSans-Heavy.otf old mode 100755 new mode 100644 similarity index 100% rename from configfiles/UniSans-Heavy.otf rename to fonts/UniSans-Heavy.otf diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..96ab8f7 --- /dev/null +++ b/home.nix @@ -0,0 +1,412 @@ +{ config, pkgs, ... }: + +{ + home.username = "zaney"; + home.homeDirectory = "/home/zaney"; + home.stateVersion = "23.11"; + + home.file.".config/zaney-stinger.mov" = { + source = ./media/zaney-stinger.mov; + }; + home.file.".config/wallpaper.png" = { + source = ./media/wallpaper.png; + }; + home.file.".local/share/fonts" = { + source = ./fonts; + recursive = true; + }; + home.file.".vimrc" = { + source = ./config/vimrc; + }; + home.file.".emoji" = { + source = ./config/emoji; + }; + home.file.".config/rofi" = { + source = ./config/rofi; + recursive = true; + }; + home.file.".config/swaync" = { + source = ./config/swaync; + recursive = true; + }; + home.file.".config/pipewire/pipewire.conf" = { + source = ./config/pipewire/pipewire.conf; + }; + home.file.".config/neofetch/config.conf" = { + source = ./config/neofetch/config.conf; + }; + home.file.".config/hypr" = { + source = ./config/hyprland; + recursive = true; + }; + + xresources.properties = { + "Xcursor.size" = 24; + }; + + programs.git = { + enable = true; + userName = "Tyler Kelley"; + userEmail = "tylerzanekelley@gmail.com"; + }; + + home.packages = with pkgs; [ + neofetch lolcat cmatrix discord firefox btop libvirt + swww polkit_gnome grim slurp lm_sensors unzip unrar gnome.file-roller + libnotify swaynotificationcenter rofi-wayland xfce.thunar imv v4l-utils + ydotool wl-clipboard socat cowsay lsd pkg-config transmission-gtk mpv + gimp obs-studio blender kdenlive meson glibc hugo gnumake ninja go + nodejs godot_4 rustup pavucontrol audacity zeroad xonotic gvfs udiskie + openra font-awesome symbola noto-fonts-color-emoji material-icons + # Import Scripts + (import ./scripts/emopicker9000.nix { inherit pkgs; }) + (import ./scripts/task-waybar.nix { inherit pkgs; }) + (import ./scripts/squirtle.nix { inherit pkgs; }) + ]; + + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 24; + }; + qt.enable = true; + qt.platformTheme = "gtk"; + qt.style.name = "adwaita-dark"; + qt.style.package = pkgs.adwaita-qt; + gtk = { + enable = true; + font = { + name = "Ubuntu"; + size = 12; + package = pkgs.ubuntu_font_family; + }; + theme = { + name = "Tokyonight-Storm-BL"; + package = pkgs.tokyo-night-gtk; + }; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + cursorTheme = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + }; + gtk3.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + gtk4.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + }; + xdg = { + userDirs = { + enable = true; + createDirectories = true; + }; + }; + + programs.bash = { + enable = true; + enableCompletion = true; + sessionVariables = { + + }; + shellAliases = { + sv="sudo vim"; + v="vim"; + ls="lsd"; + ll="lsd -l"; + la="lsd -a"; + lal="lsd -al"; + ".."="cd .."; + }; + }; + + programs.kitty = { + enable = true; + package = pkgs.kitty; + font.name = "JetBrainsMono Nerd Font"; + font.size = 16; + settings = { + scrollback_lines = 2000; + wheel_scroll_min_lines = 1; + window_padding_width = 6; + confirm_os_window_close = 0; + background_opacity = "0.85"; + }; + extraConfig = '' + foreground #a9b1d6 + background #1a1b26 + color0 #414868 + color8 #414868 + color1 #f7768e + color9 #f7768e + color2 #73daca + color10 #73daca + color3 #e0af68 + color11 #e0af68 + color4 #7aa2f7 + color12 #7aa2f7 + color5 #bb9af7 + color13 #bb9af7 + color6 #7dcfff + color14 #7dcfff + color7 #c0caf5 + color15 #c0caf5 + cursor #c0caf5 + cursor_text_color #1a1b26 + selection_foreground none + selection_background #28344a + url_color #9ece6a + active_border_color #3d59a1 + inactive_border_color #101014 + bell_border_color #e0af68 + tab_bar_style fade + tab_fade 1 + active_tab_foreground #3d59a1 + active_tab_background #16161e + active_tab_font_style bold + inactive_tab_foreground #787c99 + inactive_tab_background #16161e + inactive_tab_font_style bold + tab_bar_background #101014 + ''; + }; + + programs.waybar = { + enable = true; + package = pkgs.waybar; + settings = [{ + layer = "top"; + position = "top"; + + modules-left = [ "hyprland/window" ]; + modules-center = [ "network" "pulseaudio" "cpu" "hyprland/workspaces" "memory" "disk" "clock" ]; + modules-right = [ "custom/notification" "tray" ]; + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + default = " "; + active = " "; + urgent = " "; + }; + on-scroll-up = "hyprctl dispatch workspace e+1"; + on-scroll-down = "hyprctl dispatch workspace e-1"; + }; + "clock" = { + format = "{: %I:%M %p}"; + tooltip = false; + }; + "hyprland/window" = { + max-length = 60; + separate-outputs = false; + }; + "memory" = { + interval = 5; + format = " {}%"; + tooltip = true; + }; + "cpu" = { + interval = 5; + format = " {usage:2}%"; + tooltip = true; + }; + "disk" = { + format = " {free}"; + tooltip = true; + }; + "network" = { + format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"]; + format-ethernet = ": {bandwidthDownOctets} : {bandwidthUpOctets}"; + format-wifi = "{icon} {signalStrength}%"; + format-disconnected = "󰤮"; + tooltip = false; + }; + "tray" = { + spacing = 12; + }; + "pulseaudio" = { + format = "{icon} {volume}% {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = " {volume}%"; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" "" ""]; + }; + on-click = "pavucontrol"; + }; + "custom/notification" = { + tooltip = false; + format = "{icon} {}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = ""; + dnd-none = ""; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = ""; + dnd-inhibited-none = ""; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "task-waybar"; + escape = true; + }; + "battery" = { + states = { + warning = 30; + critical = 15; + }; + format = "{icon} {capacity}%"; + format-charging = "󰂄 {capacity}%"; + format-plugged = "󱘖 {capacity}%"; + format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; + on-click = ""; + tooltip = false; + }; + }]; + style = '' + * { + font-size: 16px; + font-family: JetBrainsMono Nerd Font, Font Awesome, sans-serif; + font-weight: bold; + } + window#waybar { + background-color: rgba(26,27,38,0); + border-bottom: 1px solid rgba(26,27,38,0); + border-radius: 0px; + color: #f8f8f2; + } + #workspaces { + background: linear-gradient(180deg, #414868, #24283b); + margin: 5px; + padding: 0px 1px; + border-radius: 15px; + border: 0px; + font-style: normal; + color: #15161e; + } + #workspaces button { + padding: 0px 5px; + margin: 4px 3px; + border-radius: 15px; + border: 0px; + color: #15161e; + background-color: #1a1b26; + opacity: 1.0; + transition: all 0.3s ease-in-out; + } + #workspaces button.active { + color: #15161e; + background: #7aa2f7; + border-radius: 15px; + min-width: 40px; + transition: all 0.3s ease-in-out; + opacity: 1.0; + } + #workspaces button:hover { + color: #15161e; + background: #7aa2f7; + border-radius: 15px; + opacity: 1.0; + } + tooltip { + background: #1a1b26; + border: 1px solid #7aa2f7; + border-radius: 10px; + } + tooltip label { + color: #c0caf5; + } + #window { + color: #565f89; + background: #1a1b26; + border-radius: 0px 15px 50px 0px; + margin: 5px 5px 5px 0px; + padding: 2px 20px; + } + #memory { + color: #2ac3de; + background: #1a1b26; + border-radius: 15px 50px 15px 50px; + margin: 5px; + padding: 2px 20px; + } + #clock { + color: #c0caf5; + background: #1a1b26; + border-radius: 15px 50px 15px 50px; + margin: 5px; + padding: 2px 20px; + } + #cpu { + color: #b4f9f8; + background: #1a1b26; + border-radius: 50px 15px 50px 15px; + margin: 5px; + padding: 2px 20px; + } + #disk { + color: #9ece6a; + background: #1a1b26; + border-radius: 15px 50px 15px 50px; + margin: 5px; + padding: 2px 20px; + } + #battery { + color: #f7768e; + background: #1a1b26; + border-radius: 15px; + margin: 5px; + padding: 2px 20px; + } + #network { + color: #ff9e64; + background: #1a1b26; + border-radius: 50px 15px 50px 15px; + margin: 5px; + padding: 2px 20px; + } + #tray { + color: #bb9af7; + background: #1a1b26; + border-radius: 15px 0px 0px 50px; + margin: 5px 0px 5px 5px; + padding: 2px 20px; + } + #pulseaudio { + color: #bb9af7; + background: #1a1b26; + border-radius: 50px 15px 50px 15px; + margin: 5px; + padding: 2px 20px; + } + #custom-notification { + color: #7dcfff; + background: #1a1b26; + border-radius: 15px 50px 15px 50px; + margin: 5px; + padding: 2px 20px; + } + ''; + }; + + programs.home-manager.enable = true; +} diff --git a/laptop/configuration.nix b/laptop/configuration.nix new file mode 100644 index 0000000..dd8ebc4 --- /dev/null +++ b/laptop/configuration.nix @@ -0,0 +1,127 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ inputs, config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.kernelModules = [ "v4l2loopback" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; + + networking.hostName = "nixtop"; # 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"; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.zaney = { + isNormalUser = true; + description = "Tyler Kelley"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim wget curl + ]; + + fonts.packages = with pkgs; [ + (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) + ]; + + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + + nixpkgs.config.packageOverrides = pkgs: { + vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + }; + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver # LIBVA_DRIVER_NAME=iHD + vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) + vaapiVdpau + libvdpau-va-gl + ]; + driSupport = true; + driSupport32Bit = true; + }; + + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + }; + + # 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; + }; + + # List services that you want to enable: + services.openssh.enable = true; + services.fstrim.enable = true; + services.xserver = { + layout = "us"; + xkbVariant = ""; + libinput.enable = true; + }; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + hardware.pulseaudio.enable = false; + sound.enable = true; + security.rtkit.enable = true; + + + system.stateVersion = "23.11"; + nix = { + settings.auto-optimise-store = true; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + }; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; +} diff --git a/laptop/hardware-configuration.nix b/laptop/hardware-configuration.nix new file mode 100644 index 0000000..cce5fe1 --- /dev/null +++ b/laptop/hardware-configuration.nix @@ -0,0 +1,47 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/8f47c564-523f-4eca-9644-69d2bed92f0a"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-4f3ec042-9a98-4e10-84b3-3e081b030d6e".device = "/dev/disk/by-uuid/4f3ec042-9a98-4e10-84b3-3e081b030d6e"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/3B15-2EB6"; + fsType = "vfat"; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/cb501f9a-6814-477f-b8d5-1a8aaba243a9"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-9b120c21-77b6-4291-bee0-185c5a1e3682".device = "/dev/disk/by-uuid/9b120c21-77b6-4291-bee0-185c5a1e3682"; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp61s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp62s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/configfiles/wallpaper.png b/media/wallpaper.png similarity index 100% rename from configfiles/wallpaper.png rename to media/wallpaper.png diff --git a/configfiles/zaney-stinger.mov b/media/zaney-stinger.mov similarity index 100% rename from configfiles/zaney-stinger.mov rename to media/zaney-stinger.mov diff --git a/nixos/home.nix b/nixos/home.nix deleted file mode 100644 index 20dfac3..0000000 --- a/nixos/home.nix +++ /dev/null @@ -1,422 +0,0 @@ -{ config, pkgs, ... }: - -let - home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/release-23.11.tar.gz"; -in -{ - imports = [ - (import "${home-manager}/nixos") - ]; - - home-manager.users.zaney = { - - home.username = "zaney"; - home.homeDirectory = "/home/zaney"; - home.stateVersion = "23.11"; - - home.file.".config/swaync/config.json" = { - source = ../configfiles/swaync/config.json; - recursive = true; - }; - home.file.".Xresources" = { - source = ../configfiles/.Xresources; - recursive = true; - }; - home.file.".vimrc" = { - source = ../configfiles/.vimrc; - recursive = true; - }; - home.file.".config/tofi/config" = { - source = ../configfiles/tofi/config; - recursive = true; - }; - home.file.".config/wallpaper.png" = { - source = ../configfiles/wallpaper.png; - recursive = true; - }; - home.file.".config/swaync/style.css" = { - source = ../configfiles/swaync/style.css; - recursive = true; - }; - home.file.".config/pipewire/pipewire.conf" = { - source = ../configfiles/pipewire/pipewire.conf; - recursive = true; - }; - home.file.".config/neofetch/config.conf" = { - source = ../configfiles/neofetch/config.conf; - recursive = true; - }; - home.file.".local/share/scriptdeps/emoji" = { - source = ../configfiles/emoji; - recursive = true; - }; - home.file.".config/hypr/hyprland.conf" = { - source = ../configfiles/hypr/hyprland.conf; - recursive = true; - }; - home.file.".config/hypr/keybindings.conf" = { - source = ../configfiles/hypr/keybindings.conf; - recursive = true; - }; - home.file.".config/hypr/theme.conf" = { - source = ../configfiles/hypr/theme.conf; - recursive = true; - }; - home.file.".config/hypr/animations.conf" = { - source = ../configfiles/hypr/animations.conf; - recursive = true; - }; - home.file.".config/hypr/autostart.conf" = { - source = ../configfiles/hypr/autostart.conf; - recursive = true; - }; - home.file.".config/zaney-stinger.mov" = { - source = ../configfiles/zaney-stinger.mov; - recursive = true; - }; - home.file.".local/share/fonts/UniSans-Heavy.otf" = { - source = ../configfiles/UniSans-Heavy.otf; - recursive = true; - }; - home.pointerCursor = { - gtk.enable = true; - # x11.enable = true; - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Ice"; - size = 24; - }; - qt.enable = true; - qt.platformTheme = "gtk"; - qt.style.name = "adwaita-dark"; - qt.style.package = pkgs.adwaita-qt; - gtk = { - enable = true; - font = { - name = "Ubuntu"; - size = 12; - package = pkgs.ubuntu_font_family; - }; - theme = { - name = "Tokyonight-Storm-BL"; - package = pkgs.tokyo-night-gtk; - }; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - cursorTheme = { - name = "Bibata-Modern-Ice"; - package = pkgs.bibata-cursors; - }; - gtk3.extraConfig = { - Settings = '' - gtk-application-prefer-dark-theme=1 - ''; - }; - gtk4.extraConfig = { - Settings = '' - gtk-application-prefer-dark-theme=1 - ''; - }; - }; - xdg = { - userDirs = { - enable = true; - createDirectories = true; - }; - }; - programs = { - kitty = { - enable = true; - package = pkgs.kitty; - font.name = "JetBrainsMono Nerd Font"; - font.size = 16; - settings = { - scrollback_lines = 2000; - wheel_scroll_min_lines = 1; - window_padding_width = 6; - confirm_os_window_close = 0; - background_opacity = "0.85"; - }; - extraConfig = '' - foreground #a9b1d6 - background #1a1b26 - color0 #414868 - color8 #414868 - color1 #f7768e - color9 #f7768e - color2 #73daca - color10 #73daca - color3 #e0af68 - color11 #e0af68 - color4 #7aa2f7 - color12 #7aa2f7 - color5 #bb9af7 - color13 #bb9af7 - color6 #7dcfff - color14 #7dcfff - color7 #c0caf5 - color15 #c0caf5 - cursor #c0caf5 - cursor_text_color #1a1b26 - selection_foreground none - selection_background #28344a - url_color #9ece6a - active_border_color #3d59a1 - inactive_border_color #101014 - bell_border_color #e0af68 - tab_bar_style fade - tab_fade 1 - active_tab_foreground #3d59a1 - active_tab_background #16161e - active_tab_font_style bold - inactive_tab_foreground #787c99 - inactive_tab_background #16161e - inactive_tab_font_style bold - tab_bar_background #101014 - ''; - }; - bash = { - enable = true; - enableCompletion = true; - sessionVariables = { - - }; - shellAliases = { - sv="sudo vim"; - v="vim"; - ls="lsd"; - ll="lsd -l"; - la="lsd -a"; - lal="lsd -al"; - ".."="cd .."; - }; - }; - waybar = { - enable = true; - package = pkgs.waybar; - settings = [{ - layer = "top"; - position = "top"; - - modules-left = [ "hyprland/window" ]; - modules-center = [ "network" "pulseaudio" "cpu" "hyprland/workspaces" "memory" "disk" "clock" ]; - modules-right = [ "custom/notification" "tray" ]; - "hyprland/workspaces" = { - format = "{icon}"; - format-icons = { - default = " "; - active = " "; - urgent = " "; - }; - on-scroll-up = "hyprctl dispatch workspace e+1"; - on-scroll-down = "hyprctl dispatch workspace e-1"; - }; - "clock" = { - format = "{: %I:%M %p}"; - tooltip = false; - }; - "hyprland/window" = { - max-length = 60; - separate-outputs = false; - }; - "memory" = { - interval = 5; - format = " {}%"; - }; - "cpu" = { - interval = 5; - format = " {usage:2}%"; - tooltip = false; - }; - "disk" = { - format = " {free}/{total}"; - tooltip = true; - }; - "network" = { - format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"]; - format-ethernet = ": {bandwidthDownOctets} : {bandwidthUpOctets}"; - format-wifi = "{icon} {signalStrength}%"; - format-disconnected = "󰤮"; - }; - "tray" = { - spacing = 12; - }; - "pulseaudio" = { - format = "{icon} {volume}% {format_source}"; - format-bluetooth = "{volume}% {icon} {format_source}"; - format-bluetooth-muted = " {icon} {format_source}"; - format-muted = " {format_source}"; - format-source = " {volume}%"; - format-source-muted = ""; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = ["" "" ""]; - }; - on-click = "pavucontrol"; - }; - "custom/notification" = { - tooltip = false; - format = "{icon} {}"; - format-icons = { - notification = ""; - none = ""; - dnd-notification = ""; - dnd-none = ""; - inhibited-notification = ""; - inhibited-none = ""; - dnd-inhibited-notification = ""; - dnd-inhibited-none = ""; - }; - return-type = "json"; - exec-if = "which swaync-client"; - exec = "swaync-client -swb"; - on-click = "task-waybar"; - escape = true; - }; - "battery" = { - states = { - warning = 30; - critical = 15; - }; - format = "{icon} {capacity}%"; - format-charging = "󰂄 {capacity}%"; - format-plugged = "󱘖 {capacity}%"; - format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; - on-click = ""; - tooltip = false; - }; - }]; - style = '' - * { - font-size: 16px; - font-family: Ubuntu Nerd Font, Font Awesome, sans-serif; - font-weight: bold; - } - window#waybar { - background-color: rgba(26,27,38,0); - border-bottom: 1px solid rgba(26,27,38,0); - border-radius: 0px; - color: #f8f8f2; - } - #workspaces { - background: linear-gradient(180deg, #414868, #24283b); - margin: 5px; - padding: 0px 1px; - border-radius: 15px; - border: 0px; - font-style: normal; - color: #15161e; - } - #workspaces button { - padding: 0px 5px; - margin: 4px 3px; - border-radius: 15px; - border: 0px; - color: #15161e; - background-color: #1a1b26; - opacity: 1.0; - transition: all 0.3s ease-in-out; - } - #workspaces button.active { - color: #15161e; - background: #7aa2f7; - border-radius: 15px; - min-width: 40px; - transition: all 0.3s ease-in-out; - opacity: 1.0; - } - #workspaces button:hover { - color: #15161e; - background: #7aa2f7; - border-radius: 15px; - opacity: 1.0; - } - tooltip { - background: #1a1b26; - border: 1px solid #7aa2f7; - border-radius: 10px; - } - tooltip label { - color: #c0caf5; - } - #window { - color: #565f89; - background: #1a1b26; - border-radius: 0px 15px 50px 0px; - margin: 5px 5px 5px 0px; - padding: 2px 20px; - } - #memory { - color: #2ac3de; - background: #1a1b26; - border-radius: 15px 50px 15px 50px; - margin: 5px; - padding: 2px 20px; - } - #clock { - color: #c0caf5; - background: #1a1b26; - border-radius: 15px 50px 15px 50px; - margin: 5px; - padding: 2px 20px; - } - #cpu { - color: #b4f9f8; - background: #1a1b26; - border-radius: 50px 15px 50px 15px; - margin: 5px; - padding: 2px 20px; - } - #disk { - color: #9ece6a; - background: #1a1b26; - border-radius: 15px 50px 15px 50px; - margin: 5px; - padding: 2px 20px; - } - #battery { - color: #f7768e; - background: #1a1b26; - border-radius: 15px; - margin: 5px; - padding: 2px 20px; - } - #network { - color: #ff9e64; - background: #1a1b26; - border-radius: 50px 15px 50px 15px; - margin: 5px; - padding: 2px 20px; - } - #tray { - color: #bb9af7; - background: #1a1b26; - border-radius: 15px 0px 0px 50px; - margin: 5px 0px 5px 5px; - padding: 2px 20px; - } - #pulseaudio { - color: #bb9af7; - background: #1a1b26; - border-radius: 50px 15px 50px 15px; - margin: 5px; - padding: 2px 20px; - } - #custom-notification { - color: #7dcfff; - background: #1a1b26; - border-radius: 15px 50px 15px 50px; - margin: 5px; - padding: 2px 20px; - } - ''; - }; - }; - }; -} diff --git a/scripts/autohypr.nix b/scripts/autohypr.nix deleted file mode 100644 index 68aa70d..0000000 --- a/scripts/autohypr.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs }: - -pkgs.writeShellScriptBin "autohypr" '' - ${pkgs.swww}/bin/swww init & - ${pkgs.swaynotificationcenter}/bin/swaync & - ${pkgs.waybar}/bin/waybar & - ${pkgs.xfce.thunar}/bin/thunar --daemon & - ${pkgs.swww}/bin/swww img ~/.config/wallpaper.png & -'' diff --git a/scripts/emopicker9000.nix b/scripts/emopicker9000.nix index 6219ecc..2915747 100644 --- a/scripts/emopicker9000.nix +++ b/scripts/emopicker9000.nix @@ -2,7 +2,7 @@ pkgs.writeShellScriptBin "emopicker9000" '' # Get user selection via wofi from emoji file. - chosen=$(cat $HOME/.local/share/scriptdeps/emoji | ${pkgs.tofi}/bin/tofi | awk '{print $1}') + chosen=$(cat $HOME/.emoji | ${pkgs.rofi-wayland}/bin/rofi -dmenu | awk '{print $1}') # Exit if none chosen. [ -z "$chosen" ] && exit diff --git a/nixos/configuration.nix b/workstation/configuration.nix similarity index 59% rename from nixos/configuration.nix rename to workstation/configuration.nix index 0fc964c..ae38530 100644 --- a/nixos/configuration.nix +++ b/workstation/configuration.nix @@ -2,24 +2,25 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ inputs, config, pkgs, ... }: { imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - # Include Home Manager - ./home.nix + [ # Include the results of the hardware scan. + ./hardware-configuration.nix ]; - # Bootloader + # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + boot.kernelModules = [ "v4l2loopback" ]; + boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; - # Networking - networking.networkmanager.enable = true; networking.hostName = "hyprnix"; # Define your hostname. + # Enable networking + networking.networkmanager.enable = true; + # Set your time zone. time.timeZone = "America/Chicago"; @@ -42,84 +43,17 @@ users.users.zaney = { isNormalUser = true; description = "Tyler Kelley"; - extraGroups = [ "networkmanager" "wheel" "disk" "power" "video" ]; + extraGroups = [ "networkmanager" "wheel" ]; packages = with pkgs; []; }; - programs.hyprland.enable = true; + # Allow unfree packages + nixpkgs.config.allowUnfree = true; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - # Import Scripts - (import ../scripts/emopicker9000.nix { inherit pkgs; }) - (import ../scripts/task-waybar.nix { inherit pkgs; }) - (import ../scripts/squirtle.nix { inherit pkgs; }) - (import ../scripts/autohypr.nix { inherit pkgs; }) - # Utils - vim - wget - btop - git - libvirt - swww - polkit_gnome - grim - slurp - lm_sensors - unzip - unrar - gnome.file-roller - libnotify - swaynotificationcenter - tofi - xfce.thunar - imv - killall - v4l-utils - # Misc - ydotool - wl-clipboard - socat - cowsay - lsd - neofetch - pkg-config - cmatrix - lolcat - transmission-gtk - # Photo & Video - mpv - gimp - obs-studio - blender - kdenlive - # Online - firefox - discord - # Dev - meson - glibc - hugo - gnumake - ninja - go - nodejs_21 - godot_4 - rustup - rust-analyzer - # Audio - pavucontrol - audacity - # Gaming - zeroad - xonotic - openra - # Fonts - font-awesome - symbola - noto-fonts-color-emoji - material-icons + vim wget curl ]; fonts.packages = with pkgs; [ @@ -140,7 +74,41 @@ driSupport32Bit = true; }; - # Nix Package Management + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + }; + + # 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; + }; + + # List services that you want to enable: + services.openssh.enable = true; + services.fstrim.enable = true; + services.xserver = { + layout = "us"; + xkbVariant = ""; + libinput.enable = true; + videoDrivers = [ "amdgpu" ]; + }; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + hardware.pulseaudio.enable = false; + sound.enable = true; + security.rtkit.enable = true; + + + system.stateVersion = "23.11"; nix = { settings.auto-optimise-store = true; gc = { @@ -175,54 +143,5 @@ QT_AUTO_SCREEN_SCALE_FACTOR = "1"; MOZ_ENABLE_WAYLAND = "1"; }; - - # 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; - }; - - # List services that you want to enable: - services.openssh.enable = true; - services.fstrim.enable = true; - services.xserver = { - layout = "us"; - xkbVariant = ""; - libinput.enable = true; - }; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; - hardware.pulseaudio.enable = false; - sound.enable = true; - security.rtkit.enable = true; - - # Automatic Updates - system.autoUpgrade = { - enable = true; - channel = "https://nixos.org/channels/nixos-23.11"; - }; - - nixpkgs.config.allowUnfree = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # 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.11"; # Did you read the comment? - + nix.settings.experimental-features = [ "nix-command" "flakes" ]; } diff --git a/workstation/hardware-configuration.nix b/workstation/hardware-configuration.nix new file mode 100644 index 0000000..e87c57d --- /dev/null +++ b/workstation/hardware-configuration.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/37d2dff5-91fd-42c8-b836-1cc3d18b9cd4"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/6ADB-9840"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp7s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}