Compare commits

1 Commits

Author SHA1 Message Date
1e291f4366 Starting to break out for different XPS systems 2025-10-10 22:30:51 -05:00
37 changed files with 898 additions and 1041 deletions

32
debug-sway.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Debug script for SDDM and Sway session issues
echo "=== SDDM and Sway Debug Information ==="
echo -e "\n1. Checking if Sway is installed:"
which sway 2>/dev/null || echo "Sway not found in PATH"
echo -e "\n2. Checking Sway desktop files:"
find /nix/store -name "sway.desktop" 2>/dev/null | head -3
echo -e "\n3. Checking current SDDM configuration:"
if [ -f /etc/sddm.conf ]; then
cat /etc/sddm.conf
else
echo "SDDM config file not found"
fi
echo -e "\n4. Checking available sessions:"
ls -la /usr/share/wayland-sessions/ 2>/dev/null || echo "No wayland-sessions directory found"
ls -la /usr/share/xsessions/ 2>/dev/null || echo "No xsessions directory found"
echo -e "\n5. Checking if SDDM service is running:"
systemctl status sddm 2>/dev/null || echo "Cannot check SDDM status"
echo -e "\n6. Checking environment variables:"
echo "XDG_SESSION_TYPE: $XDG_SESSION_TYPE"
echo "XDG_CURRENT_DESKTOP: $XDG_CURRENT_DESKTOP"
echo -e "\n7. Testing Sway startup:"
echo "Run this command to test Sway:"
echo "sway --debug 2>&1 | head -10"

522
flake.lock generated
View File

