commit 7b585418f676dd578a25eb4904516a3ff27e3a9c Author: joy Date: Wed Jun 5 20:52:52 2024 +0200 lol diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..ffb92e8 --- /dev/null +++ b/flake.lock @@ -0,0 +1,818 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1708890466, + "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "665b3c6748534eb766c777298721cece9453fdae", + "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-foot": { + "flake": false, + "locked": { + "lastModified": 1696725948, + "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", + "owner": "tinted-theming", + "repo": "base16-foot", + "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-foot", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1696727917, + "narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-kitty": { + "flake": false, + "locked": { + "lastModified": 1665001328, + "narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=", + "owner": "kdrag0n", + "repo": "base16-kitty", + "rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805", + "type": "github" + }, + "original": { + "owner": "kdrag0n", + "repo": "base16-kitty", + "type": "github" + } + }, + "base16-schemes": { + "flake": false, + "locked": { + "lastModified": 1696158499, + "narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=", + "owner": "tinted-theming", + "repo": "base16-schemes", + "rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-schemes", + "type": "github" + } + }, + "base16-tmux": { + "flake": false, + "locked": { + "lastModified": 1696725902, + "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", + "owner": "tinted-theming", + "repo": "base16-tmux", + "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-tmux", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1663659192, + "narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=", + "owner": "chriskempson", + "repo": "base16-vim", + "rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d", + "type": "github" + }, + "original": { + "owner": "chriskempson", + "repo": "base16-vim", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "owner": "numtide", + "repo": "devshell", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "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-compat_3": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-root": { + "locked": { + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1689549921, + "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "pre-commit-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": 1713702291, + "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "46.1", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715930644, + "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716457508, + "narHash": "sha256-ZxzffLuWRyuMrkVVq7wastNUqeO0HJL9xqfY1QsYaqo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "850cb322046ef1a268449cf1ceda5fd24d930b05", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714981474, + "narHash": "sha256-b3/U21CJjCjJKmA9WqUbZGZgCvospO3ArOUTgJugkOY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "6ebe7be2e67be7b9b54d61ce5704f6fb466c536f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1715791817, + "narHash": "sha256-J069Uhv/gCMFLX1dSh2f+9ZTM09r1Nv3oUfocCnWKow=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "7c3aa03dffb53921e583ade3d4ae3f487e390e7e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1716063601, + "narHash": "sha256-lH2CLdRQFtbQVauhLFDbPWTGmj7LgblMg2dq9thd0Zc=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "f8857e6072bd85b95393499688872aaf7f088b5b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1715791527, + "narHash": "sha256-HhQ4zvGHrRjR63ltySSeg+x+0jb0lepiutWdnFhLRoo=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "969cb076e5b76f2e823aeca1937a3e1f159812ee", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1715879663, + "narHash": "sha256-/DwglRvj4XF4ECdNtrCIbthleszAZBwOiXG5A6r0K/c=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "f5181a068c1b06f2db51f6222e50a0c665a2b0c3", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "nix-colors": { + "inputs": { + "base16-schemes": "base16-schemes", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1707825078, + "narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=", + "owner": "misterio77", + "repo": "nix-colors", + "rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1", + "type": "github" + }, + "original": { + "owner": "misterio77", + "repo": "nix-colors", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716511055, + "narHash": "sha256-5Fe/DGgvMhPEMl9VdVxv3zvwRcwNDmW5eRJ0gk72w7U=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "0bea8222f6e83247dd13b055d83e64bce02ee532", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1715787315, + "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1697935651, + "narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1714912032, + "narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ee4a6e0f566fe5ec79968c57a9c2c3c25f2cf41d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "flake-root": "flake-root", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1716733566, + "narHash": "sha256-Zu0fn7bC+M/LwOOkR1RmeoOuCIbvvFwuqTldVBVe4WY=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "8212bf1cd2d2dfe6ba521dd8c65a13b67e562d1a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "hyprland": "hyprland", + "nix-colors": "nix-colors", + "nixpkgs": "nixpkgs_2", + "nixvim": "nixvim", + "stylix": "stylix", + "suyu": "suyu" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-foot": "base16-foot", + "base16-helix": "base16-helix", + "base16-kitty": "base16-kitty", + "base16-tmux": "base16-tmux", + "base16-vim": "base16-vim", + "flake-compat": "flake-compat_3", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1716456264, + "narHash": "sha256-s9Tyj5pEivl/AsvrpkUkfR1Iu3zHfXpviPfe4HbPJ5I=", + "owner": "danth", + "repo": "stylix", + "rev": "290c8aef476ce98fff9cefc059284429d561a085", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "suyu": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1714727263, + "narHash": "sha256-R+x0UZrBedeR6w+h44JaGwuQJrut5VVD2yjNgYNt9f4=", + "ref": "refs/heads/master", + "rev": "4013bb63ca2217eab5c4a25e266d68d908b96791", + "revCount": 15, + "type": "git", + "url": "https://git.suyu.dev/suyu/nix-flake" + }, + "original": { + "type": "git", + "url": "https://git.suyu.dev/suyu/nix-flake" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "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" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715940852, + "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1715788457, + "narHash": "sha256-32HOkjSIyANphV0p5gIwP4ONU/CcinhwOyVFB+tL/d0=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "af7c87a32f5d67eb2ada908a6a700f4e74831943", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b0a7dc7 --- /dev/null +++ b/flake.nix @@ -0,0 +1,47 @@ +{ + description = "Nixos config flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + hyprland.url = "github:hyprwm/Hyprland"; + stylix.url = "github:danth/stylix"; + nix-colors.url = "github:misterio77/nix-colors"; + suyu.url = "git+https://git.suyu.dev/suyu/nix-flake"; + suyu.inputs.nixpkgs.follows = "nixpkgs"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + }; + + outputs = { nixpkgs, home-manager,stylix, ... }@inputs: { + nixosConfigurations.pc = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + system = "x86_64-linux"; + modules = [ + ./hosts/pc + # inputs.stylix.nixosModules.stylix + ]; + }; + nixosConfigurations.laptop = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./hosts/laptop + ]; + }; + nixosConfigurations.craptop = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./hosts/craptop + ]; + }; + }; +} + diff --git a/home/alacritty/default.nix b/home/alacritty/default.nix new file mode 100644 index 0000000..35c8e6d --- /dev/null +++ b/home/alacritty/default.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs, ... }: + +{ + programs.alacritty = { + enable = true; + settings = { + # Font settings + font = { + size = 17.5; + }; + + # Color scheme + colors = { + primary = { + background = "0x282828"; + foreground = "0xebdbb2"; + }; + normal = { + black = "0x665c54"; + blue = "0x458588"; + cyan = "0x689d6a"; + green = "0x98971a"; + magenta = "0xb16286"; + red = "0xcc241d"; + white = "0xa89984"; + yellow = "0xd79921"; + }; + bright = { + black = "0x7c6f64"; + blue = "0x83a598"; + cyan = "0x8ec07c"; + green = "0xb8bb26"; + magenta = "0xd3869b"; + red = "0xfb4934"; + white = "0xbdae93"; + yellow = "0xfabd2f"; + }; + }; + + # Cursor settings + cursor = { + style = "Block"; + vi_mode_style = "Block"; + }; + + # Window padding + window = { + padding = { + x = 5; + y = 5; + }; + }; + }; + }; +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..f452336 --- /dev/null +++ b/home/default.nix @@ -0,0 +1,24 @@ +{ config, pkgs, inputs, ... }: + +{ + colorScheme = inputs.nix-colors.colorSchemes.gruvbox-dark-medium; + + imports = [ + ./waybar + ./alacritty + ./hyprland + ./zsh + ./rofi + ./gtk + inputs.nix-colors.homeManagerModules.default + ]; + home.username = "joy"; + home.homeDirectory = "/home/joy"; + home.stateVersion = "23.11"; + programs.home-manager.enable = true; + home.sessionVariables = { + EDITOR = "vim"; + }; + + +} diff --git a/home/gtk/default.nix b/home/gtk/default.nix new file mode 100644 index 0000000..4a34821 --- /dev/null +++ b/home/gtk/default.nix @@ -0,0 +1,117 @@ +{ + pkgs, + config, + ... +}: let + gruvboxPlus = import ./gruvbox-plus.nix {inherit pkgs;}; +in let + cssContent = with config.colorScheme.colors; '' + @define-color accent_color #${base0D}; + @define-color accent_bg_color mix(#${base0D}, #${base00},0.3); + @define-color accent_fg_color #${base00}; + @define-color destructive_color #${base0C}; + @define-color destructive_bg_color mix(#${base0C}, #${base00},0.3); + @define-color destructive_fg_color #${base02}; + @define-color success_color #${base0B}; + @define-color success_bg_color mix(#${base0B}, black,0.6); + @define-color success_fg_color #${base02}; + @define-color warning_color #${base0A}; + @define-color warning_bg_color mix(#${base0A}, black,0.6); + @define-color warning_fg_color rgba(0, 0, 0, 0.8); + @define-color error_color #${base08}; + @define-color error_bg_color mix(#${base0C}, #${base00},0.3); + @define-color error_fg_color #${base02}; + @define-color window_bg_color #${base00}; + @define-color window_fg_color #${base04}; + @define-color view_bg_color #${base01}; + @define-color view_fg_color #${base04}; + @define-color headerbar_bg_color mix(#${base00},black,0.2); + @define-color headerbar_fg_color #${base04}; + @define-color headerbar_border_color #${base02}; + @define-color headerbar_backdrop_color @window_bg_color; + @define-color headerbar_shade_color rgba(0, 0, 0, 0.36); + @define-color card_bg_color rgba(255, 255, 255, 0.08); + @define-color card_fg_color #${base04}; + @define-color card_shade_color rgba(0, 0, 0, 0.36); + @define-color dialog_bg_color #${base02}; + @define-color dialog_fg_color #${base04}; + @define-color popover_bg_color #${base02}; + @define-color popover_fg_color #${base04}; + @define-color shade_color rgba(0,0,0,0.36); + @define-color scrollbar_outline_color rgba(0,0,0,0.5); + @define-color blue_1 #${base0D}; + @define-color blue_2 #${base0D}; + @define-color blue_3 #${base0D}; + @define-color blue_4 #${base0D}; + @define-color blue_5 #${base0D}; + @define-color green_1 #${base0B}; + @define-color green_2 #${base0B}; + @define-color green_3 #${base0B}; + @define-color green_4 #${base0B}; + @define-color green_5 #${base0B}; + @define-color yellow_1 #${base0A}; + @define-color yellow_2 #${base0A}; + @define-color yellow_3 #${base0A}; + @define-color yellow_4 #${base0A}; + @define-color yellow_5 #${base0A}; + @define-color orange_1 #${base09}; + @define-color orange_2 #${base09}; + @define-color orange_3 #${base09}; + @define-color orange_4 #${base09}; + @define-color orange_5 #${base09}; + @define-color red_1 #${base08}; + @define-color red_2 #${base08}; + @define-color red_3 #${base08}; + @define-color red_4 #${base08}; + @define-color red_5 #${base08}; + @define-color purple_1 #${base0E}; + @define-color purple_2 #${base0E}; + @define-color purple_3 #${base0E}; + @define-color purple_4 #${base0E}; + @define-color purple_5 #${base0E}; + @define-color brown_1 #${base0F}; + @define-color brown_2 #${base0F}; + @define-color brown_3 #${base0F}; + @define-color brown_4 #${base0F}; + @define-color brown_5 #${base0F}; + @define-color light_1 #${base02}; + @define-color light_2 #f6f5f4; + @define-color light_3 #deddda; + @define-color light_4 #c0bfbc; + @define-color light_5 #9a9996; + @define-color dark_1 mix(#${base00},white,0.5); + @define-color dark_2 mix(#${base00},white,0.2); + @define-color dark_3 #${base00}; + @define-color dark_4 mix(#${base00},black,0.2); + @define-color dark_5 mix(#${base00},black,0.4); + ''; +in { + home.file = { + ".local/share/icons/GruvboxPlus".source = "${gruvboxPlus}"; + }; + + home.pointerCursor.name = "Bibata-Modern-Ice"; + home.pointerCursor.package = pkgs.bibata-cursors; + + gtk.enable = true; + + gtk.theme.package = pkgs.adw-gtk3; + gtk.theme.name = "adw-gtk3"; + + gtk.cursorTheme.package = pkgs.bibata-cursors; + gtk.cursorTheme.name = "Bibata-Modern-Ice"; + + gtk.iconTheme.package = gruvboxPlus; + gtk.iconTheme.name = "GruvboxPlus"; + + xdg.configFile."gtk-4.0/gtk.css" = { + text = cssContent; + }; + + xdg.configFile."gtk-3.0/gtk.css" = { + text = cssContent; + }; + qt.enable = true; + qt.platformTheme.name= "gtk3"; + qt.style.name = "Gruvbox"; + } diff --git a/home/gtk/gruvbox-plus.nix b/home/gtk/gruvbox-plus.nix new file mode 100644 index 0000000..d0a69e6 --- /dev/null +++ b/home/gtk/gruvbox-plus.nix @@ -0,0 +1,18 @@ +{pkgs}: let + link = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v3.1/gruvbox-plus-icon-pack-3.1.zip"; +in + pkgs.stdenv.mkDerivation { + name = "gruvbox-plus"; + + src = pkgs.fetchurl { + url = link; + sha256 = "sha256-i/AzhYz/ACeXsG5j0kDVfvfA4TwxA3KZJTPwCO4BKmc="; + }; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out + ${pkgs.unzip}/bin/unzip $src -d $out/ + ''; + } diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix new file mode 100644 index 0000000..8fb99af --- /dev/null +++ b/home/hyprland/default.nix @@ -0,0 +1,110 @@ +{ config, lib, pkgs, ... }: +{ + home.packages = with pkgs; [ + rofi-wayland + pavucontrol + swww + wl-clipboard + lxqt.lxqt-policykit + grim + slurp + swappy + hyprpicker + emote + ]; + + wayland.windowManager.hyprland.enable = true; + + wayland.windowManager.hyprland.settings = { + monitor = "DP-1,2560x1440@165.00Hz,0x0,1,bitdepth,10"; + + env = [ + "XCURSOR_THEME = Bibata-Modern-Ice " + "XCURSOR_SIZE = 24 " + "HYPRCURSOR_THEME = Bibata-Modern-Ice" + "HYPRCURSOR_SIZE = 24" + ]; + + exec-once = [ + "lxqt-policykit-agent &" + "swww init &" + "swww img ~/nix/modules/stylix/image.png &" + "waybar &" + ]; + + "$mod" = "SUPER"; + + bind = [ + "$mod, B, exec, emote &" + "$mod, Z, exec, grim - | swappy -f -" + "$mod, D, exec, prismlauncher -l minecraft" + "$mod, S, exec, brave" + "$mod, A, exec, rofi -show drun" + "$mod, TAB, exec, alacritty" + "$mod, A, exec, rofi -show drun" + "$mod, E, exec, nemo &" + "$mod, X, exec, keepassxc" + "$mod, F, exec, freetube" + "$mod, C, exec, hyprpicker -a" + "$mod, Q, killactive" + "$mod, M, exit, hyprland" + "$mod, W, togglefloating" + "$mod, U, exec, systemctl suspend" + "$mod, L, exec, amixer -q sset Master 5%+" + "$mod, K, exec, amixer -q sset Master 5%-" + "$mod, Return, fullscreen" + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod+Shift, 1, movetoworkspace, 1" + "$mod+Shift, 2, movetoworkspace, 2" + "$mod+Shift, 3, movetoworkspace, 3" + "$mod+Shift, 4, movetoworkspace, 4" + "$mod+Shift, 5, movetoworkspace, 5" + "$mod+Shift, 6, movetoworkspace, 6" + "$mod+Shift, 7, movetoworkspace, 7" + "$mod+Shift, 8, movetoworkspace, 8" + "$mod+Shift, 9, movetoworkspace, 9" + "$mod+Shift, 0, movetoworkspace, 10" + ]; + + bindm= [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + general = { + gaps_in = 3; + gaps_out = 5; + border_size = 0; + # allow_tearing = false; + }; + + misc ={ + disable_hyprland_logo = true; + disable_splash_rendering = true; + }; + + decoration = { + rounding = 5; + }; + + input = { + kb_layout = "us,de"; + kb_variant = ",qwerty"; + kb_options = "grp:alt_shift_toggle"; + }; + }; +} + diff --git a/home/rofi/default.nix b/home/rofi/default.nix new file mode 100644 index 0000000..b395191 --- /dev/null +++ b/home/rofi/default.nix @@ -0,0 +1,22 @@ +{ pkgs, config, lib, ... }: +{ + + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + theme = "~/nix/home/rofi/gruvbox-material.rasi"; + extraConfig = { + modi = "drun"; + icon-theme = "Oranchelo"; + show-icons = true; + terminal = "alacritty"; + drun-display-format = "{icon} {name}"; + location = 0; + disable-history = false; + hide-scrollbar = true; + display-drun = "  Apps "; + display-network = " 󰤨 Network"; + sidebar-mode = true; + }; +}; +} diff --git a/home/rofi/gruvbox-material.rasi b/home/rofi/gruvbox-material.rasi new file mode 100644 index 0000000..f75bc2c --- /dev/null +++ b/home/rofi/gruvbox-material.rasi @@ -0,0 +1,149 @@ +/** + * Gruvbox rofi theme + * + * Color palette imported from https://github.com/sainnhe/gruvbox-material + * + */ + +* { + gruv0: #282828; + gruv1: #32302f; + gruv2: #45403d; + gruv3: #5a524c; + + gruv4: #fbf1c7; + gruv5: #f4e8be; + gruv6: #eee0b7; + + gruv7: #a89984; + gruv8: #928374; + gruv9: #7c6f64; + gruv10: #504945; + red: #ea6962; + + orange: #e78a4e; + yellow: #d8a657; + aqua: #89b482; + purple: #d3869b; + + reddark: #c14a4a; + yellowdark: #b47109; + + foreground: @gruv9; + background-color: transparent; + + highlight: underline bold #eee0b7; + + transparent: rgba(46,52,64,0); + +} + +window { + location: center; + anchor: center; + border-radius: 10px; + height: 560px; + width: 600px; + + background-color: @transparent; + spacing: 0; + children: [mainbox]; + orientation: horizontal; +} + +mainbox { + spacing: 0; + children: [ inputbar, message, listview ]; +} + +message { + padding: 10px; + border: 0px 2px 2px 2px; + border-color: @gruv0; + background-color: @gruv7; +} + +inputbar { + color: @gruv6; + padding: 14px; + background-color: @gruv0; + border-color: @gruv0; + + border: 1px; + border-radius: 10px 10px 0px 0px; +} + +entry, prompt, case-indicator { + text-font: inherit; + text-color: inherit; +} + +prompt { + margin: 0px 1em 0em 0em ; +} + +listview { + padding: 8px; + border-radius: 0px 0px 10px 10px; + border: 2px 2px 2px 2px; + border-color: @gruv0; + background-color: @gruv0; + dynamic: false; +} + +element { + padding: 5px; + vertical-align: 0.5; + border-radius: 10px; + color: @foreground; + text-color: @gruv6; + background-color: @gruv1; +} + +element.normal.active { + background-color: @yellow; +} + +element.normal.urgent { + background-color: @reddark; +} + +element.selected.normal { + background-color: @gruv7; + text-color: @gruv0; +} + +element.selected.active { + background-color: @yellowdark; +} + +element.selected.urgent { + background-color: @red; +} + +element.alternate.normal { + background-color: @transparent; +} + +element-text, element-icon { + size: 3ch; + margin: 0 10 0 0; + vertical-align: 0.5; + background-color: inherit; + text-color: @gruv6; +} + +button { + padding: 6px; + color: @foreground; + horizontal-align: 0.5; + + border: 2px 0px 2px 2px; + border-radius: 10px; + border-color: @foreground; +} + +button.selected.normal { + border: 2px 0px 2px 2px; + border-color: @foreground; +} diff --git a/home/waybar/default.nix b/home/waybar/default.nix new file mode 100644 index 0000000..ceb6137 --- /dev/null +++ b/home/waybar/default.nix @@ -0,0 +1,220 @@ +{ + pkgs, + config, + ... +}: let + workspaces = { + }; + + mainWaybarConfig = { + mod = "dock"; + layer = "top"; + gtk-layer-shell = true; + height = 14; + position = "top"; + + modules-left = ["hyprland/workspaces"]; + modules-center = ["clock"]; + modules-right = [ + "pulseaudio" + "tray" + ]; + + "wlr/workspaces" = workspaces; + "hyprland/workspaces" = workspaces; + + clock = { + actions = { + on-click-backward = "tz_down"; + on-click-forward = "tz_up"; + on-click-right = "mode"; + on-scroll-down = "shift_down"; + on-scroll-up = "shift_up"; + }; + }; + + pulseaudio = { + format = "{icon} {volume}%"; + on-click = "pavucontrol"; + format-icons = { + default = ["" "" ""]; + }; + }; + + tray = { + icon-size = 15; + spacing = 5; + }; + }; + css = '' + +/* ----------------------------------------------------- + * General + * ----------------------------------------------------- */ +* { + font-size: 16px; + font-family: Ubuntu Nerd Font, Font Awesome, sans-serif; + font-weight: bold; +} + +window#waybar { + background-color: rgba(26,27,38,0.4); + border-bottom: 1px solid rgba(26,27,38,0); + border-radius: 0px; + color: #f8f8f2; +} + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ +#workspaces { + background: #fb4934; + margin: 5px 3px 5px 12px; + padding: 0px 1px; + border-radius: 15px; + border: 0px; + font-style: normal; + color: #15161e; +} + +#workspaces button { + padding: 0px 5px; + margin: 4px 3px; + border-radius: 15px; + border: 0px; + color: #15161e; + background-color: #fb4934; + opacity: 0.5; + transition: all 0.3s ease-in-out; +} + +#workspaces button.active { + color: #15161e; + background: #fb4934; + border-radius: 15px; + min-width: 40px; + transition: all 0.3s ease-in-out; + opacity: 1.0; +} + +#workspaces button:hover { + color: #15161e; + background: #fb4934; + border-radius: 15px; + opacity: 1.0; +} + + +/* ----------------------------------------------------- + * Tooltips + * ----------------------------------------------------- */ +tooltip { + background: #282828; + border: 1px solid #282828; + border-radius: 10px; +} + +tooltip label { + color: #15161e; +} + +/* ----------------------------------------------------- + * Window + * ----------------------------------------------------- */ +#window { + color: #15161e; + background: #8ec07c; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#custom-packages { + color: #15161e; + background: #f7768e; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#memory { + color: #15161e; + background: #e0af68; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} +#clock { + color: #15161e; + background: #fabd2f; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#cpu { + color: #15161e; + background: #7dcfff; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#disk { + color: #15161e; + background: #9ece6a; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#battery { + color: #15161e; + background: #ff79c6; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#network { + color: #15161e; + background: #f1fa8c; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#tray { + color: #15161e; + background: #8EC07C; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#pulseaudio { + color: #15161e; + background: #83a598; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} + +#custom-notification { + color: #15161e; + background: #6272a4; + border-radius: 15px; + margin: 5px; + padding: 2px 10px; +} +''; +in { + programs.waybar = { + enable = true; + package = pkgs.waybar.overrideAttrs (oldAttrs: { + mesonFlags = oldAttrs.mesonFlags ++ ["-Dexperimental=true"]; + }); + style = css; + settings = {mainBar = mainWaybarConfig;}; + }; +} diff --git a/home/zsh/default.nix b/home/zsh/default.nix new file mode 100644 index 0000000..b827793 --- /dev/null +++ b/home/zsh/default.nix @@ -0,0 +1,43 @@ +{ config, pkgs, ...} : + +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + shellAliases = { + ls = "ls -a"; + sp = "sudo nixos-rebuild switch --flake ~/nix/#pc"; + sl = "sudo nixos-rebuild switch --flake ~/nix/#laptop"; + sc = "sudo nixos-rebuild switch --flake ~/nix/#craptop"; + up = "sudo nix flake update ~/nix"; + fr = "sudo systemctl reboot --firmware"; + hy = "vim ~/nix/home/hyprland/default.nix"; + eh = "vim ~/nix/home/default.nix"; + gtk = "vim ~/nix/home/gtk/default.nix"; + v = "vim"; + ser = "ssh root@joygnu.org"; + zs = "vim ~/nix/home/zsh/default.nix"; + ep = "vim ~/nix/modules/packages/default.nix"; + del = "sudo nix-collect-garbage -d"; + push = "git push origin main && git push berg main"; + ec = "vim ~/nix/hosts/pc/default.nix"; + ef = "vim ~/nix/flake.nix"; + epc = "vim ~/nix/hosts/pc/default.nix"; + em = "vim ~/nix/modules/misc/default.nix"; + es = "vim ~/nix/modules/stylix/default.nix"; + }; + + history.size = 10000; + history.path = "${config.xdg.dataHome}/zsh/history"; + + oh-my-zsh = { + enable = true; + plugins = [ "history-substring-search" ]; + theme = "simple"; + }; + }; +} + diff --git a/hosts/craptop/default.nix b/hosts/craptop/default.nix new file mode 100644 index 0000000..c2641f9 --- /dev/null +++ b/hosts/craptop/default.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, modulesPath, inputs, ... }: +{ + networking.hostName = "craptop"; + networking.networkmanager.enable = true; + + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/nvme0n1"; + boot.loader.grub.useOSProber = true; + + imports = [ + ../../modules + ./hardware.nix + inputs.home-manager.nixosModules.default + ]; +} diff --git a/hosts/craptop/hardware.nix b/hosts/craptop/hardware.nix new file mode 100644 index 0000000..61efd08 --- /dev/null +++ b/hosts/craptop/hardware.nix @@ -0,0 +1,32 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/c8b1effc-0f19-4317-a206-6d66c5c10091"; + fsType = "ext4"; + }; + + 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.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix new file mode 100644 index 0000000..463c0ce --- /dev/null +++ b/hosts/laptop/default.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, modulesPath, inputs, ... }: +{ + networking.hostName = "laptop"; + networking.networkmanager.enable = true; + + hardware.nvidia.nvidiaSettings = true; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + imports = [ + ../../modules + ./hardware.nix + inputs.home-manager.nixosModules.default + ]; +} diff --git a/hosts/laptop/hardware.nix b/hosts/laptop/hardware.nix new file mode 100644 index 0000000..a70d4bc --- /dev/null +++ b/hosts/laptop/hardware.nix @@ -0,0 +1,40 @@ +# 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" "xhci_pci" "ahci" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/aa1db414-24a7-46c5-872b-6a88a0fdb1d8"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/0CB0-36CE"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/ef9203a3-505b-4331-b19a-cd2ec27a9d00"; } + ]; + + # 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.enp3s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/pc/default.nix b/hosts/pc/default.nix new file mode 100644 index 0000000..b07d2e1 --- /dev/null +++ b/hosts/pc/default.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, modulesPath, inputs, ... }: +{ + networking.hostName = "pc"; + networking.networkmanager.enable = true; + services.xserver.videoDrivers = ["amdgpu"]; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.timeout = 0; + + imports = [ + ../../modules + ./hardware.nix + inputs.home-manager.nixosModules.default + ]; +} diff --git a/hosts/pc/hardware.nix b/hosts/pc/hardware.nix new file mode 100644 index 0000000..d7e66bb --- /dev/null +++ b/hosts/pc/hardware.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/8c81ac04-9d75-4b58-8abe-3dfdd1b9e6ae"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/8810-3A12"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp6s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..ed581f3 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,13 @@ +{ + imports = [ + ./fonts + ./yazi + ./sound + ./vm + ./retro + ./packages + ./misc + ./gdm +# ./stylix + ]; +} diff --git a/modules/fonts/default.nix b/modules/fonts/default.nix new file mode 100644 index 0000000..5e06000 --- /dev/null +++ b/modules/fonts/default.nix @@ -0,0 +1,8 @@ +{ config, pkgs, ...}: + +{ + fonts.packages = with pkgs; [ + font-awesome + (nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" "Iosevka" ]; }) + ]; +} diff --git a/modules/gdm/default.nix b/modules/gdm/default.nix new file mode 100644 index 0000000..9870a80 --- /dev/null +++ b/modules/gdm/default.nix @@ -0,0 +1,14 @@ +{ config, ... }: + +{ + + services.xserver.enable = true; + services.xserver.displayManager.gdm.enable = true; + + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "joy"; + + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + +} diff --git a/modules/misc/default.nix b/modules/misc/default.nix new file mode 100644 index 0000000..a42be88 --- /dev/null +++ b/modules/misc/default.nix @@ -0,0 +1,44 @@ +{ config, inputs, pkgs, ... }: + +{ + + programs.hyprland.enable = true; + users.defaultUserShell = pkgs.zsh; + programs.zsh.enable = true; + programs.gnupg.agent.enable = true; + boot.initrd.luks.gpgSupport = true; + + home-manager = { + extraSpecialArgs = {inherit inputs;}; + users = { + "joy" = import ./../../home; + }; + }; + + users.users.joy = { + isNormalUser = true; + description = "joy"; + extraGroups = [ "wheel" ]; +}; + nix.settings.experimental-features = [ "nix-command" "flakes"]; + + time.timeZone = "Europe/Zurich"; + + programs.thunar.enable = true; + virtualisation.docker.enable = true; + services.devmon.enable = true; + services.udisks2.enable = true; + services.gvfs.enable = true; + + boot.binfmt.registrations.appimage = { + wrapInterpreterInShell = false; + interpreter = "${pkgs.appimage-run}/bin/appimage-run"; + recognitionType = "magic"; + offset = 0; + mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff''; + magicOrExtension = ''\x7fELF....AI\x02''; + }; + + system.stateVersion = "23.11"; + +} diff --git a/modules/packages/default.nix b/modules/packages/default.nix new file mode 100644 index 0000000..597321f --- /dev/null +++ b/modules/packages/default.nix @@ -0,0 +1,74 @@ +{ config, pkgs, ... }: + +{ + virtualisation.docker.rootless.enable = true; + virtualisation.docker.enable = true; + nixpkgs.config.allowUnfree = true; + programs.steam.enable = true; + services = { + syncthing = { + enable = true; + user = "joy"; + dataDir = "/home/joy/sync"; + configDir = "/home/joy/.config/syncthing"; + }; + }; + + environment.systemPackages = with pkgs; [ + #Games + alacritty + ark + rofi + prismlauncher + zulu17 + lutris + mangohud + #hackerman + neovim + vim + fastfetch + freshfetch + cmatrix + cava + nitch + htop + gotop + #chromium + brave + freetube + webcord-vencord + #image/video/music/recording + imv + mpv + moc + obs-studio + #gui stuff + ark + keepassxc + signal-desktop + gnome.gnome-disk-utility + transmission-gtk + upscayl + cinnamon.nemo + bottles + thunderbird + chatterino2 + gnome.gnome-clocks + gnome.gnome-calculator + firefox + #random utils + git + zip + rar + unzip + unrar + scrcpy + lm_sensors + appimage-run + ytmdl + yt-dlp + distrobox + wget + nginx + ]; +} diff --git a/modules/retro/default.nix b/modules/retro/default.nix new file mode 100644 index 0000000..2a93d47 --- /dev/null +++ b/modules/retro/default.nix @@ -0,0 +1,13 @@ +{ pkgs, config, ...}: + +{ + environment.systemPackages = with pkgs; [ + emulationstation-de + retroarchFull + dolphin-emu + ]; + + nixpkgs.config.permittedInsecurePackages = [ + "freeimage-unstable-2021-11-01" + ]; +} diff --git a/modules/sound/default.nix b/modules/sound/default.nix new file mode 100644 index 0000000..dbcfbfe --- /dev/null +++ b/modules/sound/default.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +{ +sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; +} diff --git a/modules/stylix/default.nix b/modules/stylix/default.nix new file mode 100644 index 0000000..a50e698 --- /dev/null +++ b/modules/stylix/default.nix @@ -0,0 +1,35 @@ +{ config, inputs, pkgs, ... }: +{ + + stylix.image = ./image.png; + stylix.override= { + base00 = "282828"; + base01 = "3c3836"; + base02 = "504945"; + base03 = "665c54"; + base04 = "bdae93"; + base05 = "d5c4a1"; + base06 = "ebdbb2"; + base07 = "fbf1c7"; + base08 = "fb4934"; + base09 = "fe8019"; + base0A = "fabd2f"; + base0B = "b8bb26"; + base0C = "8ec07c"; + base0D = "83a598"; + base0E = "d3869b"; + base0F = "d65d0e"; + }; +# stylix.cursor.package = pkgs.bibata-cursors; +# stylix.cursor.name = "Bibata-Modern-Ice"; +# stylix.cursor.size = 24; + stylix.targets.chromium.enable = false; + stylix.homeManagerIntegration.autoImport = false; + users.users.joy = { + isNormalUser = true; + description = "joy"; + extraGroups = [ "networkmanager" "wheel" ]; + }; +} + + diff --git a/modules/stylix/image.png b/modules/stylix/image.png new file mode 100644 index 0000000..c1dd233 Binary files /dev/null and b/modules/stylix/image.png differ diff --git a/modules/vm/default.nix b/modules/vm/default.nix new file mode 100644 index 0000000..4596ad1 --- /dev/null +++ b/modules/vm/default.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ... }: + +{ + + # Enable dconf (System Management Tool) + programs.dconf.enable = true; + + # Add user to libvirtd group + users.users.joy.extraGroups = [ "libvirtd" ]; + + # Install necessary packages + environment.systemPackages = with pkgs; [ + virt-manager + virt-viewer + spice spice-gtk + spice-protocol + win-virtio + win-spice + virtiofsd + #gnome.adwaita-icon-theme + ]; + + # Manage the virtualisation services + virtualisation = { + libvirtd = { + enable = true; + qemu = { + swtpm.enable = true; + ovmf.enable = true; + ovmf.packages = [ pkgs.OVMFFull.fd ]; + }; + }; + spiceUSBRedirection.enable = true; + }; + services.spice-vdagentd.enable = true; + +} diff --git a/modules/yazi/default.nix b/modules/yazi/default.nix new file mode 100644 index 0000000..7701b06 --- /dev/null +++ b/modules/yazi/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + yazi + jq + poppler + fd + ripgrep + fzf + zoxide + ]; +}