Adhere to NixOS systems #1
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;
|
||||||
|
}
|
@ -33,11 +33,10 @@
|
|||||||
inherit userName userEmail;
|
inherit userName userEmail;
|
||||||
hostname = "sephiroth";
|
hostname = "sephiroth";
|
||||||
};
|
};
|
||||||
# nixpkgs = inputs.nixpkgs-darwin;
|
|
||||||
modules = [
|
modules = [
|
||||||
./modules/nix-core.nix
|
./modules/nix-core.nix
|
||||||
./modules/darwinSystem.nix
|
./modules/darwin/configuration.nix
|
||||||
./modules/apps.nix
|
./modules/darwin/apps.nix
|
||||||
./modules/host-users.nix
|
./modules/host-users.nix
|
||||||
|
|
||||||
home-manager.darwinModules.home-manager
|
home-manager.darwinModules.home-manager
|
||||||
@ -60,7 +59,7 @@
|
|||||||
modules = [
|
modules = [
|
||||||
/etc/nixos/configuration.nix
|
/etc/nixos/configuration.nix
|
||||||
./modules/nix-core.nix
|
./modules/nix-core.nix
|
||||||
# ./modules/linuxSystem.nix
|
./modules/nixos/configuration.nix
|
||||||
./modules/host-users.nix
|
./modules/host-users.nix
|
||||||
|
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
p7zip
|
p7zip
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
|
zellij
|
||||||
|
tmux
|
||||||
bat
|
bat
|
||||||
lazygit
|
lazygit
|
||||||
bottom
|
bottom
|
||||||
@ -27,7 +29,6 @@
|
|||||||
tree
|
tree
|
||||||
gnutar
|
gnutar
|
||||||
gnupg
|
gnupg
|
||||||
tmux
|
|
||||||
nerdfonts
|
nerdfonts
|
||||||
zoxide
|
zoxide
|
||||||
babelfish
|
babelfish
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
./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
|
||||||
|
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
|
||||||
|
};
|
||||||
|
}
|
41
home/sway.nix
Normal file
41
home/sway.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{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 = true;
|
||||||
|
|
||||||
|
# Install packages that will be installed with sway
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
wl-clipboard
|
||||||
|
wofi
|
||||||
|
mako
|
||||||
|
wttrbar
|
||||||
|
light
|
||||||
|
brightnessctl
|
||||||
|
playerctl
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
cliphist
|
||||||
|
];
|
||||||
|
|
||||||
|
wrapperFeatures = {
|
||||||
|
gtk = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."sway/config".source = dirs.defaults + /sway/config;
|
||||||
|
|
||||||
|
programs.wofi.enable = pkgs.stdenv.isLinux;
|
||||||
|
programs.waybar = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."waybar/config".source = dirs.defaults + /waybar/config.json;
|
||||||
|
xdg.configFile."waybar/style.css".source = dirs.defaults + /waybar/style.css;
|
||||||
|
}
|
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 = ''
|
||||||
@ -11,29 +8,29 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
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
|
||||||
# wvous-tl-corner = 2; # top-left - Mission Control
|
# wvous-tl-corner = 2; # top-left - Mission Control
|
||||||
# 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 = {
|
||||||
@ -56,9 +53,9 @@
|
|||||||
# # If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat.
|
# # If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat.
|
||||||
# # This is very useful for vim users, they use `hjkl` to move cursor.
|
# # This is very useful for vim users, they use `hjkl` to move cursor.
|
||||||
# # sets how long it takes before it starts repeating.
|
# # sets how long it takes before it starts repeating.
|
||||||
# InitialKeyRepeat = 15; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms)
|
InitialKeyRepeat = 15; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms)
|
||||||
# # sets how fast it repeats once it starts.
|
# # sets how fast it repeats once it starts.
|
||||||
# KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms)
|
KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms)
|
||||||
|
|
||||||
# NSAutomaticCapitalizationEnabled = false; # disable auto capitalization
|
# NSAutomaticCapitalizationEnabled = false; # disable auto capitalization
|
||||||
# NSAutomaticDashSubstitutionEnabled = false; # disable auto dash substitution
|
# NSAutomaticDashSubstitutionEnabled = false; # disable auto dash substitution
|
||||||
@ -133,19 +130,19 @@
|
|||||||
# keyboard settings is not very useful on macOS
|
# keyboard settings is not very useful on macOS
|
||||||
# the most important thing is to remap option key to alt key globally,
|
# the most important thing is to remap option key to alt key globally,
|
||||||
# but it's not supported by macOS yet.
|
# but it's not supported by macOS yet.
|
||||||
# keyboard = {
|
keyboard = {
|
||||||
# enableKeyMapping = true; # enable key mapping so that we can use `option` as `control`
|
# enableKeyMapping = true; # enable key mapping so that we can use `option` as `control`
|
||||||
|
|
||||||
# # NOTE: do NOT support remap capslock to both control and escape at the same time
|
# # NOTE: do NOT support remap capslock to both control and escape at the same time
|
||||||
# remapCapsLockToControl = false; # remap caps lock to control, useful for emac users
|
# remapCapsLockToControl = false; # remap caps lock to control, useful for emac users
|
||||||
# remapCapsLockToEscape = true; # remap caps lock to escape, useful for vim users
|
remapCapsLockToEscape = true; # remap caps lock to escape, useful for vim users
|
||||||
|
|
||||||
# # swap left command and left alt
|
# # swap left command and left alt
|
||||||
# # so it matches common keyboard layout: `ctrl | command | alt`
|
# # so it matches common keyboard layout: `ctrl | command | alt`
|
||||||
# #
|
# #
|
||||||
# # disabled, caused only problems!
|
# # disabled, caused only problems!
|
||||||
# swapLeftCommandAndLeftAlt = false;
|
# swapLeftCommandAndLeftAlt = false;
|
||||||
# };
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Add ability to used TouchID for sudo authentication
|
# Add ability to used TouchID for sudo authentication
|
@ -1,27 +1,30 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
userName,
|
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
|
||||||
|
# Don't forget to set a password with ‘passwd’!
|
||||||
users.users."${userName}" = {
|
users.users."${userName}" = {
|
||||||
home =
|
home =
|
||||||
if pkgs.stdenv.isDarwin
|
if pkgs.stdenv.isDarwin
|
||||||
then "/Users/${userName}"
|
then "/Users/${userName}"
|
||||||
else "/home/${userName}";
|
else "/home/${userName}";
|
||||||
description = userName;
|
description = userName;
|
||||||
|
extraGroups =
|
||||||
|
if pkgs.stdenv.isLinux
|
||||||
|
then ["wheel" "video"]
|
||||||
|
else [];
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.trusted-users = [userName];
|
nix.settings.trusted-users = [userName];
|
||||||
|
117
modules/nixos/configuration.nix
Normal file
117
modules/nixos/configuration.nix
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# 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
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user