@@ -1,265 +1,5 @@
{
"nodes": {
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1732200724,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1622559957,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1725860795,
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1731949548,
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1734969791,
"narHash": "sha256-A9PxLienMYJ/WUvqFie9qXrNC2MeRRYw7TG/q7DRjZg=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "92f4890bd150fc9d97b61b3583680c0524a8cafe",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": [
"stylix",
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"ghostty": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs-stable": "nixpkgs-stable",
"nixpkgs-unstable": "nixpkgs-unstable",
"zig": "zig"
},
"locked": {
"lastModified": 1736210320,
"narHash": "sha256-QnDkQ/s1OWmPj1f+7MFNxQiAPJdHbI1Aft7yM5I+8gQ=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "a3837a1e4ee06a183f32d4a622c2cdcd51f73fb8",
"type": "github"
},
"original": {
"owner": "ghostty-org",
"repo": "ghostty",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"stylix",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"stylix",
"nixpkgs"
],
"nixpkgs-stable": [
"stylix",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1731363552,
"narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"stylix",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1732369855,
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "47.2",
"repo": "gnome-shell",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -267,285 +7,39 @@
]
},
"locked": {
"lastModified": 1735344290,
"narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=",
"lastModified": 1756261190,
"narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "613691f285dad87694c2ba1c9e6298d04736292d",
"rev": "77f348da3176dc68b20a73dab94852a417daf361",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733572789,
"narHash": "sha256-zjO6m5BqxXIyjrnUziAzk4+T4VleqjstNudSqWcpsHI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c7ffc9727d115e433fd884a62dc164b587ff651d",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1736061677,
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1733423277,
"narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e36963a147267afc055f7cf65225958633e536bf",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "release-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1733229606,
"narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1731763621,
"narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
"lastModified": 1756787288,
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d",
"rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1733550349,
"narHash": "sha256-NcGumB4Lr6KSDq+nIqXtNA8QwAQKDSZT7N9OTGWbTrs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e2605d0744c2417b09f8bf850dfca42fcf537d34",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"ghostty": "ghostty",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"sops-nix": "sops-nix",
"stylix": "stylix"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1736203741,
"narHash": "sha256-eSjkBwBdQk+TZWFlLbclF2rAh4JxbGg8az4w/Lfe7f4=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "c9c88f08e3ee495e888b8d7c8624a0b2519cb773",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"git-hooks": "git-hooks",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_3",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
},
"locked": {
"lastModified": 1736203541,
"narHash": "sha256-ucHJzVv3lGxq7v+snqs/rDNwojVyvBHxwQ5yE2qNfNc=",
"owner": "danth",
"repo": "stylix",
"rev": "45af2a43aaaf05dfb8839dc827c2e2b0d98375da",
"type": "github"
},
"original": {
"owner": "danth",
"ref": "release-24.11",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1716423189,
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1729501581,
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"zig": {
"inputs": {
"flake-compat": [
"ghostty"
],
"flake-utils": "flake-utils",
"nixpkgs": [
"ghostty",
"nixpkgs-stable"
]
},
"locked": {
"lastModified": 1717848532,
"narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
"type": "github"
},
"original": {
"owner": "mitchellh",
"repo": "zig-overlay",
"type": "github"
"nixpkgs": "nixpkgs"
}
}
},

View File

@@ -1,52 +1,26 @@
{
description = "A very basic flake";
description = "Jared's NixOS Configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.11";
home-manager.url = "github:nix-community/home-manager?ref=release-24.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
#hyprland.url = "github:hyprwm/Hyprland";
#nix-colors.url = "github:misterio77/nix-colors";
stylix.url = "github:danth/stylix/release-24.11";
sops-nix.url = "github:Mic92/sops-nix";
ghostty.url = "github:ghostty-org/ghostty";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, stylix, sops-nix, ghostty, ... } @ inputs: let
inherit (self) outputs;
username = "jared";
in {
nixosConfigurations = {
# ============ NixOS Configuration ============ #
tito = nixpkgs.lib.nixosSystem {
outputs = { self, nixpkgs, home-manager }: {
nixosConfigurations.abra = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {inherit inputs username stylix ghostty ;};
modules = [
stylix.nixosModules.stylix
sops-nix.nixosModules.sops
./hosts/tito/configuration.nix
home-manager.nixosModules.home-manager {
./hosts/abra/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jared = import ./home/jared/home.nix;
home-manager.users.jared = import ./home-manager;
}
];
};
xps = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {inherit inputs username stylix ghostty ;};
modules = [
stylix.nixosModules.stylix
sops-nix.nixosModules.sops
./hosts/xps/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jared = import ./home/jared/home.nix;
}
];
};
};
};
}

27
home-manager/default.nix Normal file
View File

@@ -0,0 +1,27 @@
{ config, pkgs, ... }:
{
imports = [
./programs
./services
./themes
];
# Home Manager settings
home.stateVersion = "25.05";
# User-specific packages
home.packages = with pkgs; [
# Sway-related packages
swaybg
swayidle
swaylock
wlogout
wofi
grim
slurp
mako
wl-clipboard
# Add user-specific packages here
];
}

View File

@@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
imports = [
# Add program-specific configurations here
./git.nix
./direnv.nix
./neovim.nix
./sway.nix
./waybar.nix
# ./shell.nix
./yazi.nix
];
}

View File

@@ -0,0 +1,10 @@
{ config, pkgs, ... }:
{
programs.direnv = {
enable = true;
enableBashIntegration = true; # or enableZshIntegration = true;
nix-direnv.enable = true;
};
}

View File

@@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
programs.git = {
enable = true;
userName = "Jared Kling";
userEmail = "jared@kling.dev";
extraConfig = {
init.defaultBranch = "main";
pull.rebase = true;
push.autoSetupRemote = true;
};
};
}

View File

@@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
withNodeJs = true;
defaultEditor = true;
};
}

View File

