Merge pull request 'Adhere to NixOS systems' (#1) from suite-switch into master
Reviewed-on: #1
This commit is contained in:
commit
5f45489bc2
234
defaults/sway/config
Normal file
234
defaults/sway/config
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
### Variables
|
||||||
|
# Logo key
|
||||||
|
set $mod Mod4
|
||||||
|
# Direction keys
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
# Alacritty
|
||||||
|
set $term alacritty
|
||||||
|
|
||||||
|
# Menu (rofi)
|
||||||
|
set $rofi_cmd rofi -terminal '$term'
|
||||||
|
set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi
|
||||||
|
|
||||||
|
### Output configuration
|
||||||
|
output DP-3 pos 3840 0 res 1920x1080@59Hz
|
||||||
|
output HDMI-A-1 pos 0 0 res 1920x1080@59Hz
|
||||||
|
output DP-2 pos 1920 0 res 1920x1080@60Hz
|
||||||
|
|
||||||
|
### Wallpaper
|
||||||
|
output HDMI-A-1 bg ~/.wallpaper/.wallpaper.png fill
|
||||||
|
output DP-2 bg ~/.wallpaper/.wallpaper.png fill
|
||||||
|
output DP-3 bg ~/.wallpaper/.wallpaper.png fill
|
||||||
|
|
||||||
|
### Workspace binding
|
||||||
|
|
||||||
|
## DP-3 bindings
|
||||||
|
workspace 1 output DP-2
|
||||||
|
workspace 2 output DP-2
|
||||||
|
|
||||||
|
## HDMI-A-1 bindings
|
||||||
|
workspace 3 output HDMI-A-1
|
||||||
|
|
||||||
|
## DP-2 bindings
|
||||||
|
workspace 6 output DP-3
|
||||||
|
workspace 7 output DP-3
|
||||||
|
|
||||||
|
### Colour options
|
||||||
|
set $bg #24283b
|
||||||
|
set $bg-inactive #323232
|
||||||
|
set $bg-urgent #000000
|
||||||
|
set $text #eeeeec
|
||||||
|
set $text-inactive #babdb6
|
||||||
|
set $bar #323232
|
||||||
|
set $statusline #e0e0e0
|
||||||
|
|
||||||
|
client.focused $bg $bg $text $bg $bg
|
||||||
|
client.unfocused $bg-inactive $bg-inactive $text-inactive $bar $bar
|
||||||
|
client.focused_inactive $bg-inactive $bg-inactive $text-inactive $bar $bar
|
||||||
|
client.urgent $bg-urgent $bg-urgent $text $bar $bar
|
||||||
|
|
||||||
|
|
||||||
|
### Idle configuration
|
||||||
|
# exec swayidle -w \
|
||||||
|
# timeout 600 'swaylock -f -i /home/wyatt/.wallpaper_lock.jpeg' \
|
||||||
|
# timeout 1200 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||||
|
# before-sleep 'swaylock -f -c 000000'
|
||||||
|
|
||||||
|
# Workspaces
|
||||||
|
set $workspace_www 1
|
||||||
|
set $workspace_editor 2
|
||||||
|
set $workspace_terminals 3
|
||||||
|
set $workspace_documents 4
|
||||||
|
set $workspace_multimedia 5
|
||||||
|
|
||||||
|
# Gaps
|
||||||
|
floating_modifier $mod normal
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
# Start a terminal
|
||||||
|
bindsym $mod+Return exec $term
|
||||||
|
|
||||||
|
# Kill focused window
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
|
# Start your launcher
|
||||||
|
bindsym $mod+d exec $menu
|
||||||
|
|
||||||
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
|
# Resize them with right mouse button + $mod.
|
||||||
|
# Despite the name, also works for non-floating windows.
|
||||||
|
# Change normal to inverse to use left mouse button for resizing and right
|
||||||
|
# mouse button for dragging.
|
||||||
|
floating_modifier $mod normal
|
||||||
|
|
||||||
|
# Reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# Exit sway (logs you out of your Wayland session)
|
||||||
|
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
# Move your focus around
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
# Or use $mod+[up|down|left|right]
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# Move the focused window with the same, but add Shift
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
# Ditto, with arrow keys
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
### Workspaces
|
||||||
|
# Switch to workspace
|
||||||
|
bindsym $mod+1 workspace $workspace_www
|
||||||
|
bindsym $mod+2 workspace $workspace_editor
|
||||||
|
bindsym $mod+3 workspace $workspace_terminals
|
||||||
|
bindsym $mod+4 workspace $workspace_documents
|
||||||
|
bindsym $mod+5 workspace $workspace_multimedia
|
||||||
|
bindsym $mod+6 workspace number 6
|
||||||
|
bindsym $mod+7 workspace number 7
|
||||||
|
bindsym $mod+8 workspace number 8
|
||||||
|
bindsym $mod+9 workspace number 9
|
||||||
|
bindsym $mod+0 workspace number 10
|
||||||
|
# Move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace $workspace_www
|
||||||
|
bindsym $mod+Shift+2 move container to workspace $workspace_editor
|
||||||
|
bindsym $mod+Shift+3 move container to workspace $workspace_terminals
|
||||||
|
bindsym $mod+Shift+4 move container to workspace $workspace_documents
|
||||||
|
bindsym $mod+Shift+5 move container to workspace $workspace_multimedia
|
||||||
|
bindsym $mod+Shift+6 move container to workspace number 6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace number 7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace number 8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace number 9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace number 10
|
||||||
|
# Note: workspaces can have any name you want, not just numbers.
|
||||||
|
# We just use 1-10 as the default.
|
||||||
|
|
||||||
|
### Layout
|
||||||
|
bindsym $mod+b splith
|
||||||
|
bindsym $mod+v splitv
|
||||||
|
|
||||||
|
# Switch the current container between different layout styles
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# Make the current focus fullscreen
|
||||||
|
bindsym $mod+f fullscreen
|
||||||
|
|
||||||
|
# Toggle the current focus between tiling and floating mode
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# Swap focus between the tiling area and the floating area
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# Move focus to the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
### Taking screenshots
|
||||||
|
# Take a screenshot of all monitors
|
||||||
|
bindsym Print exec grim -t jpeg ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
|
||||||
|
|
||||||
|
# Take a screenshot of a given selection
|
||||||
|
bindsym $mod+Print exec grim -t jpeg -g "$(slurp)" ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpeg
|
||||||
|
|
||||||
|
### Resizing containers
|
||||||
|
mode "resize" {
|
||||||
|
bindsym $left resize shrink width 10px
|
||||||
|
bindsym $down resize grow height 10px
|
||||||
|
bindsym $up resize shrink height 10px
|
||||||
|
bindsym $right resize grow width 10px
|
||||||
|
|
||||||
|
bindsym Left resize shrink width 10px
|
||||||
|
bindsym Down resize grow height 10px
|
||||||
|
bindsym Up resize shrink height 10px
|
||||||
|
bindsym Right resize grow width 10px
|
||||||
|
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
|
||||||
|
### Audio and brightness keybinds
|
||||||
|
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
|
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||||
|
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||||
|
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
||||||
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
|
bindsym XF86AudioNext exec playerctl next
|
||||||
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
|
bindsym XF86MonBrightnessUp exec light -A 5
|
||||||
|
bindsym XF86MonBrightnessDown exec light -U 5
|
||||||
|
|
||||||
|
### Lock the screen so my brother
|
||||||
|
### won't dick with my computer
|
||||||
|
bindsym $mod+Ctrl+l 'swaylock -f -i /home/wyatt/.wallpaper_lock.jpeg'
|
||||||
|
|
||||||
|
### Status Bar:
|
||||||
|
bar {
|
||||||
|
swaybar_command waybar
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Font settings:
|
||||||
|
font pango:FiraCode: 14px
|
||||||
|
|
||||||
|
### Window formatting
|
||||||
|
default_border none
|
||||||
|
default_border pixel 2
|
||||||
|
gaps inner 10px
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
exec_always /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||||
|
exec mako
|
||||||
|
#exec swww init
|
||||||
|
#exec bash /home/wyatt/.wallpaper/wallpaper.sh /home/wyatt/.wallpaper
|
||||||
|
|
||||||
|
set $opacity 1.00
|
||||||
|
for_window [class=".*"] opacity $opacity
|
||||||
|
for_window [app_id=".*"] opacity $opacity
|
||||||
|
|
||||||
|
# Disable locking when conditions are met
|
||||||
|
for_window [class="streaming_client"] inhibit_idle fullscreen
|
||||||
|
for_window [app_id="firefox"] inhibit_idle fullscreen
|
||||||
|
for_window [app_id="neovide"] inhibit_idle fullscreen
|
||||||
|
|
||||||
|
for_window [title="Beyond All Reason"] inhibit_idle fullscreen
|
||||||
|
include /etc/sway/config.d/*
|
64
defaults/waybar/config
Normal file
64
defaults/waybar/config
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"modules-left": ["sway/workspaces"],
|
||||||
|
"modules-center": ["clock"],
|
||||||
|
"modules-right": ["custom/playerctl", "custom/weather", "pulseaudio", "network", "tray"],
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
"all-outputs": true,
|
||||||
|
"format": "{name}: {icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"1":"",
|
||||||
|
"2":"",
|
||||||
|
"3":"",
|
||||||
|
"4":"",
|
||||||
|
"5":"",
|
||||||
|
"6":"",
|
||||||
|
"urgent": "",
|
||||||
|
"focused": "",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sway/window": {
|
||||||
|
"max-length": 50,
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format-alt": "{:%m-%d-%Y}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/weather": {
|
||||||
|
"format": "{} °",
|
||||||
|
"tooltip": true,
|
||||||
|
"interval": 3600,
|
||||||
|
"exec": "wttrbar --fahrenheit --main-indicator 'temp_F' --location 'Grand Rapids'",
|
||||||
|
"return-type": "json"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-wifi": " {essid} ({signalStrength}%)",
|
||||||
|
"format-ethernet": " {ipaddr}",
|
||||||
|
"format-disconnected": "⚠ Disconnected",
|
||||||
|
"interval": 5,
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-bluetooth": "{icon} {volume}%",
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphones": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", ""]
|
||||||
|
},
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"custom/playerctl": {
|
||||||
|
"format": "♬ {}",
|
||||||
|
"max-length": 40,
|
||||||
|
"interval": 5,
|
||||||
|
"exec": "playerctl metadata --format '{{ artist }} - {{ title }}'",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
}
|
74
defaults/waybar/style.css
Normal file
74
defaults/waybar/style.css
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Monaspace Krypton";
|
||||||
|
font-size: 13px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: #1f2335;
|
||||||
|
border-bottom: 1px solid #24283b;
|
||||||
|
color: #c0caf5;
|
||||||
|
opacity: 0.808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 5px;
|
||||||
|
padding-left: 12px;
|
||||||
|
padding-right: 12px;
|
||||||
|
background: transparent;
|
||||||
|
color: #c0caf5;
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background: #c0caf5;
|
||||||
|
color: #1d2021;
|
||||||
|
border-bottom: 1px solid #c0caf5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#battery,
|
||||||
|
#clock,
|
||||||
|
#custom-playerctl {
|
||||||
|
padding: 0 10px;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: #9ece6a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: #ff9e64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #1d2021;
|
||||||
|
color: #ebdbb2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background: #f7768e;
|
||||||
|
color: #ebdbb2;
|
||||||
|
border-bottom: 1px solid #ebdbb2;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
color: #cc241d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
color: #cc241d;
|
||||||
|
}
|
43
flake.lock
43
flake.lock
@ -23,7 +23,7 @@
|
|||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-darwin"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -41,27 +41,45 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nix-flatpak": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722141560,
|
"lastModified": 1711997201,
|
||||||
"narHash": "sha256-Ul3rIdesWaiW56PS/Ak3UlJdkwBrD4UcagCmXZR9Z7Y=",
|
"narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=",
|
||||||
"owner": "NixOS",
|
"owner": "gmodena",
|
||||||
"repo": "nixpkgs",
|
"repo": "nix-flatpak",
|
||||||
"rev": "038fb464fcfa79b4f08131b07f2d8c9a6bcc4160",
|
"rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "gmodena",
|
||||||
"type": "indirect"
|
"ref": "v0.4.1",
|
||||||
|
"repo": "nix-flatpak",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725407940,
|
||||||
|
"narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-darwin": {
|
"nixpkgs-darwin": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722153173,
|
"lastModified": 1725498621,
|
||||||
"narHash": "sha256-S46RmS9WkBOTLORpnWsNth4Ae6TlfJS9TKXqB55YQy4=",
|
"narHash": "sha256-m12se55InZz03onhRji85deKJp4i0jrw980aDdxT0IM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "7bba2df68503b68634e0070483ddaf6d59dc6530",
|
"rev": "0409a1b650bb50c225485f2ca21c325eb33f45c7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -75,6 +93,7 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-darwin": "nixpkgs-darwin"
|
"nixpkgs-darwin": "nixpkgs-darwin"
|
||||||
}
|
}
|
||||||
|
71
flake.nix
71
flake.nix
@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
description = "Wyatt's nix configuration";
|
description = "Wyatt's nix configuration suite";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
|
||||||
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-24.05-darwin";
|
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-24.05-darwin";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-24.05";
|
url = "github:nix-community/home-manager/release-24.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
darwin = {
|
darwin = {
|
||||||
url = "github:lnl7/nix-darwin";
|
url = "github:lnl7/nix-darwin";
|
||||||
@ -13,49 +14,67 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# The `outputs` function will return all the build results of the flake.
|
|
||||||
# A flake can have many use cases and different types of outputs,
|
|
||||||
# parameters in `outputs` are defined in `inputs` and can be referenced by their names.
|
|
||||||
# However, `self` is an exception, this special parameter points to the `outputs` itself (self-reference)
|
|
||||||
# The `@` syntax here is used to alias the attribute set of the inputs's parameter, making it convenient to use inside the function.
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
|
nix-flatpak,
|
||||||
darwin,
|
darwin,
|
||||||
home-manager,
|
home-manager,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
username = "wyatt";
|
userName = "wyatt";
|
||||||
useremail = "wyatt@wyattjmiller.com";
|
userEmail = "wyatt@wyattjmiller.com";
|
||||||
system = "aarch64-darwin"; # aarch64-darwin or x86_64-darwin
|
extraSpecialArgs = {
|
||||||
hostname = "sephiroth";
|
inherit userName userEmail;
|
||||||
|
|
||||||
specialArgs =
|
|
||||||
inputs
|
|
||||||
// {
|
|
||||||
inherit username useremail hostname;
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
darwinConfigurations."${hostname}" = darwin.lib.darwinSystem {
|
# Primary laptop - MacBook Pro (2023, M3)
|
||||||
inherit system specialArgs;
|
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail;
|
||||||
|
hostname = "sephiroth";
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
./modules/nix-core.nix
|
./modules/nix-core.nix
|
||||||
./modules/system.nix
|
./modules/darwin/configuration.nix
|
||||||
./modules/apps.nix
|
./modules/darwin/apps.nix
|
||||||
./modules/host-users.nix
|
./modules/host-users.nix
|
||||||
|
|
||||||
# home manager
|
|
||||||
home-manager.darwinModules.home-manager
|
home-manager.darwinModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
home-manager.users.${username} = import ./home;
|
home-manager.users.${userName} = import ./home;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# nix code formatter
|
# Primary desktop computer
|
||||||
formatter.${system} = nixpkgs.legacyPackages.${system}.alejandra;
|
nixosConfiguration."cloud" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail;
|
||||||
|
hostname = "cloud";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
/etc/nixos/configuration.nix
|
||||||
|
./modules/nix-core.nix
|
||||||
|
./modules/nixos/configuration.nix
|
||||||
|
./modules/host-users.nix
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.atuin = {
|
programs.atuin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
5
home/browser.nix
Normal file
5
home/browser.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.firefox = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
};
|
||||||
|
}
|
@ -9,15 +9,17 @@
|
|||||||
p7zip
|
p7zip
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
bat # a batter cat
|
zellij
|
||||||
lazygit # a git tui that's easy to use
|
tmux
|
||||||
bottom # a better top
|
bat
|
||||||
ripgrep # recursively searches directories for a regex pattern
|
lazygit
|
||||||
jq # A lightweight and flexible command-line JSON processor
|
bottom
|
||||||
yq-go # yaml processer https://github.com/mikefarah/yq
|
ripgrep
|
||||||
fzf # A command-line fuzzy finder
|
jq
|
||||||
fh # flake hub command line interface
|
yq-go
|
||||||
aria2 # A lightweight multi-protocol & multi-source command-line download utility
|
fzf
|
||||||
|
fh
|
||||||
|
aria2
|
||||||
yt-dlp
|
yt-dlp
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
@ -27,7 +29,6 @@
|
|||||||
tree
|
tree
|
||||||
gnutar
|
gnutar
|
||||||
gnupg
|
gnupg
|
||||||
tmux
|
|
||||||
nerdfonts
|
nerdfonts
|
||||||
zoxide
|
zoxide
|
||||||
babelfish
|
babelfish
|
||||||
@ -41,12 +42,15 @@
|
|||||||
nixd
|
nixd
|
||||||
deadnix
|
deadnix
|
||||||
alejandra
|
alejandra
|
||||||
|
statix
|
||||||
|
|
||||||
# productivity
|
# productivity
|
||||||
iterm2
|
iterm2
|
||||||
discord
|
discord
|
||||||
obsidian
|
obsidian
|
||||||
vscode
|
vscode
|
||||||
|
weechat
|
||||||
|
# iamb
|
||||||
ollama
|
ollama
|
||||||
|
|
||||||
# games?
|
# games?
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{ username, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
# import sub modules
|
pkgs,
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Import sub modules
|
||||||
imports = [
|
imports = [
|
||||||
./atuin.nix
|
./atuin.nix
|
||||||
./shell.nix
|
./shell.nix
|
||||||
@ -11,22 +13,21 @@
|
|||||||
./eza.nix
|
./eza.nix
|
||||||
./neovim.nix
|
./neovim.nix
|
||||||
./direnv.nix
|
./direnv.nix
|
||||||
|
./sway.nix
|
||||||
|
./terminal.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
# Home Manager needs a bit of information about you and the
|
||||||
# paths it should manage.
|
# paths it should manage.
|
||||||
home = {
|
home = {
|
||||||
username = username;
|
username = userName;
|
||||||
homeDirectory = "/Users/${username}";
|
homeDirectory =
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
# This value determines the Home Manager release that your
|
then "/Users/${userName}"
|
||||||
# configuration is compatible with. This helps avoid breakage
|
else "/home/${userName}";
|
||||||
# when a new Home Manager release introduces backwards
|
sessionVariables = {
|
||||||
# incompatible changes.
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
#
|
};
|
||||||
# You can update Home Manager without changing this value. See
|
|
||||||
# the Home Manager release notes for a list of state version
|
|
||||||
# changes in each release.
|
|
||||||
stateVersion = "24.05";
|
stateVersion = "24.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
{ lib, config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nix-direnv.enable = true;
|
nix-direnv.enable = true;
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
{ lib, config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.eza = {
|
programs.eza = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
|
22
home/flatpak.nix
Normal file
22
home/flatpak.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{...}: {
|
||||||
|
services.flatpak = {
|
||||||
|
remotes = [
|
||||||
|
{
|
||||||
|
name = "flathub";
|
||||||
|
location = "https://dl.flathub.org/repo/flathub..flatpakrepo";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
"com.github.tchx84.Flatseal"
|
||||||
|
"com.slack.Slack"
|
||||||
|
"dev.goats.xivlauncher"
|
||||||
|
"info.beyondallreason.bar"
|
||||||
|
"io.dbeaver.DBeaverCommunity"
|
||||||
|
"io.openrct.OpenRCT2"
|
||||||
|
"md.obsidian.Obsidian"
|
||||||
|
"org.prismlauncher.PrismLauncher"
|
||||||
|
"sh.cider.Cider"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
useremail,
|
userEmail,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
# `programs.git` will generate the config file: ~/.config/git/config
|
# `programs.git` will generate the config file: ~/.config/git/config
|
||||||
@ -14,7 +14,7 @@
|
|||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "Wyatt J. Miller";
|
userName = "Wyatt J. Miller";
|
||||||
userEmail = useremail;
|
userEmail = userEmail;
|
||||||
|
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
init.defaultBranch = "master";
|
init.defaultBranch = "master";
|
||||||
|
10
home/hyprland.nix
Normal file
10
home/hyprland.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = false; # TODO: to enable later
|
||||||
|
plugins = with pkgs; [
|
||||||
|
hyprtrails
|
||||||
|
hy3
|
||||||
|
];
|
||||||
|
xwayland = false; # TODO: to enable later
|
||||||
|
};
|
||||||
|
}
|
@ -1,6 +1,4 @@
|
|||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.lazygit = {
|
programs.lazygit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
{ lib, config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ pkgs, ... }: {
|
{pkgs, ...}: {
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# initExtra = ''
|
# initExtra = ''
|
||||||
@ -7,18 +7,18 @@
|
|||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# ls aliases
|
# ls aliases
|
||||||
ls = "eza --color $argv";
|
ls = "eza --color";
|
||||||
la = "eza -l -all --color $argv";
|
la = "eza -l -all --color";
|
||||||
ll = "eza -l --color $argv";
|
ll = "eza -l --color";
|
||||||
lt = "eza -l --color --git $argv";
|
lt = "eza -l --color --git";
|
||||||
|
|
||||||
# lazygit alias
|
# lazygit alias
|
||||||
lg = "lazygit";
|
lg = "lazygit";
|
||||||
|
|
||||||
# cat, less, more alias
|
# cat, less, more alias
|
||||||
cat = "bat $argv";
|
cat = "bat";
|
||||||
less = "bat $argv";
|
less = "bat";
|
||||||
more = "bat $argv";
|
more = "bat";
|
||||||
|
|
||||||
# top alias
|
# top alias
|
||||||
top = "btm";
|
top = "btm";
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
{ lib, config, ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
settings = { };
|
settings = {};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
100
home/sway.nix
Normal file
100
home/sway.nix
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
dirs = {
|
||||||
|
defaults = ./defaults;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
|
||||||
|
xwayland = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
|
||||||
|
wrapperFeatures = {
|
||||||
|
gtk = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wofi.enable = pkgs.stdenv.isLinux;
|
||||||
|
programs.mako.enable = pkgs.stdenv.isLinux;
|
||||||
|
# programs.cliphist.enable = pkgs.stdenv.isLinux;
|
||||||
|
programs.waybar = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
systemd.enable = true;
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Monaspace Krypton";
|
||||||
|
font-size: 13px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: #1f2335;
|
||||||
|
border-bottom: 1px solid #24283b;
|
||||||
|
color: #c0caf5;
|
||||||
|
opacity: 0.808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 5px;
|
||||||
|
padding-left: 12px;
|
||||||
|
padding-right: 12px;
|
||||||
|
background: transparent;
|
||||||
|
color: #c0caf5;
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background: #c0caf5;
|
||||||
|
color: #1d2021;
|
||||||
|
border-bottom: 1px solid #c0caf5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#battery,
|
||||||
|
#clock,
|
||||||
|
#custom-playerctl {
|
||||||
|
padding: 0 10px;
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: #9ece6a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: #ff9e64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #1d2021;
|
||||||
|
color: #ebdbb2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background: #f7768e;
|
||||||
|
color: #ebdbb2;
|
||||||
|
border-bottom: 1px solid #ebdbb2;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
color: #cc241d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
color: #cc241d;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
10
home/terminal.nix
Normal file
10
home/terminal.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
settings = {}; # TODO: this will be filled in the future
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.kitty = {
|
||||||
|
enable = false; # TODO: to enable later
|
||||||
|
};
|
||||||
|
}
|
@ -1,7 +1,4 @@
|
|||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
# activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`.
|
# activationScripts are executed every time you boot the system or run `nixos-rebuild` / `darwin-rebuild`.
|
||||||
activationScripts.postUserActivation.text = ''
|
activationScripts.postUserActivation.text = ''
|
||||||
@ -14,8 +11,8 @@
|
|||||||
menuExtraClock.Show24Hour = true; # show 24 hour clock
|
menuExtraClock.Show24Hour = true; # show 24 hour clock
|
||||||
|
|
||||||
# customize dock
|
# customize dock
|
||||||
# dock = {
|
dock = {
|
||||||
# autohide = true;
|
autohide = true;
|
||||||
# show-recents = false; # disable recent apps
|
# show-recents = false; # disable recent apps
|
||||||
|
|
||||||
# # customize Hot Corners
|
# # customize Hot Corners
|
||||||
@ -23,17 +20,17 @@
|
|||||||
# wvous-tr-corner = 13; # top-right - Lock Screen
|
# wvous-tr-corner = 13; # top-right - Lock Screen
|
||||||
# wvous-bl-corner = 3; # bottom-left - Application Windows
|
# wvous-bl-corner = 3; # bottom-left - Application Windows
|
||||||
# wvous-br-corner = 4; # bottom-right - Desktop
|
# wvous-br-corner = 4; # bottom-right - Desktop
|
||||||
# };
|
};
|
||||||
|
|
||||||
# # customize finder
|
# # customize finder
|
||||||
# finder = {
|
finder = {
|
||||||
# _FXShowPosixPathInTitle = true; # show full path in finder title
|
_FXShowPosixPathInTitle = true; # show full path in finder title
|
||||||
# AppleShowAllExtensions = true; # show all file extensions
|
AppleShowAllExtensions = true; # show all file extensions
|
||||||
# FXEnableExtensionChangeWarning = false; # disable warning when changing file extension
|
FXEnableExtensionChangeWarning = false; # disable warning when changing file extension
|
||||||
# QuitMenuItem = true; # enable quit menu item
|
QuitMenuItem = true; # enable quit menu item
|
||||||
# ShowPathbar = true; # show path bar
|
ShowPathbar = true; # show path bar
|
||||||
# ShowStatusBar = true; # show status bar
|
ShowStatusBar = true; # show status bar
|
||||||
# };
|
};
|
||||||
|
|
||||||
# # customize trackpad
|
# # customize trackpad
|
||||||
# trackpad = {
|
# trackpad = {
|
@ -1,23 +1,27 @@
|
|||||||
{
|
{
|
||||||
username,
|
pkgs,
|
||||||
|
userName,
|
||||||
hostname,
|
hostname,
|
||||||
...
|
...
|
||||||
} @ args:
|
} @ args: {
|
||||||
#############################################################
|
# Set up networking configuration
|
||||||
#
|
|
||||||
# Host & Users configuration
|
|
||||||
#
|
|
||||||
#############################################################
|
|
||||||
{
|
|
||||||
networking.hostName = hostname;
|
networking.hostName = hostname;
|
||||||
networking.computerName = hostname;
|
networking.computerName = hostname;
|
||||||
|
# networking.firewall.enable = true; # VERY important, do not touch
|
||||||
|
# networking.firewall.allowedTCPPorts = [];
|
||||||
|
# networking.firewall.allowedUDPPorts = [];
|
||||||
|
# networking.networkmanager.enable = pkgs.stdenv.isLinux; # Linux tool for managing network connections
|
||||||
system.defaults.smb.NetBIOSName = hostname;
|
system.defaults.smb.NetBIOSName = hostname;
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Set up user accounts
|
||||||
users.users."${username}" = {
|
# Don't forget to set a password with ‘passwd’!
|
||||||
home = "/Users/${username}";
|
users.users."${userName}" = {
|
||||||
description = username;
|
home =
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then "/Users/${userName}"
|
||||||
|
else "/home/${userName}";
|
||||||
|
description = userName;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.trusted-users = [username];
|
nix.settings.trusted-users = [userName];
|
||||||
}
|
}
|
||||||
|
148
modules/nixos/configuration.nix
Normal file
148
modules/nixos/configuration.nix
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Bring in the hardware configuration
|
||||||
|
imports = [
|
||||||
|
/etc/nixos/hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Utilize systemd-boot
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Install and enable common graphics drivers
|
||||||
|
hardware.opengl = {
|
||||||
|
driSupport = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
mesa_drivers
|
||||||
|
libvdpau-va-gl
|
||||||
|
libva
|
||||||
|
libva-utils
|
||||||
|
intel-vaapi-driver # for Intel
|
||||||
|
intel-media-driver # for Intel
|
||||||
|
rocm-opencl-icd # for AMD
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# For systems with AMD graphics, this enables Vulkan on 32-bit applications
|
||||||
|
# For 64-bit application, however, Vulkan is enabled by default
|
||||||
|
hardware.graphics.driSupport32Bit = true;
|
||||||
|
|
||||||
|
# For systems with AMD graphics, enable AMDVLK
|
||||||
|
hardware.hardware = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
amdvlk
|
||||||
|
];
|
||||||
|
extraPackages32 = with pkgs; [
|
||||||
|
driversi686Linux
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable Bluetooth if present
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable Pipewire (sound)
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable touchpad
|
||||||
|
services.libinput.enable = true;
|
||||||
|
|
||||||
|
# Install packages to be installed system-wide
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
neovim
|
||||||
|
git
|
||||||
|
wireguard-tools
|
||||||
|
podman
|
||||||
|
toolbox
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
playerctl
|
||||||
|
light
|
||||||
|
brightnessctl
|
||||||
|
wttrbar
|
||||||
|
cliphist
|
||||||
|
];
|
||||||
|
|
||||||
|
# Install system-wide fonts
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
liberation_ttf
|
||||||
|
monaspace
|
||||||
|
nerdfonts
|
||||||
|
];
|
||||||
|
|
||||||
|
# Set the EDITOR global environment variable to neovim
|
||||||
|
environment.variables.EDITOR = "nvim";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Enable power management
|
||||||
|
powerManagement = {
|
||||||
|
enable = true;
|
||||||
|
powertop.enable = false; # TODO: to be enabled on laptops
|
||||||
|
cpuFreqGovernor = "performace";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable Steam and open various firewall ports when applicable
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
localNetworkGameTransfers = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users.users.${userName}.extraGroups = ["wheel" "video"];
|
||||||
|
|
||||||
|
# XDG stuff
|
||||||
|
xdg = {
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Firewall stuff not allowed in common user and network creation
|
||||||
|
networking.firewall.enable = true; # VERY important, do not touch
|
||||||
|
# networking.firewall.allowedTCPPorts = [];
|
||||||
|
# networking.firewall.allowedUDPPorts = [];
|
||||||
|
networking.networkmanager.enable = true; # Linux tool for managing network connections
|
||||||
|
|
||||||
|
# Enable Flatpak (app containerization)
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user