diff --git a/README.md b/README.md
index 7499039..e288f05 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
# NixConfigs
-My configs for NixOS
\ No newline at end of file
+My configs for NixOS
diff --git a/debug-sway.sh b/debug-sway.sh
new file mode 100755
index 0000000..cd54bdc
--- /dev/null
+++ b/debug-sway.sh
@@ -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"
diff --git a/flake.lock b/flake.lock
index c806954..01746bd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -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"
}
}
},
diff --git a/flake.nix b/flake.nix
index da1490c..0988e4f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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";
- };
-
- outputs = { self, nixpkgs, home-manager, stylix, sops-nix, ghostty, ... } @ inputs: let
- inherit (self) outputs;
- username = "jared";
- in {
- nixosConfigurations = {
- # ============ NixOS Configuration ============ #
- tito = 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 {
- home-manager.useGlobalPkgs = true;
- home-manager.useUserPackages = true;
- home-manager.users.jared = import ./home/jared/home.nix;
- }
- ];
- };
- 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;
- }
- ];
-
- };
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs.nixpkgs.follows = "nixpkgs";
};
};
-}
+
+ outputs = { self, nixpkgs, home-manager }: {
+ nixosConfigurations.abra = nixpkgs.lib.nixosSystem {
+ system = "x86_64-linux";
+ modules = [
+ ./hosts/abra/configuration.nix
+ home-manager.nixosModules.home-manager
+ {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.users.jared = import ./home-manager;
+ }
+ ];
+ };
+ };
+}
diff --git a/home-manager/default.nix b/home-manager/default.nix
new file mode 100644
index 0000000..07dbffc
--- /dev/null
+++ b/home-manager/default.nix
@@ -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
+ ];
+}
diff --git a/home-manager/programs/default.nix b/home-manager/programs/default.nix
new file mode 100644
index 0000000..ae09a85
--- /dev/null
+++ b/home-manager/programs/default.nix
@@ -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
+ ];
+}
diff --git a/home-manager/programs/direnv.nix b/home-manager/programs/direnv.nix
new file mode 100644
index 0000000..6aa8998
--- /dev/null
+++ b/home-manager/programs/direnv.nix
@@ -0,0 +1,10 @@
+{ config, pkgs, ... }:
+
+{
+ programs.direnv = {
+ enable = true;
+ enableBashIntegration = true; # or enableZshIntegration = true;
+ nix-direnv.enable = true;
+ };
+}
+
diff --git a/home-manager/programs/git.nix b/home-manager/programs/git.nix
new file mode 100644
index 0000000..1515bde
--- /dev/null
+++ b/home-manager/programs/git.nix
@@ -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;
+ };
+ };
+}
diff --git a/home-manager/programs/neovim.nix b/home-manager/programs/neovim.nix
new file mode 100644
index 0000000..07231b1
--- /dev/null
+++ b/home-manager/programs/neovim.nix
@@ -0,0 +1,11 @@
+{ config, pkgs, ... }:
+
+{
+ programs.neovim = {
+ enable = true;
+ viAlias = true;
+ vimAlias = true;
+ withNodeJs = true;
+ defaultEditor = true;
+ };
+}
\ No newline at end of file
diff --git a/home-manager/programs/sway.nix b/home-manager/programs/sway.nix
new file mode 100644
index 0000000..521a8ac
--- /dev/null
+++ b/home-manager/programs/sway.nix
@@ -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"; }
+ ];
+ };
+ };
+}
diff --git a/home-manager/programs/waybar.nix b/home-manager/programs/waybar.nix
new file mode 100644
index 0000000..f403982
--- /dev/null
+++ b/home-manager/programs/waybar.nix
@@ -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 = "{}";
+ };
+
+ "sway/window" = {
+ format = "{}";
+ max-length = 50;
+ };
+
+ "idle_inhibitor" = {
+ format = "{icon}";
+ format-icons = {
+ activated = "";
+ deactivated = "";
+ };
+ };
+
+ "tray" = {
+ spacing = 10;
+ };
+
+ "clock" = {
+ tooltip-format = "{:%Y %B}\n{calendar}";
+ 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;
+ }
+ }
+ '';
+ };
+}
diff --git a/home-manager/programs/yazi.nix b/home-manager/programs/yazi.nix
new file mode 100644
index 0000000..2eb4757
--- /dev/null
+++ b/home-manager/programs/yazi.nix
@@ -0,0 +1,9 @@
+{ config, pkgs, ... }:
+
+{
+ programs.yazi = {
+ enable = true;
+ enableBashIntegration = true;
+ };
+}
+
diff --git a/home-manager/services/default.nix b/home-manager/services/default.nix
new file mode 100644
index 0000000..951578d
--- /dev/null
+++ b/home-manager/services/default.nix
@@ -0,0 +1,8 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ # Add service-specific configurations here
+ # ./dunst.nix
+ ];
+}
diff --git a/home-manager/themes/default.nix b/home-manager/themes/default.nix
new file mode 100644
index 0000000..011e499
--- /dev/null
+++ b/home-manager/themes/default.nix
@@ -0,0 +1,8 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ # Add theme-specific configurations here
+ # ./colors.nix
+ ];
+}
diff --git a/home/jared/home.nix b/home/jared/home.nix
deleted file mode 100644
index 1ab8361..0000000
--- a/home/jared/home.nix
+++ /dev/null
@@ -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 = [ "Tab" ];
- switch-windows-backward = [ "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";
-}
diff --git a/hosts/abra/configuration.nix b/hosts/abra/configuration.nix
new file mode 100644
index 0000000..0e4709d
--- /dev/null
+++ b/hosts/abra/configuration.nix
@@ -0,0 +1,10 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ # Include system-level configurations
+ ../../system
+ ];
+}
diff --git a/hosts/xps/hardware-configuration.nix b/hosts/abra/hardware-configuration.nix
similarity index 83%
rename from hosts/xps/hardware-configuration.nix
rename to hosts/abra/hardware-configuration.nix
index 1a7edb7..b844f0b 100644
--- a/hosts/xps/hardware-configuration.nix
+++ b/hosts/abra/hardware-configuration.nix
@@ -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
diff --git a/hosts/tito/configuration.nix b/hosts/tito/configuration.nix
deleted file mode 100644
index 7f10407..0000000
--- a/hosts/tito/configuration.nix
+++ /dev/null
@@ -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";
-}
diff --git a/hosts/tito/hardware-configuration.nix b/hosts/tito/hardware-configuration.nix
deleted file mode 100644
index 0ffe379..0000000
--- a/hosts/tito/hardware-configuration.nix
+++ /dev/null
@@ -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..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;
-}
diff --git a/hosts/xps/configuration.nix b/hosts/xps/configuration.nix
deleted file mode 100644
index 1efe118..0000000
--- a/hosts/xps/configuration.nix
+++ /dev/null
@@ -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?
-
-}
diff --git a/modules/common.nix b/modules/common.nix
deleted file mode 100644
index 3f33f34..0000000
--- a/modules/common.nix
+++ /dev/null
@@ -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";
- };
-}
diff --git a/modules/gnome.nix b/modules/gnome.nix
deleted file mode 100644
index a62d59c..0000000
--- a/modules/gnome.nix
+++ /dev/null
@@ -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;
-
-}
-
diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix
deleted file mode 100644
index 9c08bac..0000000
--- a/modules/hyprland/hyprland.nix
+++ /dev/null
@@ -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;
- };
-}
-
diff --git a/modules/nvidia.nix b/modules/nvidia.nix
deleted file mode 100644
index 5d8c4db..0000000
--- a/modules/nvidia.nix
+++ /dev/null
@@ -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"];
-}
diff --git a/modules/protonvpn.nix b/modules/protonvpn.nix
deleted file mode 100644
index 95ebf03..0000000
--- a/modules/protonvpn.nix
+++ /dev/null
@@ -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}
- '';
- };
- };
-}
diff --git a/rebuild.sh b/rebuild.sh
new file mode 100755
index 0000000..f8f2f00
--- /dev/null
+++ b/rebuild.sh
@@ -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
diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml
deleted file mode 100644
index f78bdba..0000000
--- a/secrets/secrets.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-protonvpn:
- norway_config: ENC[AES256_GCM,data:KqvjlPR1TVRUUvsE8jOADkNa03F6X5zEh7qp+0r2cb6rsrSelTLbtbvU1B9oSlYD5GBL6aK+6bQe5ZHqodVh9tKfp/74Vh7ua2b3diiaW8/kfP+gk+K28P4Yojum3xzYO/4Bt48Lry/jOSzwnV59Y4NEdt9F6t/YrHnMPS3vIGY+ub8uEn0ZsxKK70BgYTzOfNTtGv9dvv8F7sJin0Be6fzchux35we92c6K5uze5hn0vIsqFMzZ7N4QUlAFKz+bFYQ3dBwbC9ZAFTz2rIZHkmrHfHZJdGYqG/5Xen2IrZ8Hda7U3j7Q9k26XxcmUA6+HD/V2QcSOmNrdGOUT6bISd4TXh653ARBZnYAf/K+ruwtbYvtghI6N0li7zzJ4R6LqQfcPbaTtzjMYUbTEZ/IglzbH2rYvwhhVWfenO71VHzYiRMpQKshtm2x6iggpx9NOUV/U2Gum7UMk7I8lvpLFohnv7t4v2z381a1TrMphsi4yQYfCbVV+nnhuzp0JhOAlla8RaX0Eo5jZ4/VJvAsmLw8+gzs9gDbfUXOS4Nh/LqS8A6GvJwrzGvZk51KEYQST3RKyHU1MlSTgls4dYCecaPdZzcD9BP/H3qpOUaQTR+3TmdBjQ+9qs+vRNu8TyCwcnSlb/ybMpPkiizl4tpUd/fggUop+pKEXGS6ZhOd7h8NrhyCAXI/eULsuAi/Y2LaG5dAKDBbYByTc4f6iDquazrBpCSLsn8ALHZFiadZ/7u1yi4NVhAQatMmkSVgASvzaTlpxNEJukWqaNNKck4I3abghnysyiHmp9Hj5+gk2ckxktFa809+EhHVT9UAGP5YNdp+PNN5J23Insy129WvwQYQ1S1yJdI+5jt4mIFJYd68onRd9jFDsqPxowxbDCrBkFLhd1w48UqKscD3joQ9JJK85Wo29m1fOWM0jqNiT84dvRsVBQRp6VP96Xiy6CTqd6lMG2lRv+gJVshLAYfsU68aC0y5TtSqOqNrkxE9gb4UpBmF5Zz27HXZtC7PHABe1IUR+41j9RoXps5vCl9Jg4lE0DspAGKEEXw055XKo6iSGtHCxaV4dOz7aiQrGMNQT4zrlRD5z4b0ixg/KbWxhRBYPGVW4JzgpstvtSqL5yzGjduvs/9OludKFdvAKirCSI833l5ik1334Tm518IuKiTKZXJzgYJ4KrxA+5qCrUs7lND2fLvAUr10vPuq1XuwvsacW5bu6ut690SYRLsSWsiTQNEQjlvoQhh5XEM5YV+OcP/Aaqls1INra24hkKp4Ai2b5X8R5gZqyKzA2arDPzyN5Hbk4MxWBHnNs/Y60wTn3aHWR6JbtYCZ8IM8dpQalLtStguRmyLrZLbc4aqdC0HmURAxktapT2GhHOuo4M/PZcITT6gNQDoQk71SlDaItVkBx/4Jg3TG7rHc87KcAs2YTd6JcH+/sLsoZgu9DF8JP1Pp0UEU/cNAgv/AOOU75eFAOsc/tMUD2NLDMWNp+v6s6rhyNwaY1QTY9cAXyNL8YZri0Alpjzn68OoSrSC8BD8H/SnvyXNhtX7HleBYFMf4kOsFezFHOYb8iSZOY5LycLuH449vZS+jRbD6sMjErmvHTTL36yl1XGUEIk8VsqWsIOBGFjWTdev8DtNCOXHvwGqUaySnPvgylcCf0Unl+HTefW5cAGhSuH4x2GUehIkji8YJnkDErHSFBWI4LEp1VB197pbhGRE5ZDKXQ0kO0N7aYgcOe5iXMlO0SAAHQDGIl2Lp7SmLJdLZN1E/qyQGPEB03qici2Uu2YLn2L35fshnzne4qdivfNzh2GdK57dBU8QHHrr0op4CVw/xldqvHzljx+6pEs7ULDljYA8fYiBKiS9qSEzZxKfxbgYyS4OURHsJpDkNurQPguBAMr3+zTEEOymvbpScEQNYvmxTkzpliezBpEHcqmiONxJAnRMCn8kgqqsnOy7zjRgrx74dK2bJyM70T7Caj84OTUr+FlfqFiC9kBTjnKWZGa4Vxgve9KvZzVycc6EmlyXErMoeh/JyCtTugjBXlEVTcynuhxwP2T/1PfujPBu3y0tJX9EAI7nWXAqMFQAHICg2o9hh9t/ryQ7wH869pWhxK9iI0Dq3dezFPEl10SDJ/YGrMXtg6TgR2qIVvP0z0lCABbYayPze5CVVyenur7pl3hTRzmrW1ahdBReMTR7KBS3NL6p7yjbYEH+sFhwFwQ5xSUAa265AEhXw/1+iJ6u7xayrl0qtCLsm03B4SmjxZAPY/alYZtmZYTaT7ZNWjHXXF5zUUeI6378bKZpgyAWZYj9iV9OgZusyvHDJYrTbe0qLC+SS/WAqec7xNmGe6m7iVJENF1PmQuljQbBzhLr/ltlonKQcbQJDqYyCTQbyz5Kr59v1H7/xe10cldh/kHrGDlhmH0Tqgbxaj1XaxPas9WKcQFyhNrLRaAulWFfDSgbqapcTn3v+ClgNUaoUFq8ESzsHmQ/+sSaX7+RTspKG6L1piJUu44lTf1zRXGzVYe4gPa3fOZqf58ND64Ti3K780g+sLMG5fghLWO9snyGaxDFSaIZXAOac6uyNnCtFPBCy04GrXoGGeO5njdeN5RLLITdGDcAx2Xcce9ej6bfVJ7/u5DRPagqqEM4qQA0F1GsCG3b3WORomWjU/YRv9/tKY8CsGeCAccDS2bAY4s2PjqD4hjaiGdRRpCt29368C/OdtZ2epdQeVgj84kdq0lThmS42ez7vHlADUD06AzmXd9JELy7SVXWa5o/v6JUb5MJumWe8MJgpumSK5Uo/tanduS7SjBAytEhOzSaXHwNPmsFoHpjM/Tojoc/AmKrkKKecRe+g8P4PnB7kLex25Yn/xpS5yJ15FKOzDZ6rAmt/pbQldhOgYWBfj0Bon90H16vFUpfe6xPLiI7JmKJ+YptumzI3zPBNP1KFS32rUdFa5D6cJYjdCY6LiNXoyo1+vuIy/5zhipLqG6qyaUxlpf1xGnOhGaw2kL9NwVeU1gPTI6yYMl1zsbCl1HCUUAgilOIICfLnJZhWl7LpMqssf8Gq7D7S/j+kumk6SrKt3EdCrg2MNsRgGkxQswRofFUpsPQvS/BVu2V8FFzO1OQZTG/KM3bBatrLLhgy3KyNoEZQGxCef4/rQYl7i4EQvrQsL4Afv59Wqur4jgIf/it1CDE+l2q25fY2PdzV9NUjpNlDBjVCgZbWYsPBwwIHfMWFWEWGjVuTDXpW/hFcEG7FtqxyKOb1l6niJuPuARrCd70r19SFtpfmi/x7HCkN1QanE7Hfvu6ajTNGwlKTjWdM3HEnAhxUGSl9RIaaE3tDb0lenzpjVD8GTZpy/X+eV8DIHUDBaxoJP1kUs9TjsUJetswNyn++N3vlKB8ex+wa7pfUnI9eg32Etzl9cyADI/6GfafInDLu9hKE5bsFUZMLDsIvGJ3ODYwfDxuZnl3WiRm/gNDHH9GES73dYzunDXUYX2N3ymhRXFcVZXfjEAHNYzrTbWxMsjQTOahOM/zivf8AjZS2GMTRdiUMHKs6f1yiJ7YEs/WduSl2sTwENN1edFcqmwiM3cMgGPSgWajo+hln0C6jwPbGf7HPfEKxvAW3/4pyRBViLuI6W2es9kGMezreKkrWNivfQqeiR+dilllpAPY3wnMIEeMMae9+u6dnRz6RtwXtTeXTpHbmcYbauByW8TjLRzqV7K3u3zqQiRN6y/2GPSELrMvFo3I4eMWnOM2Of5J1f8gmiuLqW5yAKZZdG3ERSQd0a0to+uWe/dDnNefA7pqrVgDo7+C+S8OpaSuOCMEGBE81E7DBiCKKx8ftv56Ftg/yHuySIJiotJyDPE7bTQ1peK8sDgU/L9//zal3cfTolg4CFrYRlZ4ZNfa/Z14NGQcCGWLpPDE+mOky0le2yjO6JrLMCjOf70tKtfq/GSpY00sAsB9dl8tzzQlHTluYgiAC8IWFOzPUa8Zop3gxoWy0UhL22RtBYdp/R6ZaUIB+QTSCaw2u3WqsanpMj6c5BvccqoAdEcMoxDBK0lSFkumj2L5SbmVwct+V2Kkxw1q5UuTvRqk/mXWDN2L4zfwJ/u2r4/u0JIi/woa7+JRnR5G3sEqD063caJUNI+oMVT53f2mSrSNCFURdq9vQ7XOt1JRx5lfFBhVfs8JvGTUDVkmyqa1KXU50v5QjYvXaZ/dhKv6lj9U4pE7c9jLYXInKbu/IYXrz25/KDADAT9qQIfOu5INlTV9q3RpJdwJGcz2WfW0/VgrBbTgfnJ6WjGfhkE7rE3ZWFo2yY3BS5za3F+3YgbbowNNes0QazEgkSHi9xmaHi8GJmQbuD2my0QuMR/Wq4Oy7Z1ZLQhYIamdP81fKsGmr9UiazVZ2anDftoAZg/gDGea1ppdsiaGdFkOnb4JI23Pvi/h5dnPv14p4fh4Iaab5Ed+yIabEF2qfRBim4MDImxWlIcRrPAKPPTvk3erQX38SGu3IpgK+k2gIPIyzptMx3gSjF9P7Wrh5EVnGyDObWXuZMTfuLizYI971719YmPlYevC+t/s2SfQSJO29RnlvHyvlxK7J6mmJmdvPen/y9XOFKB0RoXaykD0Aw8xfYId2GxhCpDzrwy/zowPnKgSoIX7EHzs5D9md6d7KEJDy/CbdJ48SwtdT9PnPYaHJX4CeHJwzOWRnNuhnIBRvHka6Jw0vrUkSDnoz+xyYhl5DboxziuFkAO3JHSvFROXcLVGu1TYzgrx56fibR4Xo6i5zLSZUxuICH/glacLKaWh7SI3Hbn4jcu+4iUp5NafQnyCToHqors0xoTFKfWRS+TWimZ0pKzjijBTXUY0nTEZGTVFGmXyTqDbcQt1iQ4xSag42XSUW73o82s8bq4KQ2LxC0aSRH0T86/KL95l+6mU93gkD6P4+7SD3wFP0Drl1TdVTySgyOinbOG80+v5YAN3Rypy6Hm4o5wjdlaOt8FtK+GomC0/BrZ2IiwW9iBMwa520g8AC4DfkCDA6D5dXWvPry21ypGSyWMdLIRRWQB4AYoQXUoneSCsdMf/c8C6jBJwjpcAf6GQmeLiTw72x+s/o7p9CA8sk9f72YXp2FJPvxELuRUscj6Yi/DJyGMbBkqQDtGdImbR4RPwWAk19kb6tnRYTQoVhvQ8+wpEcBWJvXFxJms5UjHusHgSQSpPJPCNG0DFP1ymT8DLDbrpfQZyrs3tU8YodA9dcjLY29W1SrGGLRKfFh6qmVpNZhC+XHv8RpEiAn9FGV/ihJvI4s9LlAiVnnfMnbwo7C8TOLl21OR5DoIKs7BTSD8BcpuUv/nHnNFyTwia/6pqhDLn9m7nbOmqhCy/SHWMapOf2zhm3vqXFPlC3X3nhw7IM1Euu5zoN/91Lqi3u1Bvt4WFEGsIDC5n0uHwTEH1//MfeEP9OQsLW6ldyIzv44jHii96oChMEXxdWw/drs+Cxw0AbJENAtjmbrdUBBMbhtsTXm0Ja3t+g2dvYWDh4tuRx0nzeF5C1Rnhlk3LPkX2j6fnNQKACA/aUkvm49dDw9+xQu+SXrXL1Xm2UGq/d2tkXO8UYFDoXpL9cy1HzFJx7zOiJbhnX434EjGMEuvdQh2Wv24RnqszvncC4bWIW85uvcpfTMd1iCM7IdFNez2ZI7IzXfC9tk51kdKPZWeKvu+3faUZ/r1FUbvBsvF5TbSRSHhR28eZHXuOchTBEB2rmYD5at+pfyM8Ojan6lPJLFfCPi470hDCs7u2SzI+57/3HA/XYoquMD4y0q61zZnPKsLtDtNRXhpg/ZzVgJslzH7QeKT6FuqUyPixU6K6QOSOwv/VLqQjjlSbeGVEfnYwE+ojIbAR0ZtoyQXq4952s7Xx0aieqnBeqsus+lNchkQjOzdDWVO3SD8+5vx8FqpL+E9IxC+xM97Edo0ths2lJKGfAKrn437OHoJ7TJMzQ68/q5fXM3W7mnaV2TLUa+i0NwqsBp6YUrXehnbtK2rw1zsecMwjBdZ35XcubkQtgELMEsdWkdbzo0r3oD+H9DZsGWaRTIrl15LEStHnIasHFjpdjoQg3tqXueLLdNohLdpCSOmuaQ0l4/qvv39G7LDgLe8WUhxVKC3VA8ferzGdT7igf1090BUhT3vond562O4f33CO15Ot+oidH3w/aYcEMpRH3nN2Nmr6+uaKoorhGIh8CflYonuW4dZFTv2jtwXhFTlJ8tG4EI4RDDZcrLn/k9qUCa5JaXzXJFQGpagFhRUs9LQAUDAd/0L3SgiKWokPsVBTp8szInrfNvGOQ2adJTLZeSeDIaPoPKF1nwS91xWDDBQoUilNyoXXbIyduHXGyFpnE2MEeH7uXFHSXLD/AjvlTfntFTl2NWWjkAHL8L7tj4VwcoRurZDFeZpxkUsxqY+2V5DvC+P1ESbEjpCZCWjU4GpiVmG+pi4wos+Fl6C6xpQFo0zLhCqfFyrojxtJfHIvSnxwZ6lBfxqYpjCr+aTflD4tSCJE2rq0SG2lemqDTi8DiCn/fj3Nr636amhzZ+wwnC3XD2Q==,iv:v3/uGtvd1m7p/CDpqT7Ygusb9wF8A3kPqC/oljDBKSM=,tag:Fr6w63m+n0CM+rvV7VpYXg==,type:str]
- us_config: ENC[AES256_GCM,data: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,iv:fmcUNirnR62KW70z/HCLedGo2774O+72lwy4hgYCZN8=,tag:ksIOzGj1m4WhubzddeKgiA==,type:str]
- auth-user-pass: ENC[AES256_GCM,data:w1fjGadsiXlwBUcEIz2OVnMnfdOR9I5CcJu1kBoBYsGWBAib1zY9+nLhs9Pf4Iwou2SgRvo=,iv:92hpesCj74WyTKGJ6sNAdbuJrmwmq508HVJHevw1hxY=,tag:wn5NhAIktjJIQ94z6cuyIg==,type:str]
-sops:
- kms: []
- gcp_kms: []
- azure_kv: []
- hc_vault: []
- age:
- - recipient: age18axr5n678k0n0vy763wau57fmtck3q03qgcz3r5kq9nkpkwgye4q5swrgq
- enc: |
- -----BEGIN AGE ENCRYPTED FILE-----
- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzdkJuOUNxamZLQU8zRXNh
- S3N4OFF2ZlZ4dU1NeHg1YjEyV3NZWU9SOUU4CjhwSHZLSWwyUE96cTJ6SVkvVHFJ
- REdrdkQ1d0VpYTFvREJLQXNUMzNKK1EKLS0tIDNGcDJUTUJOYzQ0cUY5Rm5adHVZ
- U1IxTXlqN0F1Z1psUkdQNkpERmtEdFUKnm4kcuC16TAmqSZNAtDrqEGCLJfR+3qL
- 4YitkQl2F5JBTMvn+9GZuAyp9SnOJaufGPVnJc9Lbhir9jS7aRjKgQ==
- -----END AGE ENCRYPTED FILE-----
- lastmodified: "2025-01-03T05:18:58Z"
- mac: ENC[AES256_GCM,data:ORSusXznCxIPNLo30my5D50d1Mh6oQdFGi2sQquO/E0jQ84CPwQIkfeDmzlIGAUsVrAHCXvBHViIqtMG/O2PICiSfDU4GIxwIO99Gaebwn8fbASQPhkfs4JMv7i5UqCCw53iqyE/MZSSQfpWO128yj82vSFKPdPLdf6o4t+0eo0=,iv:AiXNlfp6fjrhsWeqOdZOXmfInLXBlD5WHbMzRvBgKGk=,tag:iAdHLuRzjU/5G6k7pFf9YA==,type:str]
- pgp: []
- unencrypted_suffix: _unencrypted
- version: 3.8.1
diff --git a/system/boot.nix b/system/boot.nix
new file mode 100644
index 0000000..438eb08
--- /dev/null
+++ b/system/boot.nix
@@ -0,0 +1,7 @@
+{ config, pkgs, ... }:
+
+{
+ # Bootloader.
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+}
diff --git a/system/default.nix b/system/default.nix
new file mode 100644
index 0000000..3a6a207
--- /dev/null
+++ b/system/default.nix
@@ -0,0 +1,14 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ./boot.nix
+ ./networking.nix
+ ./locale.nix
+ ./services.nix
+ ./packages.nix
+ ./users.nix
+ ./nix.nix
+ ./programs.nix
+ ];
+}
diff --git a/system/locale.nix b/system/locale.nix
new file mode 100644
index 0000000..019f85a
--- /dev/null
+++ b/system/locale.nix
@@ -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";
+ };
+}
diff --git a/system/networking.nix b/system/networking.nix
new file mode 100644
index 0000000..65876e0
--- /dev/null
+++ b/system/networking.nix
@@ -0,0 +1,6 @@
+{ config, pkgs, ... }:
+
+{
+ networking.hostName = "abra"; # Define your hostname.
+ networking.networkmanager.enable = true;
+}
diff --git a/system/nix.nix b/system/nix.nix
new file mode 100644
index 0000000..121c0cb
--- /dev/null
+++ b/system/nix.nix
@@ -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?
+}
diff --git a/system/packages.nix b/system/packages.nix
new file mode 100644
index 0000000..88e0ed2
--- /dev/null
+++ b/system/packages.nix
@@ -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" ];
+ };
+ };
+ };
+}
diff --git a/system/programs.nix b/system/programs.nix
new file mode 100644
index 0000000..f769e3b
--- /dev/null
+++ b/system/programs.nix
@@ -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;
+}
diff --git a/system/services-gdm.nix b/system/services-gdm.nix
new file mode 100644
index 0000000..e2f043f
--- /dev/null
+++ b/system/services-gdm.nix
@@ -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";
+ };
+}
diff --git a/system/services.nix b/system/services.nix
new file mode 100644
index 0000000..d98a1a7
--- /dev/null
+++ b/system/services.nix
@@ -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;
+ };
+}
diff --git a/system/users.nix b/system/users.nix
new file mode 100644
index 0000000..1196d68
--- /dev/null
+++ b/system/users.nix
@@ -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; [
+ ];
+ };
+}