@@ -0,0 +1,167 @@
{ config, pkgs, ... }:
{
wayland.windowManager.sway = {
enable = true;
config = {
# Input configuration
input = {
"type:touchpad" = {
natural_scroll = "enabled";
tap = "enabled";
tap_button_map = "lrm";
scroll_method = "two_finger";
};
"type:pointer" = {
natural_scroll = "enabled";
};
};
# Key bindings
keybindings = {
"Mod4+Return" = "exec alacritty";
"Mod4+Shift+q" = "kill";
"Mod4+b" = "exec vivaldi";
"Mod4+d" = "exec wofi --show drun --width 500 --height 350 --border 2 --prompt \"Apps\" --allow-images --gtk-dark";
"Mod4+Shift+d" = "exec wofi --show run --width 400 --height 200 --prompt \"Run\"";
"Mod4+Tab" = "exec ~/.config/sway/scripts/window-switcher.sh";
"Mod4+Shift+c" = "reload";
"Mod4+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'";
# Focus movement
"Mod4+h" = "focus left";
"Mod4+j" = "focus down";
"Mod4+k" = "focus up";
"Mod4+l" = "focus right";
"Mod4+Left" = "focus left";
"Mod4+Down" = "focus down";
"Mod4+Up" = "focus up";
"Mod4+Right" = "focus right";
# Move windows
"Mod4+Shift+h" = "move left";
"Mod4+Shift+j" = "move down";
"Mod4+Shift+k" = "move up";
"Mod4+Shift+l" = "move right";
"Mod4+Shift+Left" = "move left";
"Mod4+Shift+Down" = "move down";
"Mod4+Shift+Up" = "move up";
"Mod4+Shift+Right" = "move right";
# Workspace switching
"Mod4+1" = "workspace number 1";
"Mod4+2" = "workspace number 2";
"Mod4+3" = "workspace number 3";
"Mod4+4" = "workspace number 4";
"Mod4+5" = "workspace number 5";
"Mod4+6" = "workspace number 6";
"Mod4+7" = "workspace number 7";
"Mod4+8" = "workspace number 8";
"Mod4+9" = "workspace number 9";
"Mod4+0" = "workspace number 10";
# Move containers to workspaces
"Mod4+Shift+1" = "move container to workspace number 1";
"Mod4+Shift+2" = "move container to workspace number 2";
"Mod4+Shift+3" = "move container to workspace number 3";
"Mod4+Shift+4" = "move container to workspace number 4";
"Mod4+Shift+5" = "move container to workspace number 5";
"Mod4+Shift+6" = "move container to workspace number 6";
"Mod4+Shift+7" = "move container to workspace number 7";
"Mod4+Shift+8" = "move container to workspace number 8";
"Mod4+Shift+9" = "move container to workspace number 9";
"Mod4+Shift+0" = "move container to workspace number 10";
"Mod4+f" = "fullscreen";
"Mod4+Shift+b" = "exec pkill waybar; waybar &";
};
# Window rules
window = {
commands = [
{
criteria = { class = ".*"; };
command = "border pixel 2";
}
{
criteria = { app_id = ".*"; };
command = "border pixel 2";
}
{
criteria = { window_role = "dialog"; };
command = "border normal";
}
{
criteria = { window_type = "dialog"; };
command = "border normal";
}
];
titlebar = false;
};
# Assignments
assigns = {
"9" = [{ class = "Vivaldi-stable"; }];
};
# Gaps
gaps = {
inner = 8;
outer = 12;
};
# Colors (Tokyo Night theme)
colors = {
focused = {
border = "#7aa2f7";
background = "#7aa2f7";
text = "#1a1b26";
indicator = "#7aa2f7";
childBorder = "#7aa2f7";
};
focusedInactive = {
border = "#24283b";
background = "#24283b";
text = "#c0caf5";
indicator = "#24283b";
childBorder = "#24283b";
};
unfocused = {
border = "#24283b";
background = "#1a1b26";
text = "#9aa5ce";
indicator = "#24283b";
childBorder = "#24283b";
};
urgent = {
border = "#f7768e";
background = "#f7768e";
text = "#1a1b26";
indicator = "#f7768e";
childBorder = "#f7768e";
};
};
# Output configuration
output = {
"*" = {
#bg = "/home/jared/.config/sway/wallpapers/starters_and_pika.jpg fill";
};
};
# Seat configuration
seat = {
"seat0" = {
xcursor_theme = "Bibata-Modern-Ice 24";
};
};
# Startup commands
startup = [
{ command = "waybar"; }
{ command = "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway"; }
{ command = "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"; }
];
};
};
}

