Switch to new flake configuration

This commit is contained in:
Tyler Kelley 2024-01-09 16:50:24 -06:00
parent 41202311e0
commit 0bd5a4981c
30 changed files with 865 additions and 709 deletions

View File

@ -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!

14
build
View File

@ -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

View File

@ -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

View File

@ -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
# ___ ______ _________ ________ ______
# __ | / /__(_)____________ /________ __ ___ __ \___ ____ /____________

View File

@ -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

81
config/rofi/config.rasi Normal file
View File

@ -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;
}

BIN
config/rofi/rofi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -89,7 +89,7 @@
"command": "steam"
},
{
"label": "",
"label": "",
"command": "firefox"
},
{

View File

@ -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 {

View File

@ -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

View File

@ -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"

View File

@ -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

44
flake.nix Normal file
View File

@ -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;
}
];
};
};
};
}

View File

412
home.nix Normal file
View File

@ -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 = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
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;
}

127
laptop/configuration.nix Normal file
View File

@ -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" ];
}

View File

@ -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.<interface>.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;
}

View File

Before

Width:  |  Height:  |  Size: 6.7 MiB

After

Width:  |  Height:  |  Size: 6.7 MiB

View File

@ -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 = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
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;
}
'';
};
};
};
}

View File

@ -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 &
''

View File

@ -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

View File

@ -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. Its 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" ];
}

View File

@ -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.<interface>.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;
}