diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1093752 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +nixos/hardware-configuration.nix diff --git a/README.md b/README.md index dd6be3e..b10f256 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# nix-config +# **❄️ autumn-the-kitty-cat's NixOS Configuration ❄️** -Configuration of my NixOS-based computers \ No newline at end of file +![Preview of my configuration](./screenshots/preview.png) diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3909dce --- /dev/null +++ b/flake.lock @@ -0,0 +1,762 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", + "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-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4524271976b625a4a605beefd893f270620fd751", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "mango", + "scenefx", + "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" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "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" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "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" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nix-wallpaper", + "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": 1748186689, + "narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "48.2", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762721397, + "narHash": "sha256-E428EuouA4nFTNlLuqlL4lVR78X+EbBIqDqsBFnB79w=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "b8645b18b0f5374127bbade6de7381ef0b3d5720", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "zen-browser", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762351818, + "narHash": "sha256-0ptUDbYwxv1kk/uzEX4+NJjY2e16MaAhtzAOJ6K0TG0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "b959c67241cae17fc9e4ee7eaf13dfa8512477ea", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754860581, + "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.1.1", + "repo": "ixx", + "type": "github" + } + }, + "mango": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "scenefx": "scenefx" + }, + "locked": { + "lastModified": 1762701589, + "narHash": "sha256-xB9F2URQwqUPX4YU9ggWPLrAvEGegO/Inlvs835lMJg=", + "owner": "DreamMaoMao", + "repo": "mango", + "rev": "d0a51f47856b62ed1d135eaa2a1824377efc85a4", + "type": "github" + }, + "original": { + "owner": "DreamMaoMao", + "repo": "mango", + "type": "github" + } + }, + "nix-wallpaper": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1750526611, + "narHash": "sha256-RuP01U7zaS9S3zTNw4R0P87PY0A1szG8K5NTlOrqG18=", + "owner": "lunik1", + "repo": "nix-wallpaper", + "rev": "fb2a848f01cd1b08c5d9029984f034eb883e318a", + "type": "github" + }, + "original": { + "owner": "lunik1", + "repo": "nix-wallpaper", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1762596750, + "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1748740939, + "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "656a64127e9d791a334452c6b6606d17539476e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_4" + }, + "locked": { + "lastModified": 1762691346, + "narHash": "sha256-dyYnqvYrgViB22inBqNern/XSWtOiweP8NTfJQJeTis=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "faf1fb4b7cd069ce44469e45c3259b7bcf106f81", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils_3", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761730856, + "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", + "owner": "NuschtOS", + "repo": "search", + "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nix-wallpaper", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "mango": "mango", + "nix-wallpaper": "nix-wallpaper", + "nixpkgs": "nixpkgs", + "nixvim": "nixvim", + "stylix": "stylix", + "zen-browser": "zen-browser" + } + }, + "scenefx": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "mango", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1762447505, + "narHash": "sha256-VEBQ8KXkSS4c+kdAhmvq06lEd9WNeCXdRK1U+qSilFw=", + "owner": "wlrfx", + "repo": "scenefx", + "rev": "7f9e7409f6169fa637f1265895c121a8f8b70272", + "type": "github" + }, + "original": { + "owner": "wlrfx", + "repo": "scenefx", + "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-parts": "flake-parts_3", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur", + "systems": "systems_5", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1762264356, + "narHash": "sha256-QVfC53Ri+8n3e7Ujx9kq6all3+TLBRRPRnc6No5qY5w=", + "owner": "danth", + "repo": "stylix", + "rev": "647bb8dd96a206a1b79c4fd714affc88b409e10b", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "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": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "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": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "zen-browser": { + "inputs": { + "home-manager": "home-manager_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762721850, + "narHash": "sha256-DM2z2mMtHqo7SQkhTRws538Aa9MUxH3pw6u6ZQrfeKk=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "f0c7e6dafa5641880eaa49736526f9101aa0bdb4", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..5a2f29b --- /dev/null +++ b/flake.nix @@ -0,0 +1,66 @@ +{ + description = "autumn's NixOS & home-manager Configuration"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + stylix = { + url = "github:danth/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + zen-browser = { + url = "github:0xc000022070/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-wallpaper = { + url = "github:lunik1/nix-wallpaper"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + mango = { + url = "github:DreamMaoMao/mango"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + outputs = + { ... }@inputs: + let + system = "x86_64-linux"; + pkgs = import inputs.nixpkgs { + inherit system; + config.allowUnfree = true; + }; + in + { + nixosConfigurations."nixos" = inputs.nixpkgs.lib.nixosSystem { + inherit system; + inherit pkgs; + modules = [ + ./nixos/configuration.nix + + inputs.home-manager.nixosModules.home-manager + { + home-manager.backupFileExtension = "hm-bak"; + + home-manager.extraSpecialArgs = { inherit inputs; }; + + home-manager.sharedModules = [ + inputs.nixvim.homeModules.nixvim + inputs.stylix.homeModules.stylix + inputs.zen-browser.homeModules.default + ]; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.users."autumn" = ./home-manager/home.nix; + } + ]; + }; + }; +} diff --git a/home-manager/clangd.nix b/home-manager/clangd.nix new file mode 100644 index 0000000..9ca1389 --- /dev/null +++ b/home-manager/clangd.nix @@ -0,0 +1,37 @@ +{pkgs, ...}: +{ + home.packages = with pkgs; [ + clang + ]; + + home.file.".clang-format".text = '' +--- +BasedOnStyle: WebKit +AlignAfterOpenBracket: Align +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: true + BeforeWhile: true + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBraces: Custom +ColumnLimit: 80 +IndentCaseLabels: true +InsertBraces: true +TabWidth: 4 + + ''; +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..e6c1317 --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + imports = [ + ./programs + + ./clangd.nix + ./hyprland.nix + ./packages.nix + ./stylix.nix + ./xdg.nix + ]; + + home.username = "autumn"; + home.homeDirectory = "/home/autumn"; + home.stateVersion = "25.05"; + + home.pointerCursor = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + size = 12; + }; + + programs.home-manager.enable = true; +} diff --git a/home-manager/hyprland.nix b/home-manager/hyprland.nix new file mode 100644 index 0000000..168c2e0 --- /dev/null +++ b/home-manager/hyprland.nix @@ -0,0 +1,143 @@ +{ config, pkgs, ... }: +{ + home.packages = with pkgs; [ + hyprpicker + swww + ]; + + home.file.".config/hypr/hyprland.conf".text = '' + $mainMod=SUPER + $menu=rofi -show drun + $powerMenu=rofi -show power-menu -modi "power-menu:rofi-power-menu --choices lockscreen/suspend/reboot/shutdown" + $screenshot=slurp | grim -g - - | wl-copy + $terminal=foot + animations { + bezier=myBezier, 0.05, 0.9, 0.1, 1.05 + animation=windows, 1, 7, myBezier + animation=windowsOut, 1, 7, default, popin 80% + animation=border, 1, 10, default + animation=borderangle, 1, 8, default + animation=fade, 1, 7, default + animation=workspaces, 1, 6, default + enabled=true + } + + decoration { + blur { + enabled=yes + ignore_opacity=on + new_optimizations=on + passes=3 + size=6 + special=true + xray=false + } + # active_opacity=1.000000 + # inactive_opacity=1.000000 + rounding=10 + shadow { + color=rgba(00000099) + enabled=true + range=4 + render_power=3 + } + } + + dwindle { + preserve_split=true + pseudotile=true + } + + xwayland { + force_zero_scaling=true + } + + general { + allow_tearing=false + border_size=2 + col.active_border=rgb(${config.stylix.base16Scheme.palette.base0D}) + col.inactive_border=rgba(595959aa) + gaps_in=5 + gaps_out=10 + layout=dwindle + resize_on_border=false + } + + input { + touchpad { + natural_scroll=true + disable_while_typing=0 + } + + kb_layout=us + } + + misc { + disable_hyprland_logo=true + force_default_wallpaper=0 + } + + monitor = DP-2, 2560x1440@180, 0x0, 1#, bitdepth, 10, cm, hdr + monitor = HDMI-A-1, 1920x1080@60, 2560x0, 1 + + bind=$mainMod, Q, exec, $terminal + bind=$mainMod, C, killactive + bind=$mainMod, M, exit + bind=$mainMod, V, togglefloating + bind=$mainMod, D, exec, $menu + bind=$mainMod, P, pseudo + bind=$mainMod, T, togglesplit + bind=$mainMod, S, exec, $screenshot + bind=$mainMod SHIFT, P, exec, $powerMenu + bind=$mainMod SHIFT, S, exec, $screenshot + bind=$mainMod, F, fullscreen + bind=$mainMod, left, movefocus, l + bind=$mainMod, right, movefocus, r + bind=$mainMod, up, movefocus, u + bind=$mainMod, down, movefocus, d + bind=$mainMod, H, movefocus, l + bind=$mainMod, L, movefocus, r + bind=$mainMod, K, movefocus, u + bind=$mainMod, J, movefocus, d + bind=$mainMod SHIFT, H, movewindow, l + bind=$mainMod SHIFT, L, movewindow, r + bind=$mainMod SHIFT, K, movewindow, u + bind=$mainMod SHIFT, J, movewindow, d + bind=$mainMod SHIFT, left, movewindow, l + bind=$mainMod SHIFT, right, movewindow, r + bind=$mainMod SHIFT, up, movewindow, u + bind=$mainMod SHIFT, down, movewindow, d + bind=$mainMod, 1, workspace, 1 + bind=$mainMod, 2, workspace, 2 + bind=$mainMod, 3, workspace, 3 + bind=$mainMod, 4, workspace, 4 + bind=$mainMod, 5, workspace, 5 + bind=$mainMod, 6, workspace, 6 + bind=$mainMod, 7, workspace, 7 + bind=$mainMod, 8, workspace, 8 + bind=$mainMod, 9, workspace, 9 + bind=$mainMod, 0, workspace, 10 + bind=$mainMod SHIFT, 1, movetoworkspace, 1 + bind=$mainMod SHIFT, 2, movetoworkspace, 2 + bind=$mainMod SHIFT, 3, movetoworkspace, 3 + bind=$mainMod SHIFT, 4, movetoworkspace, 4 + bind=$mainMod SHIFT, 5, movetoworkspace, 5 + bind=$mainMod SHIFT, 6, movetoworkspace, 6 + bind=$mainMod SHIFT, 7, movetoworkspace, 7 + bind=$mainMod SHIFT, 8, movetoworkspace, 8 + bind=$mainMod SHIFT, 9, movetoworkspace, 9 + bind=$mainMod SHIFT, 0, movetoworkspace, 10 + bind=$mainMod, mouse_down, workspace, e+1 + bind=$mainMod, mouse_up, workspace, e-1 + bindm=$mainMod, mouse:272, movewindow + bindm=$mainMod, mouse:273, resizewindow + env=XCURSOR_SIZE,24 + env=HYPRCURSOR_SIZE,24 + exec-once=swww-daemon + exec=swww img ${config.stylix.image} + exec-once=waybar + exec=pkill waybar; waybar + windowrulev2=suppressevent maximize, class:.* + #windowrulev2 = opacity 0.9, class:(com.mitchellh.ghostty) + ''; +} diff --git a/home-manager/mango.nix b/home-manager/mango.nix new file mode 100644 index 0000000..566db2e --- /dev/null +++ b/home-manager/mango.nix @@ -0,0 +1,220 @@ +{ config, ... }: +{ + wayland.windowManager.mango = { + enable = true; + settings = '' + # More option see https://github.com/DreamMaoMao/mango/wiki/ + + # Window effect + blur=0 + blur_layer=0 + blur_optimized=1 + blur_params_num_passes = 2 + blur_params_radius = 5 + blur_params_noise = 0.02 + blur_params_brightness = 0.9 + blur_params_contrast = 0.9 + blur_params_saturation = 1.2 + + shadows = 1 + layer_shadows = 0 + shadow_only_floating = 0 + shadows_size = 10 + shadows_blur = 15 + shadows_position_x = 0 + shadows_position_y = 0 + shadowscolor= 0x00000099 + + border_radius=10 + no_radius_when_single=0 + focused_opacity=1.0 + unfocused_opacity=1.0 + + # Animation Configuration(support type:zoom,slide) + # tag_animation_direction: 0-horizontal,1-vertical + animations=1 + layer_animations=1 + animation_type_open=zoom + animation_type_close=zoom + animation_fade_in=1 + animation_fade_out=1 + tag_animation_direction=1 + zoom_initial_ratio=0.3 + zoom_end_ratio=0.8 + fadein_begin_opacity=0.5 + fadeout_begin_opacity=0.8 + animation_duration_move=500 + animation_duration_open=400 + animation_duration_tag=350 + animation_duration_close=800 + animation_curve_open=0.46,1.0,0.29,1 + animation_curve_move=0.46,1.0,0.29,1 + animation_curve_tag=0.46,1.0,0.29,1 + animation_curve_close=0.08,0.92,0,1 + + # Master-Stack Layout Setting + new_is_master=1 + default_mfact=0.55 + default_nmaster=1 + smartgaps=0 + + # Overview Setting + hotarea_size=10 + enable_hotarea=1 + ov_tab_mode=0 + overviewgappi=5 + overviewgappo=30 + + # Misc + no_border_when_single=0 + axis_bind_apply_timeout=100 + focus_on_activate=1 + inhibit_regardless_of_visibility=0 + sloppyfocus=1 + warpcursor=1 + focus_cross_monitor=1 + focus_cross_tag=0 + enable_floating_snap=0 + snap_distance=30 + cursor_size=24 + drag_tile_to_tile=1 + + # keyboard + repeat_rate=25 + repeat_delay=600 + numlockon=0 + xkb_rules_layout=us + + # Trackpad + # need relogin to make it apply + disable_trackpad=0 + tap_to_click=1 + tap_and_drag=1 + drag_lock=1 + trackpad_natural_scrolling=0 + disable_while_typing=1 + left_handed=0 + middle_button_emulation=0 + swipe_min_threshold=1 + + # mouse + # need relogin to make it apply + mouse_natural_scrolling=0 + + # Appearance + gappih=5 + gappiv=5 + gappoh=10 + gappov=10 + scratchpad_width_ratio=0.8 + scratchpad_height_ratio=0.9 + borderpx=2 + rootcolor=0x201b14ff + bordercolor=0x595959aa + focuscolor=${config.stylix.base16Scheme.palette.base0D}ff + maximizescreencolor=0x89aa61ff + urgentcolor=0xad401fff + scratchpadcolor=0x516c93ff + globalcolor=0xb153a7ff + overlaycolor=0x14a57cff + + # layout support: + # tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller + tagrule=id:1,layout_name:tile + tagrule=id:2,layout_name:tile + tagrule=id:3,layout_name:tile + tagrule=id:4,layout_name:tile + tagrule=id:5,layout_name:tile + tagrule=id:6,layout_name:tile + tagrule=id:7,layout_name:tile + tagrule=id:8,layout_name:tile + tagrule=id:9,layout_name:tile + + # Key Bindings + # key name refer to `xev` or ``grid command output, + # mod keys name: super,ctrl,alt,shift,none + + # reload config + bind=SUPER,r,reload_config + + # menu and terminal + bind=SUPER,q,spawn,foot + bind=SUPER,d,spawn,rofi -show drun + bind=SUPER+SHIFT,p,spawn,rofi -show power-menu -modi power-menu:rofi-power-menu + + # exit + bind=SUPER,c,killclient + bind=SUPER,m,quit + + # switch window focus + bind=SUPER,Tab,focusstack,next + bind=SUPER,Left,focusdir,left + bind=SUPER,Right,focusdir,right + bind=SUPER,Up,focusdir,up + bind=SUPER,Down,focusdir,down + + # swap window + bind=SUPER+SHIFT,Up,exchange_client,up + bind=SUPER+SHIFT,Down,exchange_client,down + bind=SUPER+SHIFT,Left,exchange_client,left + bind=SUPER+SHIFT,Right,exchange_client,right + + # switch window status + bind=SUPER,g,toggleglobal, + bind=SUPER,Tab,toggleoverview, + bind=SUPER,v,togglefloating + bind=SUPER,f,togglefullscreen, + bind=SUPER,o,toggleoverlay, + bind=SUPER,z,toggle_scratchpad + + # tag switch + bind=SUPER,1,view,1,0 + bind=SUPER,2,view,2,0 + bind=SUPER,3,view,3,0 + bind=SUPER,4,view,4,0 + bind=SUPER,5,view,5,0 + bind=SUPER,6,view,6,0 + bind=SUPER,7,view,7,0 + bind=SUPER,8,view,8,0 + bind=SUPER,9,view,9,0 + + # tag: move client to the tag and focus it + # tagsilent: move client to the tag and not focus it + # bind=Alt,1,tagsilent,1 + bind=SUPER+SHIFT,1,tag,1,0 + bind=SUPER+SHIFT,2,tag,2,0 + bind=SUPER+SHIFT,3,tag,3,0 + bind=SUPER+SHIFT,4,tag,4,0 + bind=SUPER+SHIFT,5,tag,5,0 + bind=SUPER+SHIFT,6,tag,6,0 + bind=SUPER+SHIFT,7,tag,7,0 + bind=SUPER+SHIFT,8,tag,8,0 + bind=SUPER+SHIFT,9,tag,9,0 + + # Mouse Button Bindings + # NONE mode key only work in ov mode + mousebind=SUPER,btn_left,moveresize,curmove + mousebind=NONE,btn_middle,togglemaximizescreen,0 + mousebind=SUPER,btn_right,moveresize,curresize + mousebind=NONE,btn_left,toggleoverview,-1 + mousebind=NONE,btn_right,killclient,0 + + # Axis Bindings + axisbind=SUPER,UP,viewtoleft_have_client + axisbind=SUPER,DOWN,viewtoright_have_client + + # layer rule + layerrule=animation_type_open:zoom,layer_name:rofi + layerrule=animation_type_close:zoom,layer_name:rofi + + exec-once=swww-daemon + exec=swww img ${config.stylix.image} + exec=pkill waybar; waybar + + env=XCURSOR_SIZE,24 + + monitorrule=DP-2,0.55,1,tile,0,1,0,0,2560,1440,180 + monitorrule=HDMI-A-1,0.55,1,tile,0,1,2560,0,1920,1080,60 + ''; + }; +} diff --git a/home-manager/next-steps.md b/home-manager/next-steps.md new file mode 100644 index 0000000..6d94015 --- /dev/null +++ b/home-manager/next-steps.md @@ -0,0 +1,15 @@ +# Rofi +- [x] package search (nix-search-tv + television) +- [x] power menu log out -> sddm // remove log out all together; super+m works just fine +- [ ] package search (nix-search-tv + rofi) // can use -dmenu with pipes +- [ ] figure out rofi-calc | dict.sh + +# Misc. +- [x] setup some proper shell shortcuts +- [x] ❌ cancelled : dynamic auto-tab depending on filetype // just deal with the standards, silly ! +- [ ] COMMENTS + +# Nix +- [ ] combine home-manager and nixos configuration +- [ ] custom nixos iso + diff --git a/home-manager/packages.nix b/home-manager/packages.nix new file mode 100644 index 0000000..bd59a7f --- /dev/null +++ b/home-manager/packages.nix @@ -0,0 +1,50 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + anki + arduino-ide + audacity + blender + cava + cmus + eza + fd + file + ffmpeg + fzf + gimp3-with-plugins + git + ghidra-bin + grim + kdePackages.kdenlive + kicad + killall + krita + lazygit + ldtk + libresprite + logisim-evolution + lunar-client + man-pages + man-pages-posix + musikcube + obs-studio + pandoc + python3 + prismlauncher + ripgrep + rusty-man + slurp + stm32cubemx + telegram-desktop + texlive.combined.scheme-small + tokei + tor-browser + unzip + vial + virtualboxKvm + vlc + wiki-tui + wl-clipboard + ]; +} diff --git a/home-manager/programs/btop.nix b/home-manager/programs/btop.nix new file mode 100644 index 0000000..fbc055a --- /dev/null +++ b/home-manager/programs/btop.nix @@ -0,0 +1,9 @@ +{...}: { + programs.btop = { + enable = true; + settings = { + vim_keys = true; + theme_background = false; + }; + }; +} diff --git a/home-manager/programs/carapace.nix b/home-manager/programs/carapace.nix new file mode 100644 index 0000000..4c20955 --- /dev/null +++ b/home-manager/programs/carapace.nix @@ -0,0 +1,7 @@ +{...}: +{ + programs.carapace = { + enable = true; + enableNushellIntegration = true; + }; +} diff --git a/home-manager/programs/default.nix b/home-manager/programs/default.nix new file mode 100644 index 0000000..326ca9f --- /dev/null +++ b/home-manager/programs/default.nix @@ -0,0 +1,24 @@ +{ + imports = [ + ./nvim + ./rofi + + ./btop.nix + ./carapace.nix + ./fastfetch.nix + ./foot.nix + ./hyfetch.nix + ./mako.nix + ./ncspot.nix + ./nix-search-tv.nix + ./nushell.nix + ./starship.nix + ./tmux.nix + ./vesktop.nix + ./waybar.nix + ./yazi.nix + ./zathura.nix + ./zoxide.nix + ./zen.nix + ]; +} diff --git a/home-manager/programs/fastfetch.nix b/home-manager/programs/fastfetch.nix new file mode 100644 index 0000000..86dc35a --- /dev/null +++ b/home-manager/programs/fastfetch.nix @@ -0,0 +1,156 @@ +{...}: { + programs.fastfetch = { + enable = true; + settings = { + logo = { + padding = { + top = 2; + }; + }; + display = { + separator = " -> "; + }; + modules = [ + { + type = "custom"; + format = "┌────────────────────────────────────────────────────────────┐"; + outputColor = "90"; + } + { + type = "title"; + keyWidth = 10; + } + { + type = "custom"; + format = "└────────────────────────────────────────────────────────────┘"; + outputColor = "90"; + } + { + type = "custom"; + format = " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"; + } + { + type = "custom"; + format = "┌────────────────────────────────────────────────────────────┐"; + outputColor = "90"; + } + { + type = "os"; + key = " OS"; + keyColor = "yellow"; + format = "{2} {8} {1}"; + } + { + type = "kernel"; + key = "│ ├"; + keyColor = "yellow"; + } + { + type = "packages"; + key = "│ ├󰏖"; + keyColor = "yellow"; + } + { + type = "shell"; + key = "│ └"; + keyColor = "yellow"; + } + { + type = "wm"; + key = " DE/WM"; + keyColor = "blue"; + } + { + type = "lm"; + key = "│ ├󰧨"; + keyColor = "blue"; + } + { + type = "wmtheme"; + key = "│ ├󰉼"; + keyColor = "blue"; + } + { + type = "icons"; + key = "│ ├󰀻"; + keyColor = "blue"; + } + { + type = "terminal"; + key = "│ ├"; + keyColor = "blue"; + } + { + type = "wallpaper"; + key = "│ └󰸉"; + keyColor = "blue"; + } + { + type = "host"; + key = "󰌢 PC"; + keyColor = "green"; + } + { + type = "cpu"; + key = "│ ├󰻠"; + keyColor = "green"; + } + { + type = "gpu"; + key = "│ ├󰍛"; + keyColor = "green"; + } + { + type = "disk"; + key = "│ ├"; + keyColor = "green"; + } + { + type = "memory"; + key = "│ ├󰑭"; + keyColor = "green"; + } + { + type = "swap"; + key = "│ ├󰓡"; + keyColor = "green"; + } + { + type = "uptime"; + key = "│ ├󰅐"; + keyColor = "green"; + } + { + type = "display"; + key = "│ └󰍹"; + keyColor = "green"; + } + { + type = "sound"; + key = " SND"; + keyColor = "cyan"; + } + { + type = "player"; + key = "│ ├󰥠"; + keyColor = "cyan"; + } + { + type = "media"; + key = "│ └󰝚"; + keyColor = "cyan"; + } + { + type = "custom"; + format = "└────────────────────────────────────────────────────────────┘"; + outputColor = "90"; + } + "break" + { + type = "custom"; + format = " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"; + } + ]; + }; + }; +} diff --git a/home-manager/programs/foot.nix b/home-manager/programs/foot.nix new file mode 100644 index 0000000..1f1d145 --- /dev/null +++ b/home-manager/programs/foot.nix @@ -0,0 +1,13 @@ +{...}: { + programs.foot = { + enable = true; + settings = { + cursor = { + style = "beam"; + }; + key-bindings = { + spawn-terminal = "none"; + }; + }; + }; +} diff --git a/home-manager/programs/hyfetch.nix b/home-manager/programs/hyfetch.nix new file mode 100644 index 0000000..a40e572 --- /dev/null +++ b/home-manager/programs/hyfetch.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + programs.hyfetch = { + enable = true; + settings = { + preset = "transgender"; + mode = "rgb"; + color_align.mode = "horizontal"; + backend = "fastfetch"; + pride_month_disable = true; + }; + }; +} diff --git a/home-manager/programs/mako.nix b/home-manager/programs/mako.nix new file mode 100644 index 0000000..030e395 --- /dev/null +++ b/home-manager/programs/mako.nix @@ -0,0 +1,9 @@ +{...}: { + services.mako = { + enable = true; + settings = { + default-timeout = 5000; + ignore-timeout = true; + }; + }; +} diff --git a/home-manager/programs/ncspot.nix b/home-manager/programs/ncspot.nix new file mode 100644 index 0000000..4c8af3c --- /dev/null +++ b/home-manager/programs/ncspot.nix @@ -0,0 +1,6 @@ +{...}: +{ + programs.ncspot = { + enable = true; + }; +} diff --git a/home-manager/programs/nix-search-tv.nix b/home-manager/programs/nix-search-tv.nix new file mode 100644 index 0000000..ef12a6d --- /dev/null +++ b/home-manager/programs/nix-search-tv.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + programs.television.enable = true; + programs.nix-search-tv = { + enable = true; + enableTelevisionIntegration = true; + }; +} diff --git a/home-manager/programs/nushell.nix b/home-manager/programs/nushell.nix new file mode 100644 index 0000000..d222bec --- /dev/null +++ b/home-manager/programs/nushell.nix @@ -0,0 +1,223 @@ +{ config, pkgs, ... }: +{ + home.packages = [ pkgs.nix-your-shell ]; + + programs.nushell = { + enable = true; + plugins = with pkgs.nushellPlugins; [ + formats + polars + gstat + query + ]; + settings = { + show_banner = false; + edit_mode = "vi"; + cursor_shape = { + emacs = "line"; + vi_insert = "line"; + vi_normal = "block"; + }; + }; + shellAliases = { + c = "clear"; + meow = "_meow"; + + hf = "nix flake update --flake ${config.home.homeDirectory}/.config/home-manager"; + hs = "nh home switch ~/.config/home-manager"; + hz = "z ~/.config/home-manager"; + + nsu = "_nsu"; + ns = "sudo nixos-rebuild switch"; + + se = "sudoedit"; + v = "nvim"; + }; + extraConfig = with config.stylix.base16Scheme.palette; '' + def _meow () { + clear + hyfetch + } + + def _nsu () { + sudo nix-channel --add https://channels.nixos.org/nixos-unstable nixos + sudo nixos-rebuild switch --upgrade + } + + def _nix_your_shell (command: string, args: list) { + if not (which nix-your-shell | is-empty) { + let args = ["--"] ++ $args + run-external nix-your-shell nu $command ...$args + } else { + run-external $command ...$args + } + } + + def --wrapped nix-shell (...args) { + _nix_your_shell nix-shell $args + } + + def --wrapped nix (...args) { + _nix_your_shell nix $args + } + + + let theme = { + base00: "#${base00}" + base01: "#${base01}" + base02: "#${base02}" + base03: "#${base03}" + base04: "#${base04}" + base05: "#${base05}" + base06: "#${base06}" + base07: "#${base07}" + base08: "#${base08}" + base09: "#${base09}" + base0A: "#${base0A}" + base0B: "#${base0B}" + base0C: "#${base0C}" + base0D: "#${base0D}" + base0E: "#${base0E}" + base0F: "#${base0F}" + } + + let scheme = { + recognized_command: $theme.base0D + unrecognized_command: $theme.base08 + constant: $theme.base09 + punctuation: $theme.base04 + operator: $theme.base0C + string: $theme.base0B + virtual_text: $theme.base04 + variable: { fg: $theme.base0F attr: i } + filepath: $theme.base0A + } + + $env.config.color_config = { + separator: { fg: $theme.base04 attr: b } + leading_trailing_space_bg: { fg: $theme.base07 attr: u } + header: { fg: $theme.base05 attr: b } + row_index: $scheme.virtual_text + record: $theme.base05 + list: $theme.base05 + hints: $scheme.virtual_text + search_result: { fg: $theme.base00 bg: $theme.base0A } + shape_closure: $theme.base0C + closure: $theme.base0C + shape_flag: { fg: $theme.base08 attr: i } + shape_matching_brackets: { attr: u } + shape_garbage: $theme.base08 + shape_keyword: $theme.base0E + shape_match_pattern: $theme.base0B + shape_signature: $theme.base0C + shape_table: $scheme.punctuation + cell-path: $scheme.punctuation + shape_list: $scheme.punctuation + shape_record: $scheme.punctuation + shape_vardecl: $scheme.variable + shape_variable: $scheme.variable + empty: { attr: n } + filesize: {|| + if $in < 1kb { + $theme.base0C + } else if $in < 10kb { + $theme.base0B + } else if $in < 100kb { + $theme.base0A + } else if $in < 10mb { + $theme.base09 + } else if $in < 100mb { + $theme.base08 + } else if $in < 1gb { + $theme.base08 + } else { + $theme.base0E + } + } + duration: {|| + if $in < 1day { + $theme.base0C + } else if $in < 1wk { + $theme.base0B + } else if $in < 4wk { + $theme.base0A + } else if $in < 12wk { + $theme.base09 + } else if $in < 24wk { + $theme.base08 + } else if $in < 52wk { + $theme.base08 + } else { + $theme.base0E + } + } + date: {|| (date now) - $in | + if $in < 1day { + $theme.base0C + } else if $in < 1wk { + $theme.base0B + } else if $in < 4wk { + $theme.base0A + } else if $in < 12wk { + $theme.base09 + } else if $in < 24wk { + $theme.base08 + } else if $in < 52wk { + $theme.base08 + } else { + $theme.base0E + } + } + shape_external: $scheme.unrecognized_command + shape_internalcall: $scheme.recognized_command + shape_external_resolved: $scheme.recognized_command + shape_block: $scheme.recognized_command + block: $scheme.recognized_command + shape_custom: $theme.base0F + custom: $theme.base0F + background: $theme.base00 + foreground: $theme.base05 + cursor: { bg: $theme.base06 fg: $theme.base00 } + shape_range: $scheme.operator + range: $scheme.operator + shape_pipe: $scheme.operator + shape_operator: $scheme.operator + shape_base08irection: $scheme.operator + glob: $scheme.filepath + shape_directory: $scheme.filepath + shape_filepath: $scheme.filepath + shape_glob_interpolation: $scheme.filepath + shape_globpattern: $scheme.filepath + shape_int: $scheme.constant + int: $scheme.constant + bool: $scheme.constant + float: $scheme.constant + nothing: $scheme.constant + binary: $scheme.constant + shape_nothing: $scheme.constant + shape_bool: $scheme.constant + shape_float: $scheme.constant + shape_binary: $scheme.constant + shape_datetime: $scheme.constant + shape_literal: $scheme.constant + string: $scheme.string + shape_string: $scheme.string + shape_string_interpolation: $theme.base0F + shape_raw_string: $scheme.string + shape_externalarg: $scheme.string + } + $env.config.highlight_resolved_externals = true + $env.config.explore = { + status_bar_background: { fg: $theme.base05, bg: $theme.base01 }, + command_bar_text: { fg: $theme.base05 }, + highlight: { fg: $theme.base00, bg: $theme.base0A }, + status: { + error: $theme.base08, + warn: $theme.base0A, + info: $theme.base0D, + }, + selected_cell: { bg: $theme.base0D fg: $theme.base00 }, + } + ''; + }; +} diff --git a/home-manager/programs/nvim/cmp/default.nix b/home-manager/programs/nvim/cmp/default.nix new file mode 100644 index 0000000..a4a8c4f --- /dev/null +++ b/home-manager/programs/nvim/cmp/default.nix @@ -0,0 +1,6 @@ +{...}: { + imports = [ + ./lsp.nix + ./none-ls.nix + ]; +} diff --git a/home-manager/programs/nvim/cmp/lsp.nix b/home-manager/programs/nvim/cmp/lsp.nix new file mode 100644 index 0000000..77e2f39 --- /dev/null +++ b/home-manager/programs/nvim/cmp/lsp.nix @@ -0,0 +1,124 @@ +{ ... }: +{ + programs.nixvim.plugins = { + lsp = { + enable = true; + inlayHints = true; + servers = { + asm_lsp.enable = true; + lua_ls = { + enable = true; + settings.telemetry.enable = false; + }; + pyright.enable = true; + mlir_lsp_server.enable = true; + nixd.enable = true; + nil_ls.enable = true; + clangd = { + enable = true; + cmd = [ + "clangd" + ]; + }; + eslint.enable = true; + hls = { + enable = true; + installGhc = true; + settings.haskell = { + formattingProvider = "fourmolu"; + }; + }; + html.enable = true; + jsonls.enable = true; + ocamllsp.enable = true; + nushell.enable = true; + ts_ls.enable = true; + zls.enable = true; + }; + }; + cmp-emoji = { + enable = true; + }; + cmp = { + enable = true; + settings = { + autoEnableSources = true; + experimental = { + ghost_text = true; + }; + performance = { + debounce = 60; + fetchingTimeout = 200; + }; + snippet = { + expand = "luasnip"; + }; + formatting = { + fields = [ + "kind" + "abbr" + "menu" + ]; + }; + sources = [ + { name = "nvim_lsp"; } + { name = "emoji"; } + + { + name = "buffer"; # text within current buffer + option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; + keywordLength = 3; + } + + { + name = "path"; # file system paths + keywordLength = 3; + } + + { + name = "luasnip"; # snippets + keywordLength = 3; + } + ]; + + window = { + completion.__raw = "cmp.config.window.bordered()"; + documentation.__raw = "cmp.config.window.bordered()"; + }; + + mapping = { + "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; + }; + }; + }; + cmp-nvim-lsp = { + enable = true; + }; # lsp + cmp-buffer = { + enable = true; + }; + cmp-path = { + enable = true; + }; # file system paths + cmp_luasnip = { + enable = true; + }; # snippets + cmp-cmdline = { + enable = false; + }; # autocomplete for cmdline + luasnip = { + enable = true; + settings = { + enable_autosnippets = true; + store_selection_keys = ""; + }; + }; + }; +} diff --git a/home-manager/programs/nvim/cmp/none-ls.nix b/home-manager/programs/nvim/cmp/none-ls.nix new file mode 100644 index 0000000..486cb49 --- /dev/null +++ b/home-manager/programs/nvim/cmp/none-ls.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + programs.nixvim.plugins = { + lsp-format.enable = true; + none-ls = { + enable = true; + enableLspFormat = true; + }; + }; +} diff --git a/home-manager/programs/nvim/default.nix b/home-manager/programs/nvim/default.nix new file mode 100644 index 0000000..aabce7a --- /dev/null +++ b/home-manager/programs/nvim/default.nix @@ -0,0 +1,18 @@ +{ ... }: +{ + imports = [ + ./cmp + ./plugins + + ./keymaps.nix + ./options.nix + ]; + + programs.nixvim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + colorschemes.catppuccin.enable = true; + }; +} diff --git a/home-manager/programs/nvim/keymaps.nix b/home-manager/programs/nvim/keymaps.nix new file mode 100644 index 0000000..b2a1599 --- /dev/null +++ b/home-manager/programs/nvim/keymaps.nix @@ -0,0 +1,94 @@ +{ ... }: +{ + programs.nixvim = { + globals.mapleader = " "; + keymaps = [ + { + mode = "n"; + key = "n"; + action = "NvimTreeFindFileToggle"; + } + + { + mode = [ + "n" + "i" + "v" + "t" + ]; + key = ""; + action = "ToggleTerm"; + } + + { + mode = [ + "n" + "i" + "v" + ]; + key = ""; + action = "BufferLineCycleNext"; + } + + { + mode = [ + "n" + "i" + "v" + ]; + key = ""; + action = "BufferLineCyclePrev"; + } + + { + mode = [ + "n" + "i" + "v" + ]; + key = ""; + action = "BufferLineGoToBuffer 1"; + } + + { + mode = [ + "n" + "i" + "v" + ]; + key = ""; + action = "BufferLineGoToBuffer -1"; + } + + { + mode = "n"; + key = ""; + action = "Yazi"; + } + + { + mode = "n"; + key = "a"; + action = "AerialToggle"; + } + + { + mode = "n"; + key = "{"; + action = "AerialPrev"; + } + + { + mode = "n"; + key = "}"; + action = "AerialNext"; + } + + { + mode = "n"; + key = "c"; + action = ":hori term "; + } + ]; + }; +} diff --git a/home-manager/programs/nvim/options.nix b/home-manager/programs/nvim/options.nix new file mode 100644 index 0000000..c712b7b --- /dev/null +++ b/home-manager/programs/nvim/options.nix @@ -0,0 +1,58 @@ +{ ... }: +{ + programs.nixvim = { + autoCmd = [ + { + event = [ "VimLeave" ]; + command = ":set guicursor=a:ver90-blinkon0"; + } + ]; + diagnostic.settings = { + virtual_lines = { + current_line = true; + }; + float = { + border = "rounded"; + source = "always"; + }; + }; + opts = { + shell = "nu"; + + fillchars = "eob: "; + + number = true; + relativenumber = true; + + tabstop = 4; + softtabstop = 4; + showtabline = 4; + shiftwidth = 4; + expandtab = true; + smartindent = true; + breakindent = true; + + hlsearch = true; + incsearch = true; + ignorecase = true; + smartcase = true; + + splitbelow = true; + splitright = true; + + mouse = "a"; + + updatetime = 50; + + swapfile = false; + backup = false; + undofile = true; + + scrolloff = 10; + + cursorline = true; + + wildmenu = true; + }; + }; +} diff --git a/home-manager/programs/nvim/plugins/codesnap.nix b/home-manager/programs/nvim/plugins/codesnap.nix new file mode 100644 index 0000000..60444ce --- /dev/null +++ b/home-manager/programs/nvim/plugins/codesnap.nix @@ -0,0 +1,11 @@ +{ ... }: +{ + programs.nixvim.plugins.codesnap = { + enable = true; + settings = { + has_line_number = true; + bg_theme = "grape"; + watermark = ""; + }; + }; +} diff --git a/home-manager/programs/nvim/plugins/default.nix b/home-manager/programs/nvim/plugins/default.nix new file mode 100644 index 0000000..fd4b72f --- /dev/null +++ b/home-manager/programs/nvim/plugins/default.nix @@ -0,0 +1,31 @@ +{ ... }: +{ + imports = [ + + ./codesnap.nix + ./rustaceanvim.nix + ./telescope.nix + ./toggleterm.nix + ./treesitter.nix + ]; + + programs.nixvim.plugins = { + aerial.enable = true; + bufferline.enable = true; + colorizer.enable = true; + comment.enable = true; + crates.enable = true; + fidget.enable = true; + lazygit.enable = true; + lsp-lines.enable = true; + lualine.enable = true; + nvim-tree.enable = true; + nvim-autopairs.enable = true; + quickmath.enable = true; + render-markdown.enable = true; + treesj.enable = true; + visual-multi.enable = true; + web-devicons.enable = true; + yazi.enable = true; + }; +} diff --git a/home-manager/programs/nvim/plugins/rustaceanvim.nix b/home-manager/programs/nvim/plugins/rustaceanvim.nix new file mode 100644 index 0000000..3fda538 --- /dev/null +++ b/home-manager/programs/nvim/plugins/rustaceanvim.nix @@ -0,0 +1,26 @@ +{ ... }: +{ + programs.nixvim.plugins.rustaceanvim = { + enable = true; + settings = { + tools.enable_clippy = true; + server = { + default_settings = { + inlayHints = { + lifetimeElisionHints = { + enable = "always"; + }; + }; + rust-analyzer = { + cargo = { + allFeatures = true; + }; + check = { + command = "clippy"; + }; + }; + }; + }; + }; + }; +} diff --git a/home-manager/programs/nvim/plugins/telescope.nix b/home-manager/programs/nvim/plugins/telescope.nix new file mode 100644 index 0000000..5853f46 --- /dev/null +++ b/home-manager/programs/nvim/plugins/telescope.nix @@ -0,0 +1,33 @@ +{ ... }: +{ + programs.nixvim.plugins.telescope = { + enable = true; + extensions = { + # file-browser.enable = true; + fzf-native.enable = true; + # media-files.enable = true; + }; + settings = { + pickers.colorscheme.enable_preview = true; + + defaults = { + layout_config = { + horizontal = { + prompt_position = "bottom"; + }; + }; + sorting_strategy = "descending"; + }; + }; + keymaps = { + # "" = { + # action = "find_files"; + # options.desc = "Find Project Files"; + # }; + "f" = { + action = "live_grep"; + options.desc = "Find Text"; + }; + }; + }; +} diff --git a/home-manager/programs/nvim/plugins/toggleterm.nix b/home-manager/programs/nvim/plugins/toggleterm.nix new file mode 100644 index 0000000..2b3ab3d --- /dev/null +++ b/home-manager/programs/nvim/plugins/toggleterm.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + programs.nixvim.plugins.toggleterm = { + enable = true; + settings = { + direction = "horizontal"; + float_opts = { + border = "curved"; + }; + shell = "nu"; + }; + }; +} diff --git a/home-manager/programs/nvim/plugins/treesitter.nix b/home-manager/programs/nvim/plugins/treesitter.nix new file mode 100644 index 0000000..f685ceb --- /dev/null +++ b/home-manager/programs/nvim/plugins/treesitter.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + programs.nixvim.plugins.treesitter = { + enable = true; + settings = { + auto_install = true; + highlight.enable = true; + }; + }; +} diff --git a/home-manager/programs/rofi/config.nix b/home-manager/programs/rofi/config.nix new file mode 100644 index 0000000..ee8de54 --- /dev/null +++ b/home-manager/programs/rofi/config.nix @@ -0,0 +1,25 @@ +{ config, ... }: +{ + xdg.configFile."rofi/config.rasi".text = '' + configuration{ + modi: "run,drun,window"; + lines: 5; + cycle: false; + font: "${config.stylix.fonts.serif.name} 14"; + show-icons: true; + icon-theme: "Papirus-dark"; + terminal: "foot"; + drun-display-format: "{icon} {name}"; + location: 0; + disable-history: true; + hide-scrollbar: true; + display-drun: " Apps "; + display-run: " Run "; + display-window: " Window "; + /* display-Network: " Network"; */ + sidebar-mode: true; + sorting-method: "fzf"; + } + + @theme "theme"''; +} diff --git a/home-manager/programs/rofi/default.nix b/home-manager/programs/rofi/default.nix new file mode 100644 index 0000000..9531e34 --- /dev/null +++ b/home-manager/programs/rofi/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + imports = [ + ./config.nix + ./theme.nix + ]; + + home.packages = [ + pkgs.rofi-power-menu + pkgs.rofi + ]; +} diff --git a/home-manager/programs/rofi/theme.nix b/home-manager/programs/rofi/theme.nix new file mode 100644 index 0000000..cfc331c --- /dev/null +++ b/home-manager/programs/rofi/theme.nix @@ -0,0 +1,102 @@ +{ config, ... }: +{ + xdg.configFile."rofi/theme.rasi".text = with config.stylix.base16Scheme.palette; '' + * { + bg-col: #${base00}; + bg-col-light: #${base01}; + border-col: #${base0D}; + selected-col: #${base01}; + accent: #${base0D}; + fg-col: #${base07}; + fg-col2: #${base06}; + grey: #${base04}; + } + + element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; + } + + window { + height: 530px; + width: 600px; + border: 2px; + border-color: @border-col; + background-color: @bg-col; + } + + mainbox { + background-color: @bg-col; + } + + inputbar { + children: [prompt,entry]; + background-color: @bg-col-light; + border-radius: 5px; + padding: 0px; + } + + prompt { + background-color: @accent; + padding: 4px; + text-color: @bg-col-light; + border-radius: 3px; + margin: 10px 0px 10px 10px; + } + + textbox-prompt-colon { + expand: false; + str: ":"; + } + + entry { + padding: 6px; + margin: 10px 10px 10px 5px; + text-color: @fg-col; + background-color: @bg-col; + border-radius: 3px; + } + + listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 0px 0px 6px; + columns: 1; + background-color: @bg-col; + cycle: true; + } + + element { + padding: 8px; + margin: 0px 10px 4px 4px; + background-color: @bg-col; + text-color: @fg-col; + } + + element-icon { + size: 28px; + } + + element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; + border-radius: 3px; + } + + mode-switcher { + spacing: 0; + } + + button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; + } + + button selected { + background-color: @bg-col; + text-color: @accent; + }''; +} diff --git a/home-manager/programs/starship.nix b/home-manager/programs/starship.nix new file mode 100644 index 0000000..bd3cac8 --- /dev/null +++ b/home-manager/programs/starship.nix @@ -0,0 +1,5 @@ +{...}: { + programs.starship = { + enable = true; + }; +} diff --git a/home-manager/programs/tmux.nix b/home-manager/programs/tmux.nix new file mode 100644 index 0000000..7ba6440 --- /dev/null +++ b/home-manager/programs/tmux.nix @@ -0,0 +1,7 @@ +{...}: +{ + programs.tmux = { + enable = true; + keyMode = "vi"; + }; +} diff --git a/home-manager/programs/vesktop.nix b/home-manager/programs/vesktop.nix new file mode 100644 index 0000000..70a4802 --- /dev/null +++ b/home-manager/programs/vesktop.nix @@ -0,0 +1,256 @@ +{ config, ... }: +{ + home.file.".config/vesktop/themes/base16.css".text = + with config.stylix.base16Scheme.palette; + with config.stylix.fonts; + '' + @import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); + + body { + font-family: '${monospace.name}', '${emoji.name}'; + } + + :root { + --font-primary: '${monospace.name}', '${emoji.name}'; + --font-display: '${monospace.name}', '${emoji.name}'; + --font-headline: '${monospace.name}', '${emoji.name}'; + --font-code: '${monospace.name}', '${emoji.name}'; + --font-clan-body: '${monospace.name}', '${emoji.name}'; + --font-clan-signature: '${monospace.name}', '${emoji.name}'; + --font-display-marketing: '${monospace.name}', '${emoji.name}'; + --font-display-marketing-header: '${monospace.name}', '${emoji.name}'; + --online-indicator: #${base0B}; + --dnd-indicator: #${base08}; + --idle-indicator: #${base08}; + --streaming-indicator: #${base0E}; + + --accent-1: #${base0E}; /* links */ + --accent-2: #${base0E}; /* general unread/mention elements */ + --accent-3: #${base0E}; /* accent buttons */ + --accent-4: #${base0E}; /* accent buttons when hovered */ + --accent-5: #${base0E}; /* accent buttons when clicked */ + --accent-new: #${base0E}; /* new indicator */ + --mention: #${base06}1a; /* mentions & mention messages */ + --mention-hover: #${base06}1a; /* mentions & mention messages when hovered */ + + --text-0: var(--bg-4); /* text on colored elements */ + --text-1: #${base05}; /* bright text on colored elements */ + --text-2: #${base05}; /* headings and important text */ + --text-3: #${base05}; /* normal text */ + --text-4: #${base05}; /* icon buttons and channels */ + --text-5: #${base05}; /* muted channels/chats and timestamps */ + + --bg-1: #${base03}; /* dark buttons when clicked */ + --bg-2: #${base02}; /* dark buttons */ + --bg-3: #${base01}; /* spacing, secondary elements */ + --bg-4: #${base00}; /* main background color */ + --hover: #${base03}; /* channels and buttons when hovered */ + --active: #${base03}; /* channels and buttons when clicked or selected */ + --message-hover: #${base01}1a; /* messages when hovered */ + + /* Unset unthemeable elements*/ + --login-bg-filter: none; /* login background artwork */ + --green-to-accent-3-filter: none; /* add friend page explore icon */ + --blurple-to-accent-3-filter: none; /* add friend page school icon */ + } + ''; + + programs.vesktop = { + enable = true; + vencord.settings = { + autoUpdate = true; + autoUpdateNotification = true; + useQuickCss = true; + themeLinks = [ ]; + enabledThemes = [ "base16.css" ]; + frameless = false; + transparent = false; + winCtrlQ = false; + disableMinSize = false; + winNativeTitleBar = false; + plugins = { + ChatInputButtonAPI.enabled = true; + CommandsAPI.enabled = true; + DynamicImageModalAPI.enabled = true; + MemberListDecoratorsAPI.enabled = true; + MessageAccessoriesAPI.enabled = true; + MessageDecorationsAPI.enabled = true; + MessageEventsAPI.enabled = true; + MessagePopoverAPI.enabled = true; + MessageUpdaterAPI.enabled = true; + UserSettingsAPI.enabled = true; + AlwaysExpandRoles.enabled = true; + AnonymiseFileNames.enabled = true; + BetterRoleContext.enabled = true; + BetterRoleDot = { + enabled = true; + bothStyles = false; + copyRoleColorInProfilePopout = false; + }; + BetterSessions = { + enabled = true; + backgroundCheck = false; + }; + BlurNSFW = { + enabled = true; + blurAmount = 10; + }; + CallTimer.enabled = true; + ClearURLs.enabled = true; + ConsoleJanitor = { + enabled = true; + disableLoggers = false; + disableSpotifyLogger = true; + whitelistedLoggers = "GatewaySocket; Routing/Utils"; + }; + CopyEmojiMarkdown.enabled = true; + CopyFileContents.enabled = true; + CopyUserURLs.enabled = true; + CrashHandler.enabled = true; + ExpressionCloner.enabled = true; + FakeNitro.enabled = true; + FavoriteGifSearch.enabled = true; + FixCodeblockGap.enabled = true; + FixImagesQuality.enabled = true; + FixSpotifyEmbeds.enabled = true; + FixYoutubeEmbeds.enabled = true; + ForceOwnerCrown.enabled = true; + FriendsSince.enabled = true; + FullSearchContext.enabled = true; + iLoveSpam.enabled = true; + ImplicitRelationships = { + enabled = true; + sortByAffinity = true; + }; + LoadingQuotes = { + enabled = true; + replaceEvents = true; + enableDiscordPresetQuotes = false; + additionalQuotes = ""; + additionalQuotesDelimiter = "|"; + enablePluginPresetQuotes = true; + }; + MemberCount = { + enabled = true; + memberList = true; + toolTip = true; + }; + MessageLinkEmbeds.enabled = true; + MessageLogger = { + enabled = true; + deleteStyle = "overlay"; + logDeletes = true; + collapseDeleted = false; + logEdits = true; + inlineEdits = true; + ignoreBots = false; + ignoreSelf = false; + ignoreUsers = ""; + ignoreChannels = ""; + ignoreGuilds = ""; + }; + MoreCommands.enabled = true; + MutualGroupDMs.enabled = true; + NoDevtoolsWarning.enabled = true; + NoMaskedUrlPaste.enabled = true; + NoOnboardingDelay.enabled = true; + NoProfileThemes.enabled = true; + NormalizeMessageLinks.enabled = true; + OnePingPerDM.enabled = true; + OpenInApp = { + enabled = true; + spotify = true; + }; + PermissionsViewer.enabled = true; + petpet.enabled = true; + PlatformIndicators = { + enabled = true; + colorMobileIndicator = true; + list = true; + badges = true; + messages = true; + }; + QuickMention.enabled = true; + QuickReply.enabled = true; + RelationshipNotifier.enabled = true; + RevealAllSpoilers.enabled = true; + ReverseImageSearch.enabled = true; + SendTimestamps.enabled = true; + ServerInfo.enabled = true; + ShikiCodeblocks = { + enabled = true; + useDevIcon = "GREYSCALE"; + theme = "https =//raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/dark-plus.json"; + }; + ShowHiddenChannels = { + enabled = true; + showMode = 0; + hideUnreads = true; + }; + ShowHiddenThings = { + enabled = true; + showTimeouts = true; + showInvitesPaused = true; + showModView = true; + disableDiscoveryFilters = true; + disableDisallowedDiscoveryFilters = true; + }; + SilentMessageToggle.enabled = true; + SpotifyControls = { + enabled = true; + hoverControls = false; + }; + Translate = { + enabled = true; + autoTranslate = false; + showChatBarButton = true; + }; + TypingIndicator = { + enabled = true; + includeMutedChannels = false; + includeCurrentChannel = true; + }; + TypingTweaks = { + enabled = true; + alternativeFormatting = true; + }; + UnlockedAvatarZoom.enabled = true; + UserVoiceShow = { + enabled = true; + showInUserProfileModal = true; + showInMemberList = true; + showInMessages = true; + }; + ValidReply.enabled = true; + ValidUser.enabled = true; + VoiceChatDoubleClick.enabled = true; + VcNarrator.enabled = true; + ViewIcons.enabled = true; + ViewRaw = { + enabled = true; + clickMethod = "Left"; + }; + VoiceDownload.enabled = true; + VoiceMessages.enabled = true; + VolumeBooster.enabled = true; + WebKeybinds.enabled = true; + WebScreenShareFixes.enabled = true; + WhoReacted.enabled = true; + YoutubeAdblock.enabled = true; + NoTrack = { + enabled = true; + disableAnalytics = true; + }; + WebContextMenus = { + enabled = true; + addBack = true; + }; + Settings = { + enabled = true; + settingsLocation = "aboveNitro"; + }; + SupportHelper.enabled = true; + }; + }; + }; +} diff --git a/home-manager/programs/waybar.nix b/home-manager/programs/waybar.nix new file mode 100644 index 0000000..4431cd9 --- /dev/null +++ b/home-manager/programs/waybar.nix @@ -0,0 +1,139 @@ +{ config, ... }: +{ + home.file.".config/waybar/config".text = '' + { + "position": "top", + "spacing": 4, + "modules-left": ["custom/icon", "ext/workspaces", "tray"], + "modules-center": ["clock"], + "modules-right": ["pulseaudio", "cpu", "memory", "temperature", "battery"], + "custom/icon": { + "format": " ", + "tooltip": false + }, + "tray": { + "spacing": 10 + }, + "clock": { + "format": "{:L%Y-%m-%d[%a] %p%I:%M}" + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": " {}%" + }, + "temperature": { + "thermal-zone": 2, + "critical-threshold": 80, + "format-critical": "{icon} {temperatureC}°C", + "format": "{icon} {temperatureC}°C", + "format-icons": ["", "", ""] + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon} {time}", + "format-icons": ["", "", "", "", ""] + }, + "pulseaudio": { + "scroll-step": 5, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": " {icon} {volume}% {format_source}", + "format-bluetooth-muted": "  {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": " {volume}%", + "format-source-muted": "", + "format-icons": { + "default": ["", "", ""] + }, + "on-click-right": "pavucontrol", + }, + } + ''; + programs.waybar = { + enable = true; + style = '' + * { + font-family: "${config.stylix.fonts.serif.name}"; + font-size: 16px; + min-height: 10px; + } + + #custom-icon, + #workspaces, + #tray, + #clock, + #pulseaudio, + #cpu, + #memory, + #temperature, + #battery { + border-width: 2px; + border-style: solid; + border-color: #${config.stylix.base16Scheme.palette.base0D}; + border-radius: 10px; + margin-top: 6px; + margin-left: 8px; + padding-left: 10px; + margin-bottom: 0px; + padding-right: 10px; + border-radius: 10px; + transition: none; + color: #${config.stylix.base16Scheme.palette.base05}; + background: #${config.stylix.base16Scheme.palette.base00}; + } + + #custom-icon { + margin-left: 10px; + } + #memory { + margin-right: 10px; + } + + + window#waybar { + background: transparent; + } + + window#waybar.hidden { + opacity: 0.2; + } + + #window { + margin-top: 6px; + padding-left: 10px; + padding-right: 10px; + border-radius: 10px; + transition: none; + color: transparent; + background: transparent; + } + + #battery.critical:not(.charging) { + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + + @keyframes blink { + to { + background-color: #${config.stylix.base16Scheme.palette.base08}; + } + } + + #workspaces button.active { + color: #${config.stylix.base16Scheme.palette.base0E}; + } + ''; + }; +} diff --git a/home-manager/programs/yazi.nix b/home-manager/programs/yazi.nix new file mode 100644 index 0000000..eba75bb --- /dev/null +++ b/home-manager/programs/yazi.nix @@ -0,0 +1,6 @@ +{...}: { + programs.yazi = { + enable = true; + enableZshIntegration = true; + }; +} diff --git a/home-manager/programs/zathura.nix b/home-manager/programs/zathura.nix new file mode 100644 index 0000000..d8aefa4 --- /dev/null +++ b/home-manager/programs/zathura.nix @@ -0,0 +1,37 @@ +{config, ...}: +{ + programs.zathura = { + enable = true; + options = with config.stylix.base16Scheme.palette; { + font = "${config.stylix.fonts.serif.name} 14"; + + default-fg = "#${base05}"; + default-bg = "#${base00}"; + completion-bg = "#${base02}"; + completion-fg = "#${base05}"; + completion-highlight-bg = "#${base04}"; + completion-highlight-fg = "#${base05}"; + completion-group-bg = "#${base02}"; + completion-group-fg = "#${base0E}"; + statusbar-fg = "#${base05}"; + statusbar-bg = "#${base02}"; + notification-bg = "#${base02}"; + notification-fg = "#${base05}"; + notification-error-bg = "#${base02}"; + notification-error-fg = "#${base08}"; + notification-warning-bg = "#${base02}"; + notification-warning-fg = "#${base09}"; + inputbar-fg = "#${base05}"; + inputbar-bg = "#${base02}"; + index-fg = "#${base05}"; + index-bg = "#${base00}"; + index-active-fg = "#${base05}"; + index-active-bg = "#${base02}"; + render-loading-bg = "#${base00}"; + render-loading-fg = "#${base05}"; + recolor-lightcolor = "#${base00}"; + recolor-darkcolor = "#${base05}"; + recolor = "true"; + }; + }; +} diff --git a/home-manager/programs/zen.nix b/home-manager/programs/zen.nix new file mode 100644 index 0000000..41b0d29 --- /dev/null +++ b/home-manager/programs/zen.nix @@ -0,0 +1,139 @@ +{ config, pkgs, ... }: +let + betterfox = pkgs.fetchFromGitHub { + owner = "yokoffing"; + repo = "Betterfox"; + rev = "116.1"; + hash = "sha256-Ai8Szbrk/4FhGhS4r5gA2DqjALFRfQKo2a/TwWCIA6g="; + }; + + catppuccinUserChrome = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "zen-browser"; + rev = "0893393f721facb884365a318111c4a7fce96b45"; + hash = "sha256-+Nf7TUairZBnhYCFVBqiQW9QodV/xWSOnH6X9o6S7rM="; + }; + replaceWithStylixColours = + textFile: + with config.stylix.base16Scheme.palette; + builtins.replaceStrings + [ + "1e1e2e" + "181825" + "313244" + "45475a" + "585b70" + "cdd6f4" + "f5e0dc" + "b4befe" + "f38ba8" + "fab387" + "f9e2af" + "a6e3a1" + "94e2d5" + "89b4fa" + "cba6f7" + "f2cdcd" + ] + [ + base00 + base01 + base02 + base03 + base04 + base05 + base06 + base07 + base08 + base09 + base0A + base0B + base0C + base0D + base0E + base0F + ] + (builtins.readFile textFile); + + userChromeText = replaceWithStylixColours "${catppuccinUserChrome}/themes/Mocha/Mauve/userChrome.css"; + userContentText = replaceWithStylixColours "${catppuccinUserChrome}/themes/Mocha/Mauve/userContent.css"; + +in +{ + home.file.".zen/default/chrome/userChrome.css".text = userChromeText; + home.file.".zen/default/chrome/userContent.css".text = userContentText; + programs.zen-browser = { + enable = true; + policies = { + DisableTelemtry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxAccounts = true; + DisableAccounts = true; + DisableFirefoxScreenshots = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + SearchBar = "unified"; # alternative: "separate" + ExtensionSettings = { + # uBlock Origin: + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + + "sponsorBlocker@ajay.app" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorBlocker@ajay.app/latest.xpi"; + installation_mode = "force_installed"; + }; + + # "languagetool-webextension@languagetool.org" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/languagetool-webextension@languagetool.org/latest.xpi"; + # installation_mode = "force_installed"; + # }; + + # Return dislikes to YouTube + "{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/{762f9885-5a13-4abd-9c77-433dcd38b8fd}/latest.xpi"; + installation_mode = "force_installed"; + }; + + # Catppuccin Mocha Mauve + "{76aabc99-c1a8-4c1e-832b-d4f2941d5a7a}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-mocha-mauve-git/latest.xpi"; + installation_mode = "force_installed"; + }; + + # Vimium C + # "vimium-c@gdh1995.cn" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/vimium-c@gdh1995.cn/latest.xpi"; + # installation_mode = "force_installed"; + # }; + + # Dark Reader + "addon@darkreader.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/addon@darkreader.org/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + }; + + profiles.default = { + id = 0; + isDefault = true; + extraConfig = builtins.concatStringsSep "\n" [ + (builtins.readFile "${betterfox}/Securefox.js") + (builtins.readFile "${betterfox}/Fastfox.js") + (builtins.readFile "${betterfox}/Peskyfox.js") + ]; + }; + }; +} diff --git a/home-manager/programs/zoxide.nix b/home-manager/programs/zoxide.nix new file mode 100644 index 0000000..2ab0513 --- /dev/null +++ b/home-manager/programs/zoxide.nix @@ -0,0 +1,7 @@ +{...}: +{ + programs.zoxide = { + enable = true; + enableNushellIntegration = true; + }; +} diff --git a/home-manager/stylix.nix b/home-manager/stylix.nix new file mode 100644 index 0000000..ce7a35d --- /dev/null +++ b/home-manager/stylix.nix @@ -0,0 +1,82 @@ +{ + inputs, + pkgs, + ... +}: +{ + stylix = + let + palette = { + base00 = "11111a"; # 11111a + base01 = "181825"; # 181825 + base02 = "313244"; # 313244 + base03 = "45475a"; # 45475a + base04 = "585b70"; # 585b70 + base05 = "cdd6f4"; # cdd6f4 + base06 = "f5e0dc"; # f5e0dc + base07 = "b4befe"; # b4befe + base08 = "f38ba8"; # f38ba8 + base09 = "fab387"; # fab387 + base0A = "f9e2af"; # f9e2af + base0B = "a6e3a1"; # a6e3a1 + base0C = "94e2d5"; # 94e2d5 + base0D = "89b4fa"; # 89b4fa + base0E = "cba6f7"; # cba6f7 + base0F = "f2cdcd"; # f2cdcd + + #base00 = "1d2021"; #1d2021 + #base01 = "3c3836"; #3c3836 + #base02 = "504945"; #504945 + #base03 = "665c54"; #665c54 + #base04 = "bdae93"; #bdae93 + #base05 = "d5c4a1"; #d5c4a1 + #base06 = "ebdbb2"; #ebdbb2 + #base07 = "fbf1c7"; #fbf1c7 + #base08 = "fb4934"; #fb4934 + #base09 = "fe8019"; #fe8019 + #base0A = "fabd2f"; #fabd2f + #base0B = "b8bb26"; #b8bb26 + #base0C = "8ec07c"; #8ec07c + #base0D = "83a598"; #83a598 + #base0E = "d3869b"; #d3869b + #base0F = "d65d0e"; #d65d0e + }; + wallpaper = inputs.nix-wallpaper.packages.${pkgs.stdenv.hostPlatform.system}.default.override { + width = 2560; + height = 1440; + backgroundColor = "#${palette.base00}"; + logoColors = { + color0 = "#${palette.base0D}"; + color1 = "#${palette.base0D}"; + color2 = "#${palette.base0D}"; + color3 = "#${palette.base0D}"; + color4 = "#${palette.base0D}"; + color5 = "#${palette.base0D}"; + }; + }; + in + + { + enable = true; + image = "${wallpaper}/share/wallpapers/nixos-wallpaper.png"; + polarity = "dark"; + targets.waybar.enable = false; + targets.zathura.enable = false; + targets.vesktop.enable = false; + targets.zen-browser.enable = false; + fonts = + let + font = { + package = pkgs.nerd-fonts.caskaydia-cove; + name = "CaskaydiaCove Nerd Font"; + }; + in + { + monospace = font; + serif = font; + sansSerif = font; + emoji = font; + }; + base16Scheme.palette = palette; + }; +} diff --git a/home-manager/xdg.nix b/home-manager/xdg.nix new file mode 100644 index 0000000..3befe01 --- /dev/null +++ b/home-manager/xdg.nix @@ -0,0 +1,14 @@ +{...}: +{ + xdg.mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = [ "org.pwmt.zathura.desktop" ]; + "application/json" = [ "zen-beta.desktop" ]; + "text/html" = [ "zen-beta.desktop" ]; + "text/xml" = [ "zen-beta.desktop" ]; + "x-scheme-handler/http" = [ "zen-beta.desktop" ]; + "x-scheme-handler/https" = [ "zen-beta.desktop" ]; + }; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 0000000..df02d7f --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,117 @@ +{ pkgs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.tmp.cleanOnBoot = true; + + networking.hostName = "nixos"; + + hardware.graphics.enable = true; + + networking.networkmanager.enable = true; + + time.timeZone = "America/Toronto"; + + i18n.defaultLocale = "en_CA.UTF-8"; + + services.udev.extraRules = '' + SUBSYSTEMS=="usb", ATTR{idVendor}=="*", MODE:="0666" + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" + ''; + + services.gnome.glib-networking.enable = true; + + programs.hyprland = { + enable = true; + }; + + services.displayManager.sddm = { + enable = true; + theme = "catppuccin-mocha-mauve"; + wayland.enable = true; + package = pkgs.kdePackages.sddm; + }; + + programs.steam = { + enable = true; + }; + + services.blueman.enable = true; + + services.printing.enable = true; + + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + users.users.autumn = { + isNormalUser = true; + description = "Autumn"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + packages = [ ]; + shell = pkgs.nushell; + }; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + programs.dconf.enable = true; + + environment.systemPackages = with pkgs; [ + pavucontrol + wget + networkmanagerapplet + nh + gparted + (pkgs.catppuccin-sddm.override { + flavor = "mocha"; + font = "CaskaydiaCove Nerd Font"; + fontSize = "12"; + }) + ]; + + fonts = { + packages = [ + pkgs.nerd-fonts.caskaydia-cove + ]; + fontconfig = { + defaultFonts = + let + font = "CaskaydiaCove Nerd Font"; + in + { + serif = [ font ]; + sansSerif = [ font ]; + monospace = [ font ]; + emoji = [ font ]; + }; + }; + }; + + environment.sessionVariables = { + EDITOR = "nvim"; + BROWSER = "zen"; + SUDO_EDITOR = "nvim"; + SHELL = "nu"; + }; + + system.stateVersion = "24.05"; +} diff --git a/screenshots/preview.png b/screenshots/preview.png new file mode 100644 index 0000000..38c4e6f Binary files /dev/null and b/screenshots/preview.png differ