View File

@@ -0,0 +1,229 @@
{ config, pkgs, ... }:
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
position = "top";
height = 30;
spacing = 4;
modules-left = [ "sway/workspaces" "sway/mode" ];
modules-center = [ "sway/window" ];
modules-right = [ "idle_inhibitor" "pulseaudio" "network" "cpu" "memory" "temperature" "battery" "tray" "clock" ];
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
format = "{name}: {icon}";
format-icons = {
"1" = "󰈹";
"2" = "󰈹";
"3" = "󰈹";
"4" = "󰈹";
"5" = "󰈹";
"6" = "󰈹";
"7" = "󰈹";
"8" = "󰈹";
"9" = "󰈹";
"10" = "󰈹";
urgent = "󰈹";
focused = "󰈹";
default = "󰈹";
};
};
"sway/mode" = {
format = "<span style=\"italic\">{}</span>";
};
"sway/window" = {
format = "{}";
max-length = 50;
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "󰈸";
deactivated = "󰈸";
};
};
"tray" = {
spacing = 10;
};
"clock" = {
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
format-alt = "{:%Y-%m-%d}";
};
"cpu" = {
format = "{usage}% 󰍛";
tooltip = false;
};
"memory" = {
format = "{}% 󰍛";
};
"temperature" = {
thermal-zone = 2;
hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
critical-threshold = 80;
format = "{temperatureC}°C {icon}";
format-icons = [ "󰈸" "󰈸" "󰈸" ];
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{capacity}% {icon}";
format-charging = "󰂄 {capacity}%";
format-plugged = "󰂄 {capacity}%";
format-alt = "{time} {icon}";
format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰂃" "󰂄" ];
};
"network" = {
format-wifi = "{essid} ({signalStrength}%) 󰤨";
format-ethernet = "{ipaddr}/{cidr} 󰤨";
tooltip-format = "{ifname} via {gwaddr} 󰤨";
format-linked = "{ifname} (No IP) 󰤨";
format-disconnected = "Disconnected ";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
"pulseaudio" = {
format = "{volume}% {icon} {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";
};
};
};
style = ''
* {
border: none;
border-radius: 0;
font-family: "JetBrainsMono Nerd Font", "Font Awesome 6 Free";
font-size: 13px;
min-height: 0;
}
window#waybar {
background: #1a1b26;
color: #c0caf5;
}
#workspaces button {
padding: 0 5px;
background: transparent;
color: #c0caf5;
border-top: 2px solid transparent;
}
#workspaces button.focused {
color: #7aa2f7;
border-top: 2px solid #7aa2f7;
}
#workspaces button.urgent {
color: #f7768e;
}
#mode {
background: #f7768e;
color: #1a1b26;
padding: 0 5px;
}
#clock, #battery, #cpu, #memory, #temperature, #network, #pulseaudio, #tray, #mode, #idle_inhibitor {
padding: 0 10px;
margin: 0 4px;
color: #c0caf5;
}
#clock {
font-weight: bold;
}
#battery {
color: #c0caf5;
}
#battery.charging {
color: #9ece6a;
}
#battery.critical:not(.charging) {
color: #f7768e;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#cpu {
color: #bb9af7;
}
#memory {
color: #bb9af7;
}
#temperature {
color: #ff9e64;
}
#temperature.critical {
color: #f7768e;
}
#network {
color: #7aa2f7;
}
#network.disconnected {
color: #f7768e;
}
#pulseaudio {
color: #7aa2f7;
}
#pulseaudio.muted {
color: #f7768e;
}
#tray {
background-color: #1a1b26;
}
@keyframes blink {
to {
background-color: #f7768e;
color: #1a1b26;
}
}
'';
};
}

View File

@@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
programs.yazi = {
enable = true;
enableBashIntegration = true;
};
}

View File

@@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports = [
# Add service-specific configurations here
# ./dunst.nix
];
}

View File

@@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports = [
# Add theme-specific configurations here
# ./colors.nix
];
}

View File

@@ -1,68 +0,0 @@
# This is your home-manager configuration file
# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix)
{
inputs,
outputs,
lib,
config,
pkgs,
stylix,
home-manager,
...
}: {
home = {
username = "jared";
homeDirectory = "/home/jared";
packages = with pkgs; [
spotify
strawberry
nodePackages.prettier
];
};
# Add stuff for your user as you see fit:
# programs.neovim.enable = true;
# home.packages = with pkgs; [ steam ];
# Enable home-manager and git
programs.home-manager.enable = true;
# programs.git.enable = true;
programs.kitty.enable = true;
programs.firefox.enable = true;
programs.zellij.enable = true;
programs.zellij.settings = {
keybinds."unbind" = "Ctrl o";
keybinds.session."bind \"Ctrl p\"".SwitchToMode = "Normal";
keybinds."shared_except \"session\" \"locked\""."bind \"Ctrl 9\"".SwitchToMode = "Session";
};
programs.zsh.enable = true;
# programs.spotify-player.enable = true;
dconf.settings = {
"org/gnome/desktop/wm/keybindings" = {
switch-applications = [];
switch-applications-backward = [];
switch-windows = [ "<Alt>Tab" ];
switch-windows-backward = [ "<Shift><Alt>Tab" ];
};
};
programs.direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
programs.bash.enable = true;
programs.bash.bashrcExtra = ''
export GIT_ASKPASS=""
if [ -f .bashrc.orig ]; then
. ~/.bashrc.orig
fi
'';
# Nicely reload system units when changing configs
# systemd.user.startServices = "sd-switch";
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "24.05";
}

View File

@@ -0,0 +1,10 @@
{ config, pkgs, ... }:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
# Include system-level configurations
../../system
];
}

View File

@@ -14,18 +14,18 @@
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/77969bfa-44f3-44f2-9c57-69fd161f6a75";
{ device = "/dev/disk/by-uuid/39d9cdd2-79cd-45f9-9d06-b902d9f717fe";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/FFD6-BA11";
{ device = "/dev/disk/by-uuid/4104-FEB1";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/d495d805-4feb-4b25-ab7d-8eeb66efe3a7"; }
[ { device = "/dev/disk/by-uuid/4d15e7fc-f101-4712-af2f-098cf75f3e8f"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@@ -1,60 +0,0 @@
{
config,
pkgs,
lib,
inputs,
username,
stylix,
ghostty,
...
}: {
imports = [
./hardware-configuration.nix
../../modules/nvidia.nix
../../modules/common.nix
../../modules/gnome.nix
inputs.sops-nix.nixosModules.sops
../../modules/protonvpn.nix
];
sops.defaultSopsFile = ../../secrets/secrets.yaml;
sops.defaultSopsFormat = "yaml";
sops.age.keyFile = "/home/${username}/.config/sops/age/keys.txt";
networking = {
hostName = "tito";
networkmanager.enable = true;
};
programs = {
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
chromium.enable = true;
};
virtualisation.docker.enable = true;
users.users.${username} = {
isNormalUser = true;
extraGroups = [
"networkmanager"
"wheel"
"audito"
"video"
"input"
"docker"
];
};
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/solarflare.yaml";
stylix.image = /home/jared/Pictures/tropea.jpg;
stylix.targets.gnome.enable = true;
stylix.cursor.package = pkgs.vimix-cursor-theme;
stylix.cursor.name = "Vimix-Cursors";
system.stateVersion = "23.11";
}

View File

@@ -1,39 +0,0 @@
# 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 = [ "nvme" "ahci" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/b030079d-d72f-43a8-a437-4368f4275b66";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/A646-15B0";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
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.enp12s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp13s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,55 +0,0 @@
{
config,
pkgs,
lib,
inputs,
username,
stylix,
ghostty,
...
}: {
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
../../modules/common.nix
../../modules/gnome.nix
inputs.sops-nix.nixosModules.sops
../../modules/protonvpn.nix
];
sops.defaultSopsFile = ../../secrets/secrets.yaml;
sops.defaultSopsFormat = "yaml";
sops.age.keyFile = "/home/${username}/.config/sops/age/keys.txt";
networking = {
hostName = "xps";
networkmanager.enable = true;
};
virtualisation.docker.enable = true;
users.users.${username} = {
isNormalUser = true;
extraGroups = [
"networkmanager"
"wheel"
"audio"
"video"
"input"
"docker"
];
};
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "${username}";
stylix.enable = true;
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/solarflare.yaml";
stylix.image = ../../backgrounds/SupermassiveBinaryBlackHoles.png;
stylix.cursor.package = pkgs.vimix-cursor-theme;
stylix.cursor.name = "Vimix-Cursors";
stylix.targets.gnome.enable = true;
system.stateVersion = "23.11"; # Did you read the comment?
}

View File

@@ -1,120 +0,0 @@
{
config,
pkgs,
stylix,
username,
ghostty,
lib,
...
}:
{
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
kernelPackages = pkgs.linuxPackages_latest;
kernel.sysctl = {
"vm.swappiness" = 10;
};
};
services = {
printing.enable = true;
openssh.enable = true;
tailscale.enable = true;
flatpak.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Configure keymap in X11
xserver.xkb = {
layout = "us";
variant = "";
};
};
programs.ssh.startAgent = true; # Use OpenSSH agent instead
services.gnome.gnome-keyring.enable = lib.mkForce false; # Disable GNOME keyring
hardware.bluetooth.enable = true;
hardware.pulseaudio.enable = false;
hardware.graphics.enable = true;
environment.variables = {
EDITOR = "nvim";
};
environment.systemPackages = with pkgs; [
git
neovim
gcc
tailscale
firefox
htop
nerdfonts
kitty
yazi
nodejs
openvpn
audio-recorder
qemu
qemu_kvm
unzip
libation
nodePackages.prettier
dconf2nix
libation
sops
ghostty.packages.x86_64-linux.default
];
programs = {
nh = {
enable = true;
flake = "/home/${username}/nix-config";
};
git = {
enable = true;
config = {
credential.helper = "store";
};
};
};
networking.nameservers = [
"192.168.1.3"
"1.1.1.1"
"9.9.9.9"
];
# 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";
};
security.rtkit.enable = true;
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
}

View File

@@ -1,11 +0,0 @@
{ config, pkgs, stylix, ... }:
{
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
}

View File

@@ -1,54 +0,0 @@
{ config, pkgs, stylix, ... }:
{
programs.hyprland = {
enable = true;
# nvidiaPatches = true;
xwayland.enable = true;
};
services.xserver = {
enable = true;
};
services.displayManager.sddm.enable = true;
services.displayManager.sddm.wayland.enable = true;
environment.sessionVariables = {
# Cursor could be invisible without this
WLR_NO_HARDWARE_CURSORS = "1";
# Electron, use wayland
NIXOS_OZONE_WL = "1";
};
environment.systemPackages = with pkgs; [
# bar
(waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
})
)
#Elkowar wacky widges (alternate bar)
#eww
# notifications
dunst
#mako
libnotify
# wallpaper
swww
# app-launcher
rofi-wayland
];
services.dbus.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
hardware = {
opengl.enable = true;
nvidia.modesetting.enable = true;
};
}

View File

@@ -1,18 +0,0 @@
{ config, lib, pkgs, ... }:
{
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
hardware.nvidia-container-toolkit.enable = true;
#virtualisation.docker.enableNvidia = true;
services.xserver.videoDrivers = ["nvidia"];
}

View File

@@ -1,26 +0,0 @@
{ config, pkgs, ... }:
{
sops.secrets."protonvpn/norway_config" = {};
sops.secrets."protonvpn/us_config" = {};
sops.secrets."protonvpn/auth-user-pass" = {};
environment.systemPackages = with pkgs; [
update-resolv-conf
];
environment.etc."openvpn/update-resolv-conf".source = "${pkgs.update-resolv-conf}/libexec/openvpn/update-resolv-conf";
services.openvpn.servers = {
proton-norway = {
autoStart = false;
config = ''
config ${config.sops.secrets."protonvpn/norway_config".path}
auth-user-pass ${config.sops.secrets."protonvpn/auth-user-pass".path}
'';
};
proton-united-states = {
autoStart = false;
config = ''
config ${config.sops.secrets."protonvpn/us_config".path}
auth-user-pass ${config.sops.secrets."protonvpn/auth-user-pass".path}
'';
};
};
}

42
rebuild.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# NixOS rebuild script for flake-based configuration
# Usage: ./rebuild.sh [switch|build|test]
set -e
# Check if experimental features are enabled
if ! nix --version | grep -q "experimental-features"; then
echo "Warning: Nix experimental features may not be enabled."
echo "Consider adding 'experimental-features = nix-command flakes' to /etc/nix/nix.conf"
fi
ACTION=${1:-switch}
case $ACTION in
switch)
echo "Building and switching to new configuration..."
sudo nixos-rebuild switch --flake .#xps-nixos
;;
build)
echo "Building configuration without switching..."
sudo nixos-rebuild build --flake .#xps-nixos
;;
test)
echo "Building configuration for testing..."
sudo nixos-rebuild build --flake .#xps-nixos
echo "Configuration built successfully. Run 'sudo nixos-rebuild switch' to apply it."
;;
update)
echo "Updating flake inputs..."
nix flake update --extra-experimental-features nix-command --extra-experimental-features flakes
;;
*)
echo "Usage: $0 [switch|build|test|update]"
echo " switch: Build and switch to new configuration (default)"
echo " build: Build configuration without switching"
echo " test: Build configuration for testing"
echo " update: Update flake inputs"
exit 1
;;
esac

File diff suppressed because one or more lines are too long

7
system/boot.nix Normal file
View File

@@ -0,0 +1,7 @@
{ config, pkgs, ... }:
{
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
}

14
system/default.nix Normal file
View File

@@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
imports = [
./boot.nix
./networking.nix
./locale.nix
./services.nix
./packages.nix
./users.nix
./nix.nix
./programs.nix
];
}

21
system/locale.nix Normal file
View File

@@ -0,0 +1,21 @@
{ config, pkgs, ... }:
{
# 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";
};
}

6
system/networking.nix Normal file
View File

@@ -0,0 +1,6 @@
{ config, pkgs, ... }:
{
networking.hostName = "abra"; # Define your hostname.
networking.networkmanager.enable = true;
}

12
system/nix.nix Normal file
View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
{
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "25.05"; # Did you read the comment?
}

71
system/packages.nix Normal file
View File

@@ -0,0 +1,71 @@
{ config, pkgs, ... }:
{
# Install firefox.
programs.firefox.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; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
alacritty
# Wayland and Sway essentials
sway
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
wofi
swaylock
swayidle
# Additional packages for SDDM compatibility
qt5.qtwayland
qt6.qtwayland
polkit # policy kit
ffmpeg # media player / encoding
xdg-utils # desktop integration tools
vivaldi
nodejs_22
code-cursor-fhs
jq
zellij
bibata-cursors
podman
podman-compose
yazi
wget
];
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
# Nerd Fonts - individual packages
nerd-fonts.jetbrains-mono
nerd-fonts.fira-code
nerd-fonts.sauce-code-pro # Source Code Pro equivalent
nerd-fonts.dejavu-sans-mono
# Additional fonts for fallbacks
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
liberation_ttf
fira-code
fira-code-symbols
];
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "JetBrainsMono Nerd Font" "Fira Code" ];
sansSerif = [ "Noto Sans" "Liberation Sans" ];
serif = [ "Noto Serif" "Liberation Serif" ];
emoji = [ "Noto Color Emoji" ];
};
};
};
}

33
system/programs.nix Normal file
View File

@@ -0,0 +1,33 @@
{ config, pkgs, ... }:
{
# Enable Sway at system level (required for SDDM to detect it)
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
# Enable Xwayland for compatibility
programs.xwayland.enable = true;
# Environment variables for Wayland
environment.variables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "sway";
QT_QPA_PLATFORM = "wayland";
MOZ_ENABLE_WAYLAND = "1";
_JAVA_AWT_WM_NONREPARENTING = "1";
# Additional Wayland environment variables
GDK_BACKEND = "wayland,x11";
CLUTTER_BACKEND = "wayland";
};
# Ensure Wayland sessions are properly registered
environment.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "sway";
};
# Enable other useful programs
programs.light.enable = true;
}

26
system/services-gdm.nix Normal file
View File

@@ -0,0 +1,26 @@
{ config, pkgs, ... }:
{
# Alternative configuration using GDM instead of SDDM
# Uncomment this and comment out SDDM in services.nix if SDDM doesn't work
# Enable GDM display manager (alternative to SDDM)
services.displayManager.gdm = {
enable = true;
wayland.enable = true;
settings = {
daemon = {
WaylandEnable = true;
};
security = {
DisallowTCP = false;
};
};
};
# Autologin configuration for GDM
services.displayManager.autoLogin = {
enable = true;
user = "jared";
};
}

78
system/services.nix Normal file
View File

@@ -0,0 +1,78 @@
{ config, pkgs, ... }:
{
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable X11 server (required for some applications and SDDM compatibility)
services.xserver.enable = true;
services.openssh = {
enable = true;
settings = {
X11Forwarding = true;
PermitRootLogin = "no"; # no root
PasswordAuthentication = false; # no passwords
};
};
# Enable SDDM display manager with proper Wayland support
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
settings = {
General = {
DisplayServer = "wayland";
GreeterEnvironment = "QT_WAYLAND_SHELL_INTEGRATION=layer-shell";
Numlock = "on";
HaltCommand = "/run/current-system/systemd/bin/systemctl poweroff";
RebootCommand = "/run/current-system/systemd/bin/systemctl reboot";
InputMethod = "";
};
Autologin = {
User = "jared";
Session = "sway";
};
};
};
# Libinput configuration for both X11 and Wayland
services.libinput = {
enable = true;
touchpad = {
naturalScrolling = true;
disableWhileTyping = true; # Optional: Palm rejection
};
mouse = {
naturalScrolling = true;
};
};
virtualisation.docker = {
enable = true;
};
# Security and session management
security.polkit.enable = true;
# Ensure proper seat management for Wayland
services.seatd = {
enable = true;
};
}

14
system/users.nix Normal file
View File

@@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
# Define a user account. Don't forget to set a password with 'passwd'.
users.users.jared = {
isNormalUser = true;
description = "Jared";
extraGroups = [ "networkmanager" "wheel" "video" "input" "audio" "docker" "seat" "render" ];
# Set initial password (user should change this after first login)
initialPassword = "changeme";
packages = with pkgs; [
];
};
}