diff --git a/flake.lock b/flake.lock index 13b151a..005de11 100644 --- a/flake.lock +++ b/flake.lock @@ -135,23 +135,6 @@ "type": "github" } }, - "dirt-samples-src": { - "flake": false, - "locked": { - "lastModified": 1588278411, - "narHash": "sha256-h8vQxRym6QzNLOTZU7A43VCHuG0H77l+BFwXnC0L1CE=", - "owner": "tidalcycles", - "repo": "dirt-samples", - "rev": "66d432418c9a7d82cf049d9246adfa62f46df2a6", - "type": "github" - }, - "original": { - "owner": "tidalcycles", - "ref": "master", - "repo": "dirt-samples", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -237,7 +220,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1726560853, @@ -254,42 +237,6 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { "inputs": { "systems": [ "stylix", @@ -522,11 +469,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1729629261, - "narHash": "sha256-Wkq4PDhmSah51I4HWQLYXhXLhQXQs9ksdu/8KpI7s0g=", + "lastModified": 1729641085, + "narHash": "sha256-xNP2Ip8YUaNekTpq9Oj7DTbFdHVSZJ/u7y2HkdS2f/c=", "owner": "hyprwm", "repo": "hyprland", - "rev": "29997ef4ba8ef0a80390e80199998d1390177454", + "rev": "2b6ff6837e81a3b459f2f3cc366830c420a7a62e", "type": "github" }, "original": { @@ -589,57 +536,6 @@ "type": "github" } }, - "hyprlang_2": { - "inputs": { - "hyprutils": [ - "hyprpaper", - "hyprutils" - ], - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1725188252, - "narHash": "sha256-yBH8c4GDaEAtBrh+BqIlrx5vp6gG/Gu8fQQK63KAQgs=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "c12ab785ce1982f82594aff03b3104c598186ddd", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprpaper": { - "inputs": { - "hyprlang": "hyprlang_2", - "hyprutils": "hyprutils_2", - "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_2", - "systems": "systems_2" - }, - "locked": { - "lastModified": 1725200438, - "narHash": "sha256-3Cqu8jz19YyWqhneac6QFfadlyxZ4s3saSLmmpYMOe4=", - "owner": "hyprwm", - "repo": "hyprpaper", - "rev": "1c18ad65032adb891b341292a1edf9e13adf4751", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprpaper", - "type": "github" - } - }, "hyprutils": { "inputs": { "nixpkgs": [ @@ -665,31 +561,6 @@ "type": "github" } }, - "hyprutils_2": { - "inputs": { - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1724966483, - "narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, "hyprwayland-scanner": { "inputs": { "nixpkgs": [ @@ -715,31 +586,6 @@ "type": "github" } }, - "hyprwayland-scanner_2": { - "inputs": { - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1721324119, - "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, "ironbar": { "inputs": { "crane": "crane", @@ -763,31 +609,9 @@ "type": "github" } }, - "nadiavim": { - "inputs": { - "flake-utils": "flake-utils", - "neovim-flake": "neovim-flake", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1727028235, - "narHash": "sha256-02oKFGqg8DRrNlVJ6BfiWj0Tn4ywBDcJUmLZEOeu5ls=", - "owner": "nyadiia", - "repo": "nadiavim-nix", - "rev": "6d574d56243b5e1541b2d35db094f904cf3682a8", - "type": "github" - }, - "original": { - "owner": "nyadiia", - "repo": "nadiavim-nix", - "type": "github" - } - }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1721727458, @@ -803,140 +627,6 @@ "type": "github" } }, - "naersk_2": { - "inputs": { - "nixpkgs": [ - "nadiavim", - "neovim-flake", - "rnix-lsp", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1655042882, - "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=", - "owner": "nix-community", - "repo": "naersk", - "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "neovim-flake": { - "inputs": { - "flake-utils": "flake-utils_2", - "nil": "nil", - "nixpkgs": "nixpkgs_4", - "nmd": "nmd", - "plugin-bufdelete-nvim": "plugin-bufdelete-nvim", - "plugin-catppuccin": "plugin-catppuccin", - "plugin-ccls-nvim": "plugin-ccls-nvim", - "plugin-chatgpt-nvim": "plugin-chatgpt-nvim", - "plugin-cmp-buffer": "plugin-cmp-buffer", - "plugin-cmp-dap": "plugin-cmp-dap", - "plugin-cmp-nvim-lsp": "plugin-cmp-nvim-lsp", - "plugin-cmp-path": "plugin-cmp-path", - "plugin-cmp-treesitter": "plugin-cmp-treesitter", - "plugin-cmp-vsnip": "plugin-cmp-vsnip", - "plugin-crates-nvim": "plugin-crates-nvim", - "plugin-dracula": "plugin-dracula", - "plugin-dracula-nvim": "plugin-dracula-nvim", - "plugin-fidget": "plugin-fidget", - "plugin-gitsigns-nvim": "plugin-gitsigns-nvim", - "plugin-glow-nvim": "plugin-glow-nvim", - "plugin-gruvbox": "plugin-gruvbox", - "plugin-gruvbox-material": "plugin-gruvbox-material", - "plugin-indent-blankline": "plugin-indent-blankline", - "plugin-kommentary": "plugin-kommentary", - "plugin-lsp-signature": "plugin-lsp-signature", - "plugin-lspkind": "plugin-lspkind", - "plugin-lspsaga": "plugin-lspsaga", - "plugin-lualine": "plugin-lualine", - "plugin-nui-nvim": "plugin-nui-nvim", - "plugin-null-ls": "plugin-null-ls", - "plugin-nvim-autopairs": "plugin-nvim-autopairs", - "plugin-nvim-bufferline-lua": "plugin-nvim-bufferline-lua", - "plugin-nvim-cmp": "plugin-nvim-cmp", - "plugin-nvim-code-action-menu": "plugin-nvim-code-action-menu", - "plugin-nvim-cursorline": "plugin-nvim-cursorline", - "plugin-nvim-dap": "plugin-nvim-dap", - "plugin-nvim-dap-ui": "plugin-nvim-dap-ui", - "plugin-nvim-dap-virtual-text": "plugin-nvim-dap-virtual-text", - "plugin-nvim-lightbulb": "plugin-nvim-lightbulb", - "plugin-nvim-lspconfig": "plugin-nvim-lspconfig", - "plugin-nvim-neoclip": "plugin-nvim-neoclip", - "plugin-nvim-tree-lua": "plugin-nvim-tree-lua", - "plugin-nvim-treesitter-context": "plugin-nvim-treesitter-context", - "plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag", - "plugin-nvim-web-devicons": "plugin-nvim-web-devicons", - "plugin-onedark": "plugin-onedark", - "plugin-open-browser": "plugin-open-browser", - "plugin-oxocarbon": "plugin-oxocarbon", - "plugin-plantuml-previewer": "plugin-plantuml-previewer", - "plugin-plantuml-syntax": "plugin-plantuml-syntax", - "plugin-plenary-nvim": "plugin-plenary-nvim", - "plugin-registers": "plugin-registers", - "plugin-rust-tools": "plugin-rust-tools", - "plugin-scnvim": "plugin-scnvim", - "plugin-sqls-nvim": "plugin-sqls-nvim", - "plugin-telescope": "plugin-telescope", - "plugin-telescope-file-browser": "plugin-telescope-file-browser", - "plugin-telescope-live-grep-args": "plugin-telescope-live-grep-args", - "plugin-todo-comments": "plugin-todo-comments", - "plugin-tokyonight": "plugin-tokyonight", - "plugin-trouble": "plugin-trouble", - "plugin-vim-be-good": "plugin-vim-be-good", - "plugin-vim-vsnip": "plugin-vim-vsnip", - "plugin-which-key": "plugin-which-key", - "rnix-lsp": "rnix-lsp", - "tidalcycles": "tidalcycles" - }, - "locked": { - "lastModified": 1727026553, - "narHash": "sha256-OvUXwWH2eYmoGu5RiV8l8E3qxPxNEPTFsn7wIlyhuY8=", - "owner": "nyadiia", - "repo": "neovim-flake", - "rev": "a742de46d9cfebbbe6834d154a0541ed4519d231", - "type": "github" - }, - "original": { - "owner": "nyadiia", - "repo": "neovim-flake", - "type": "github" - } - }, - "nil": { - "inputs": { - "flake-utils": [ - "nadiavim", - "neovim-flake", - "flake-utils" - ], - "nixpkgs": [ - "nadiavim", - "neovim-flake", - "nixpkgs" - ], - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1697710615, - "narHash": "sha256-YL63eoy3C/WeDxwctbv9dJBjqBabx8cO7lVTlVn3FVI=", - "owner": "oxalica", - "repo": "nil", - "rev": "bd93024db616a528473a7210d2756c7118155de9", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "nil", - "type": "github" - } - }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -1064,22 +754,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1725103162, - "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1727716680, "narHash": "sha256-uMVkVHL4r3QmlZ1JM+UoJwxqa46cgHnIfqGzVlw5ca4=", @@ -1093,39 +767,7 @@ "type": "indirect" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1697793076, - "narHash": "sha256-02e7sCuqLtkyRgrZmdOyvAcQTQdcXj+vpyp9bca6cY4=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "038b2922be3fc096e1d456f93f7d0f4090628729", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1655400192, - "narHash": "sha256-49OBVVRgb9H/PSmNT9W61+NRdDbuSJVuDDflwXlaUKU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3d7435c638baffaa826b85459df0fff47f12317d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { + "nixpkgs_3": { "locked": { "lastModified": 1729413321, "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", @@ -1169,25 +811,9 @@ "type": "github" } }, - "nmd": { - "flake": false, - "locked": { - "lastModified": 1687627428, - "narHash": "sha256-7zGfXuNS5RHqhpEdz2fwrtqvF86JRo5U1hrxZSYgcm8=", - "owner": "~rycee", - "repo": "nmd", - "rev": "824a380546b5d0d0eb701ff8cd5dbafb360750ff", - "type": "sourcehut" - }, - "original": { - "owner": "~rycee", - "repo": "nmd", - "type": "sourcehut" - } - }, "nuschtosSearch": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils", "nixpkgs": [ "nixvim", "nixpkgs" @@ -1207,1087 +833,67 @@ "type": "github" } }, - "plugin-bufdelete-nvim": { - "flake": false, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1688027130, - "narHash": "sha256-UubYRfRAXZ89WOc3QFMvAMjNjLW6bV4nDgSa1CRZkIM=", - "owner": "famiu", - "repo": "bufdelete.nvim", - "rev": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4", + "lastModified": 1728778939, + "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "ff68f91754be6f3427e4986d7949e6273659be1d", "type": "github" }, "original": { - "owner": "famiu", - "repo": "bufdelete.nvim", + "owner": "cachix", + "repo": "git-hooks.nix", "type": "github" } }, - "plugin-catppuccin": { - "flake": false, + "root": { + "inputs": { + "home-manager": "home-manager", + "hyprland": "hyprland", + "ironbar": "ironbar", + "nix-index-database": "nix-index-database", + "nix-matlab": "nix-matlab", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs_3", + "nixpkgs-small": "nixpkgs-small", + "nixvim": "nixvim", + "ssh-keys": "ssh-keys", + "stylix": "stylix" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1693724339, - "narHash": "sha256-QYW7XS7lBVxZeoodep250qL3zPTc04tQ6hRH8D6NoeU=", - "owner": "catppuccin", - "repo": "nvim", - "rev": "81096cabe67f360acb06d64c0f7db8dd840afeba", + "lastModified": 1727663505, + "narHash": "sha256-83j/GrHsx8GFUcQofKh+PRPz6pz8sxAsZyT/HCNdey8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "c2099c6c7599ea1980151b8b6247a8f93e1806ee", "type": "github" }, "original": { - "owner": "catppuccin", - "repo": "nvim", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "plugin-ccls-nvim": { - "flake": false, - "locked": { - "lastModified": 1693106648, - "narHash": "sha256-GQkBm3B3v0Xb37uWN/Baqmqh1TMLds7t+DCiJ/vUZKA=", - "owner": "MCGHH", - "repo": "ccls.nvim", - "rev": "f79b041353d5bb4b439cf5d3b00353c362428007", - "type": "github" - }, - "original": { - "owner": "MCGHH", - "repo": "ccls.nvim", - "type": "github" - } - }, - "plugin-chatgpt-nvim": { - "flake": false, - "locked": { - "lastModified": 1692164307, - "narHash": "sha256-Mzp0WWND9N9lLZjqWq/4ohxZjrsUwX8tR9qscfgBbZM=", - "owner": "jackMort", - "repo": "ChatGPT.nvim", - "rev": "fba5423b3ddf0b67ada2bbb4d5f66d9cf76c996a", - "type": "github" - }, - "original": { - "owner": "jackMort", - "repo": "ChatGPT.nvim", - "type": "github" - } - }, - "plugin-cmp-buffer": { - "flake": false, - "locked": { - "lastModified": 1660101488, - "narHash": "sha256-dG4U7MtnXThoa/PD+qFtCt76MQ14V1wX8GMYcvxEnbM=", - "owner": "hrsh7th", - "repo": "cmp-buffer", - "rev": "3022dbc9166796b644a841a02de8dd1cc1d311fa", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "cmp-buffer", - "type": "github" - } - }, - "plugin-cmp-dap": { - "flake": false, - "locked": { - "lastModified": 1668340530, - "narHash": "sha256-w+gGaZxXjb2B0dMXhfduEQKtO5CmQnuUdh4otpcsFuc=", - "owner": "rcarriga", - "repo": "cmp-dap", - "rev": "d16f14a210cd28988b97ca8339d504533b7e09a4", - "type": "github" - }, - "original": { - "owner": "rcarriga", - "repo": "cmp-dap", - "type": "github" - } - }, - "plugin-cmp-nvim-lsp": { - "flake": false, - "locked": { - "lastModified": 1687494203, - "narHash": "sha256-mU0soCz79erJXMMqD/FyrJZ0mu2n6fE0deymPzQlxts=", - "owner": "hrsh7th", - "repo": "cmp-nvim-lsp", - "rev": "44b16d11215dce86f253ce0c30949813c0a90765", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "cmp-nvim-lsp", - "type": "github" - } - }, - "plugin-cmp-path": { - "flake": false, - "locked": { - "lastModified": 1664784283, - "narHash": "sha256-thppiiV3wjIaZnAXmsh7j3DUc6ceSCvGzviwFUnoPaI=", - "owner": "hrsh7th", - "repo": "cmp-path", - "rev": "91ff86cd9c29299a64f968ebb45846c485725f23", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "cmp-path", - "type": "github" - } - }, - "plugin-cmp-treesitter": { - "flake": false, - "locked": { - "lastModified": 1680745848, - "narHash": "sha256-WOcg6w4M20gpMCZjZ3DpPIA55SGLjV75fhckefiVfU0=", - "owner": "ray-x", - "repo": "cmp-treesitter", - "rev": "389eadd48c27aa6dc0e6b992644704f026802a2e", - "type": "github" - }, - "original": { - "owner": "ray-x", - "repo": "cmp-treesitter", - "type": "github" - } - }, - "plugin-cmp-vsnip": { - "flake": false, - "locked": { - "lastModified": 1669100283, - "narHash": "sha256-2mkN03noOr5vBvRbSb35xZKorSH+8savQNZtgM9+QcM=", - "owner": "hrsh7th", - "repo": "cmp-vsnip", - "rev": "989a8a73c44e926199bfd05fa7a516d51f2d2752", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "cmp-vsnip", - "type": "github" - } - }, - "plugin-crates-nvim": { - "flake": false, - "locked": { - "lastModified": 1691500743, - "narHash": "sha256-09tqoU9zo32+zpP/ybo6bbDxmdzAcr3a0xU7ZKuN3pg=", - "owner": "Saecki", - "repo": "crates.nvim", - "rev": "d5caf28aba49e81ac4099426231f3cf3c151013a", - "type": "github" - }, - "original": { - "owner": "Saecki", - "repo": "crates.nvim", - "type": "github" - } - }, - "plugin-dracula": { - "flake": false, - "locked": { - "lastModified": 1693414417, - "narHash": "sha256-LWOQNsHDuPV+r3hCGD0Z0VTmXTVHpTxVwBnAOkB8j7k=", - "owner": "dracula", - "repo": "vim", - "rev": "b2cc39273abbb6b38a3d173d2a5d8c2d1c79fc19", - "type": "github" - }, - "original": { - "owner": "dracula", - "repo": "vim", - "type": "github" - } - }, - "plugin-dracula-nvim": { - "flake": false, - "locked": { - "lastModified": 1690594744, - "narHash": "sha256-gblqxRTphGBpEOx57/4oU/B50O0OguIm1bFtd4LXuQ4=", - "owner": "Mofiqul", - "repo": "dracula.nvim", - "rev": "9fe831e685a76e1a1898a694623b33247c4d036c", - "type": "github" - }, - "original": { - "owner": "Mofiqul", - "repo": "dracula.nvim", - "type": "github" - } - }, - "plugin-fidget": { - "flake": false, - "locked": { - "lastModified": 1689723284, - "narHash": "sha256-gmpRk1b/fpNRPUPBA9UnYbmiGRoW5otzW9Nfcfvju74=", - "owner": "j-hui", - "repo": "fidget.nvim", - "rev": "89b633f3bd0b7187f070236b348697de176860e2", - "type": "github" - }, - "original": { - "owner": "j-hui", - "repo": "fidget.nvim", - "type": "github" - } - }, - "plugin-gitsigns-nvim": { - "flake": false, - "locked": { - "lastModified": 1693635939, - "narHash": "sha256-yu0AJlUTXGeqP4jujrqnqEFMONAp9juZbH4AqUkOKG4=", - "owner": "lewis6991", - "repo": "gitsigns.nvim", - "rev": "d927caa075df63bf301d92f874efb72fd22fd3b4", - "type": "github" - }, - "original": { - "owner": "lewis6991", - "repo": "gitsigns.nvim", - "type": "github" - } - }, - "plugin-glow-nvim": { - "flake": false, - "locked": { - "lastModified": 1693233815, - "narHash": "sha256-vdlwkIK2EkFviJmSiOqPWvc15xqJ9F2gHCC4ObJ5Qjk=", - "owner": "ellisonleao", - "repo": "glow.nvim", - "rev": "5b38fb7b6e806cac62707a4aba8c10c5f14d5bb5", - "type": "github" - }, - "original": { - "owner": "ellisonleao", - "repo": "glow.nvim", - "type": "github" - } - }, - "plugin-gruvbox": { - "flake": false, - "locked": { - "lastModified": 1693331204, - "narHash": "sha256-Ri6/UC3znCJLgzzDxEqczpfwxvsb/VTTzek5Y96OKkU=", - "owner": "ellisonleao", - "repo": "gruvbox.nvim", - "rev": "7fb36e0f67aa6f3d7f3e54f37ca7032ea1af0b59", - "type": "github" - }, - "original": { - "owner": "ellisonleao", - "repo": "gruvbox.nvim", - "type": "github" - } - }, - "plugin-gruvbox-material": { - "flake": false, - "locked": { - "lastModified": 1725257694, - "narHash": "sha256-ZaFYnEyLsjtF96Hu0Ohvm0MLi6qjU228j32YXmpYsUQ=", - "owner": "sainnhe", - "repo": "gruvbox-material", - "rev": "559b4a9abb6781699404dfd98fb7d6ec83113337", - "type": "github" - }, - "original": { - "owner": "sainnhe", - "repo": "gruvbox-material", - "type": "github" - } - }, - "plugin-indent-blankline": { - "flake": false, - "locked": { - "lastModified": 1692667843, - "narHash": "sha256-1EpjFIJ5GK9NXS6dTMJ71w/AtLtR6Q5HrAXCIRNOBAY=", - "owner": "lukas-reineke", - "repo": "indent-blankline.nvim", - "rev": "9637670896b68805430e2f72cf5d16be5b97a22a", - "type": "github" - }, - "original": { - "owner": "lukas-reineke", - "repo": "indent-blankline.nvim", - "type": "github" - } - }, - "plugin-kommentary": { - "flake": false, - "locked": { - "lastModified": 1672983049, - "narHash": "sha256-N4n5tjNB1yX/QxH+t5aG0VxNwZhUJejv0b5V62WEKDU=", - "owner": "b3nj5m1n", - "repo": "kommentary", - "rev": "3a80117148c6798972bb69414423311ab151d368", - "type": "github" - }, - "original": { - "owner": "b3nj5m1n", - "repo": "kommentary", - "type": "github" - } - }, - "plugin-lsp-signature": { - "flake": false, - "locked": { - "lastModified": 1690267930, - "narHash": "sha256-qvcs0KuO2/NdtiTZIxJ2vrwV0I5PjzjMvoAePPasaJM=", - "owner": "ray-x", - "repo": "lsp_signature.nvim", - "rev": "58d4e810801da74c29313da86075d6aea537501f", - "type": "github" - }, - "original": { - "owner": "ray-x", - "repo": "lsp_signature.nvim", - "type": "github" - } - }, - "plugin-lspkind": { - "flake": false, - "locked": { - "lastModified": 1683275543, - "narHash": "sha256-S+qZm51hw/cRujIfHV/1x1fYyCKI4XQ0utSL8uy4l6I=", - "owner": "onsails", - "repo": "lspkind-nvim", - "rev": "57610d5ab560c073c465d6faf0c19f200cb67e6e", - "type": "github" - }, - "original": { - "owner": "onsails", - "repo": "lspkind-nvim", - "type": "github" - } - }, - "plugin-lspsaga": { - "flake": false, - "locked": { - "lastModified": 1670360222, - "narHash": "sha256-7ENInq3LAPPTdm0Fb7klOc630j8m4LRj1kLZZFYLh68=", - "owner": "tami5", - "repo": "lspsaga.nvim", - "rev": "5faeec9f2508d2d49a66c0ac0d191096b4e3fa81", - "type": "github" - }, - "original": { - "owner": "tami5", - "repo": "lspsaga.nvim", - "type": "github" - } - }, - "plugin-lualine": { - "flake": false, - "locked": { - "lastModified": 1691046210, - "narHash": "sha256-v8finXk+sLNaFMA7pSHhEu0WF5mhPYWHEKhl0IKBv8c=", - "owner": "hoob3rt", - "repo": "lualine.nvim", - "rev": "45e27ca739c7be6c49e5496d14fcf45a303c3a63", - "type": "github" - }, - "original": { - "owner": "hoob3rt", - "repo": "lualine.nvim", - "type": "github" - } - }, - "plugin-nui-nvim": { - "flake": false, - "locked": { - "lastModified": 1693333178, - "narHash": "sha256-TiY5KeWLP7HdV85lnuUjxdWLkqXptu3kBi/YYGYzXuU=", - "owner": "MunifTanjim", - "repo": "nui.nvim", - "rev": "aa1b4c1e05983ff7debd2b4b2788651db099de2f", - "type": "github" - }, - "original": { - "owner": "MunifTanjim", - "repo": "nui.nvim", - "type": "github" - } - }, - "plugin-null-ls": { - "flake": false, - "locked": { - "lastModified": 1691810493, - "narHash": "sha256-cWA0rzkOp/ekVKaFee7iea1lhnqKtWUIU+fW5M950wI=", - "owner": "jose-elias-alvarez", - "repo": "null-ls.nvim", - "rev": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7", - "type": "github" - }, - "original": { - "owner": "jose-elias-alvarez", - "repo": "null-ls.nvim", - "type": "github" - } - }, - "plugin-nvim-autopairs": { - "flake": false, - "locked": { - "lastModified": 1693609766, - "narHash": "sha256-oQAPT9ttziAiXUQzC7J9A1NygEk7+0MuTHwILPE3Vi4=", - "owner": "windwp", - "repo": "nvim-autopairs", - "rev": "a52fc6eeec116746110b703381777c46d89d9e27", - "type": "github" - }, - "original": { - "owner": "windwp", - "repo": "nvim-autopairs", - "type": "github" - } - }, - "plugin-nvim-bufferline-lua": { - "flake": false, - "locked": { - "lastModified": 1689661992, - "narHash": "sha256-0BJXUDGeUhPALEnPgO4ix+GgI/3P/Foiqi0tf2mgUXg=", - "owner": "akinsho", - "repo": "nvim-bufferline.lua", - "rev": "d24378edc14a675c820a303b4512af3bbc5761e9", - "type": "github" - }, - "original": { - "owner": "akinsho", - "ref": "v4.3.0", - "repo": "nvim-bufferline.lua", - "type": "github" - } - }, - "plugin-nvim-cmp": { - "flake": false, - "locked": { - "lastModified": 1693063902, - "narHash": "sha256-WGck3By9GhnBUmzLGi2wnKjDreQx5kBOmHCbC5BZhfo=", - "owner": "hrsh7th", - "repo": "nvim-cmp", - "rev": "5dce1b778b85c717f6614e3f4da45e9f19f54435", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "nvim-cmp", - "type": "github" - } - }, - "plugin-nvim-code-action-menu": { - "flake": false, - "locked": { - "lastModified": 1671523188, - "narHash": "sha256-7szx+Me6WhrANbmfQ6C6gfSVB2owd02b3iZYhz7K6wY=", - "owner": "weilbith", - "repo": "nvim-code-action-menu", - "rev": "e4399dbaf6eabff998d3d5f1cbcd8d9933710027", - "type": "github" - }, - "original": { - "owner": "weilbith", - "repo": "nvim-code-action-menu", - "type": "github" - } - }, - "plugin-nvim-cursorline": { - "flake": false, - "locked": { - "lastModified": 1650034925, - "narHash": "sha256-Uhw65p1KBjs8KsVOmTzuiu3XKclxBob8AVdWEt30C/8=", - "owner": "yamatsum", - "repo": "nvim-cursorline", - "rev": "804f0023692653b2b2368462d67d2a87056947f9", - "type": "github" - }, - "original": { - "owner": "yamatsum", - "repo": "nvim-cursorline", - "type": "github" - } - }, - "plugin-nvim-dap": { - "flake": false, - "locked": { - "lastModified": 1693474167, - "narHash": "sha256-i63RiaB1Io3C/EiI24Cxada9FoVF07WxaXtCA/W6puo=", - "owner": "mfussenegger", - "repo": "nvim-dap", - "rev": "31e1ece773e10448dcb616d5144290946a6264b7", - "type": "github" - }, - "original": { - "owner": "mfussenegger", - "repo": "nvim-dap", - "type": "github" - } - }, - "plugin-nvim-dap-ui": { - "flake": false, - "locked": { - "lastModified": 1689371609, - "narHash": "sha256-z6TFe7+r/g2tfgdXr6PCPri5lSboi66zZmsdyWTI1BM=", - "owner": "rcarriga", - "repo": "nvim-dap-ui", - "rev": "85b16ac2309d85c88577cd8ee1733ce52be8227e", - "type": "github" - }, - "original": { - "owner": "rcarriga", - "repo": "nvim-dap-ui", - "type": "github" - } - }, - "plugin-nvim-dap-virtual-text": { - "flake": false, - "locked": { - "lastModified": 1685002194, - "narHash": "sha256-yzMRudA8Wag881ewzw82uXPzHoxaB6kAapPElKN6G6E=", - "owner": "theHamsta", - "repo": "nvim-dap-virtual-text", - "rev": "57f1dbd0458dd84a286b27768c142e1567f3ce3b", - "type": "github" - }, - "original": { - "owner": "theHamsta", - "repo": "nvim-dap-virtual-text", - "type": "github" - } - }, - "plugin-nvim-lightbulb": { - "flake": false, - "locked": { - "lastModified": 1689887436, - "narHash": "sha256-Meoop66jINllnxN6aohuPmU7DEjn64FMq/b8zuy9FEQ=", - "owner": "kosayoda", - "repo": "nvim-lightbulb", - "rev": "8f00b89dd1b1dbde16872bee5fbcee2e58c9b8e9", - "type": "github" - }, - "original": { - "owner": "kosayoda", - "repo": "nvim-lightbulb", - "type": "github" - } - }, - "plugin-nvim-lspconfig": { - "flake": false, - "locked": { - "lastModified": 1693009222, - "narHash": "sha256-JYhEKTD51Ey9ksy8tpsJn2ZjxdW4dwjtuqD/1BI8uJ8=", - "owner": "neovim", - "repo": "nvim-lspconfig", - "rev": "a27356f1ef9c11e1f459cc96a3fcac5c265e72d6", - "type": "github" - }, - "original": { - "owner": "neovim", - "repo": "nvim-lspconfig", - "type": "github" - } - }, - "plugin-nvim-neoclip": { - "flake": false, - "locked": { - "lastModified": 1684196333, - "narHash": "sha256-96AwMgyC7PTDEPS5tXwDT3WfK8jJJuIYGE+q+j6U5Uc=", - "owner": "AckslD", - "repo": "nvim-neoclip.lua", - "rev": "4e406ae0f759262518731538f2585abb9d269bac", - "type": "github" - }, - "original": { - "owner": "AckslD", - "repo": "nvim-neoclip.lua", - "type": "github" - } - }, - "plugin-nvim-tree-lua": { - "flake": false, - "locked": { - "lastModified": 1693725965, - "narHash": "sha256-KYZvbABUjAOgLIq/4M0+6+T4cx9JHx0eZ+TvHMreuUQ=", - "owner": "kyazdani42", - "repo": "nvim-tree.lua", - "rev": "5897b3622f033b1f3ea6adf8eb1c165e9f20554f", - "type": "github" - }, - "original": { - "owner": "kyazdani42", - "repo": "nvim-tree.lua", - "type": "github" - } - }, - "plugin-nvim-treesitter-context": { - "flake": false, - "locked": { - "lastModified": 1693573944, - "narHash": "sha256-zWIbeYnCWVQVznRw5P3nZ3qLf/lQTA/Qyooekh8ko1c=", - "owner": "nvim-treesitter", - "repo": "nvim-treesitter-context", - "rev": "31692b26d76ff1f7c6e0ab51814dd55e7417e96c", - "type": "github" - }, - "original": { - "owner": "nvim-treesitter", - "repo": "nvim-treesitter-context", - "type": "github" - } - }, - "plugin-nvim-ts-autotag": { - "flake": false, - "locked": { - "lastModified": 1686883732, - "narHash": "sha256-4qTtXYA5HyG1sADV0wsiccO/G89qEoYPmlg8tTx7h8g=", - "owner": "windwp", - "repo": "nvim-ts-autotag", - "rev": "6be1192965df35f94b8ea6d323354f7dc7a557e4", - "type": "github" - }, - "original": { - "owner": "windwp", - "repo": "nvim-ts-autotag", - "type": "github" - } - }, - "plugin-nvim-web-devicons": { - "flake": false, - "locked": { - "lastModified": 1693704832, - "narHash": "sha256-RnB+UE7z22slSpwLasfxXJkxfHLchCyiV49LoQ78mZ4=", - "owner": "kyazdani42", - "repo": "nvim-web-devicons", - "rev": "bc11ee2498de2310de5776477dd9dce65d03b464", - "type": "github" - }, - "original": { - "owner": "kyazdani42", - "repo": "nvim-web-devicons", - "type": "github" - } - }, - "plugin-onedark": { - "flake": false, - "locked": { - "lastModified": 1692967125, - "narHash": "sha256-T2UzeHe6IXX1j1rtSJ+657W49Bs84GqClOgJVYbpwVk=", - "owner": "navarasu", - "repo": "onedark.nvim", - "rev": "7bd3558c17045b95c961d28861c1b3bd9bdc992a", - "type": "github" - }, - "original": { - "owner": "navarasu", - "repo": "onedark.nvim", - "type": "github" - } - }, - "plugin-open-browser": { - "flake": false, - "locked": { - "lastModified": 1665248470, - "narHash": "sha256-9QZgTv8W0BFlF0lsH1BPPAzjD6iXWXHXZf2zpouQH2s=", - "owner": "tyru", - "repo": "open-browser.vim", - "rev": "7d4c1d8198e889d513a030b5a83faa07606bac27", - "type": "github" - }, - "original": { - "owner": "tyru", - "repo": "open-browser.vim", - "type": "github" - } - }, - "plugin-oxocarbon": { - "flake": false, - "locked": { - "lastModified": 1724853107, - "narHash": "sha256-Hi/nATEvZ4a6Yxc66KtuJqss6kQV19cmtIlhCw6alOI=", - "owner": "nyoom-engineering", - "repo": "oxocarbon.nvim", - "rev": "004777819ba294423b638a35a75c9f0c7be758ed", - "type": "github" - }, - "original": { - "owner": "nyoom-engineering", - "repo": "oxocarbon.nvim", - "type": "github" - } - }, - "plugin-plantuml-previewer": { - "flake": false, - "locked": { - "lastModified": 1678208089, - "narHash": "sha256-W+TcvgB2baKCOQEq0ZbdnRKfX5fGD8cTLkamhr2PbV8=", - "owner": "weirongxu", - "repo": "plantuml-previewer.vim", - "rev": "1dd4d0f2b09cd80a217f76d82f93830dbbe689b3", - "type": "github" - }, - "original": { - "owner": "weirongxu", - "repo": "plantuml-previewer.vim", - "type": "github" - } - }, - "plugin-plantuml-syntax": { - "flake": false, - "locked": { - "lastModified": 1661550240, - "narHash": "sha256-LowGc66T47vOL4oAihrArNqGUZ+CCbyVXEROO83OTjQ=", - "owner": "aklt", - "repo": "plantuml-syntax", - "rev": "845abb56dcd3f12afa6eb47684ef5ba3055802b8", - "type": "github" - }, - "original": { - "owner": "aklt", - "repo": "plantuml-syntax", - "type": "github" - } - }, - "plugin-plenary-nvim": { - "flake": false, - "locked": { - "lastModified": 1692890974, - "narHash": "sha256-TcjgafIbwNXxoAO5wrf/Wr6sZHJtfpHU9R7RIjBZgkg=", - "owner": "nvim-lua", - "repo": "plenary.nvim", - "rev": "0dbe561ae023f02c2fb772b879e905055b939ce3", - "type": "github" - }, - "original": { - "owner": "nvim-lua", - "repo": "plenary.nvim", - "type": "github" - } - }, - "plugin-registers": { - "flake": false, - "locked": { - "lastModified": 1680595111, - "narHash": "sha256-MeBlcF5LLk6bhIofYuG+0Z2xwc0BVqP85yNCvjH66fw=", - "owner": "tversteeg", - "repo": "registers.nvim", - "rev": "2ab8372bb837f05fae6b43091f10a0b725d113ca", - "type": "github" - }, - "original": { - "owner": "tversteeg", - "repo": "registers.nvim", - "type": "github" - } - }, - "plugin-rust-tools": { - "flake": false, - "locked": { - "lastModified": 1689033186, - "narHash": "sha256-jtfyDxifchznUupLSao6nmpVqaX1yO0xN+NhqS9fgxg=", - "owner": "simrat39", - "repo": "rust-tools.nvim", - "rev": "0cc8adab23117783a0292a0c8a2fbed1005dc645", - "type": "github" - }, - "original": { - "owner": "simrat39", - "repo": "rust-tools.nvim", - "type": "github" - } - }, - "plugin-scnvim": { - "flake": false, - "locked": { - "lastModified": 1687884269, - "narHash": "sha256-z0r8M0L5aZ2ugqjAfHAUPWaVVfn91B7xNG3oXJiIcl0=", - "owner": "davidgranstrom", - "repo": "scnvim", - "rev": "c44d57aeadc4b01888bc10a249f8867df8d1a461", - "type": "github" - }, - "original": { - "owner": "davidgranstrom", - "repo": "scnvim", - "type": "github" - } - }, - "plugin-sqls-nvim": { - "flake": false, - "locked": { - "lastModified": 1684697500, - "narHash": "sha256-jKFut6NZAf/eIeIkY7/2EsjsIhvZQKCKAJzeQ6XSr0s=", - "owner": "nanotee", - "repo": "sqls.nvim", - "rev": "4b1274b5b44c48ce784aac23747192f5d9d26207", - "type": "github" - }, - "original": { - "owner": "nanotee", - "repo": "sqls.nvim", - "type": "github" - } - }, - "plugin-telescope": { - "flake": false, - "locked": { - "lastModified": 1693773729, - "narHash": "sha256-tQeC1k4dVYkBBrQ/ZegLbWAnqVAcA84TMvsMj5LEpJc=", - "owner": "nvim-telescope", - "repo": "telescope.nvim", - "rev": "74be3c3bba1abbf72f3eabeac95a7dddaca87f93", - "type": "github" - }, - "original": { - "owner": "nvim-telescope", - "repo": "telescope.nvim", - "type": "github" - } - }, - "plugin-telescope-file-browser": { - "flake": false, - "locked": { - "lastModified": 1691912462, - "narHash": "sha256-iq2KyNU5U/j0zVvWg0q9TAXolHjbxL4d2GyMW/e1+Lo=", - "owner": "nvim-telescope", - "repo": "telescope-file-browser.nvim", - "rev": "ad7b637c72549713b9aaed7c4f9c79c62bcbdff0", - "type": "github" - }, - "original": { - "owner": "nvim-telescope", - "repo": "telescope-file-browser.nvim", - "type": "github" - } - }, - "plugin-telescope-live-grep-args": { - "flake": false, - "locked": { - "lastModified": 1693245982, - "narHash": "sha256-L2STMQude8DalHF4fYaJZNjvQHB1UtnQx8Gx2fPKcDA=", - "owner": "nvim-telescope", - "repo": "telescope-live-grep-args.nvim", - "rev": "851c0997d55601f2afd7290db0f90dc364e29f58", - "type": "github" - }, - "original": { - "owner": "nvim-telescope", - "repo": "telescope-live-grep-args.nvim", - "type": "github" - } - }, - "plugin-todo-comments": { - "flake": false, - "locked": { - "lastModified": 1690569591, - "narHash": "sha256-Qm8AJ8omU5eCfjLt91DVxLS0R3QHbfW55ZTegB1JvWI=", - "owner": "folke", - "repo": "todo-comments.nvim", - "rev": "3094ead8edfa9040de2421deddec55d3762f64d1", - "type": "github" - }, - "original": { - "owner": "folke", - "repo": "todo-comments.nvim", - "type": "github" - } - }, - "plugin-tokyonight": { - "flake": false, - "locked": { - "lastModified": 1693328357, - "narHash": "sha256-yPDPjvz8xA50AkSwAkMj6gSGqUFhattjEy95/Exop+U=", - "owner": "folke", - "repo": "tokyonight.nvim", - "rev": "9a01eada39558dc3243278e6805d90e8dff45dc0", - "type": "github" - }, - "original": { - "owner": "folke", - "repo": "tokyonight.nvim", - "type": "github" - } - }, - "plugin-trouble": { - "flake": false, - "locked": { - "lastModified": 1693380004, - "narHash": "sha256-3dielW+Y+Rpt/sotZjk8tYHhYTlSrYHS5AILdytyNVA=", - "owner": "folke", - "repo": "trouble.nvim", - "rev": "3f85d8ed30e97ceeddbbcf80224245d347053711", - "type": "github" - }, - "original": { - "owner": "folke", - "repo": "trouble.nvim", - "type": "github" - } - }, - "plugin-vim-be-good": { - "flake": false, - "locked": { - "lastModified": 1667916364, - "narHash": "sha256-lJNY/5dONZLkxSEegrwtZ6PHYsgMD3nZkbxm6fFq3vY=", - "owner": "ThePrimeagen", - "repo": "vim-be-good", - "rev": "c290810728a4f75e334b07dc0f3a4cdea908d351", - "type": "github" - }, - "original": { - "owner": "ThePrimeagen", - "repo": "vim-be-good", - "type": "github" - } - }, - "plugin-vim-vsnip": { - "flake": false, - "locked": { - "lastModified": 1678609126, - "narHash": "sha256-ehPnvGle7YrECn76YlSY/2V7Zeq56JGlmZPlwgz2FdE=", - "owner": "hrsh7th", - "repo": "vim-vsnip", - "rev": "7753ba9c10429c29d25abfd11b4c60b76718c438", - "type": "github" - }, - "original": { - "owner": "hrsh7th", - "repo": "vim-vsnip", - "type": "github" - } - }, - "plugin-which-key": { - "flake": false, - "locked": { - "lastModified": 1690570286, - "narHash": "sha256-B1+EHd2eH/EbD5Kip9PfhdPyyGfIkD6rsx0Z3rXvb5w=", - "owner": "folke", - "repo": "which-key.nvim", - "rev": "7ccf476ebe0445a741b64e36c78a682c1c6118b7", - "type": "github" - }, - "original": { - "owner": "folke", - "repo": "which-key.nvim", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1728778939, - "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "ff68f91754be6f3427e4986d7949e6273659be1d", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "rnix-lsp": { - "inputs": { - "naersk": "naersk_2", - "nixpkgs": [ - "nadiavim", - "neovim-flake", - "flake-utils" - ], - "utils": [ - "nadiavim", - "neovim-flake", - "flake-utils" - ] - }, - "locked": { - "lastModified": 1669555118, - "narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=", - "owner": "nix-community", - "repo": "rnix-lsp", - "rev": "95d40673fe43642e2e1144341e86d0036abd95d9", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "rnix-lsp", - "type": "github" - } - }, - "root": { - "inputs": { - "home-manager": "home-manager", - "hyprland": "hyprland", - "hyprpaper": "hyprpaper", - "ironbar": "ironbar", - "nadiavim": "nadiavim", - "nix-index-database": "nix-index-database", - "nix-matlab": "nix-matlab", - "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_6", - "nixpkgs-small": "nixpkgs-small", - "nixvim": "nixvim", - "ssh-keys": "ssh-keys", - "stylix": "stylix" - } - }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1727663505, - "narHash": "sha256-83j/GrHsx8GFUcQofKh+PRPz6pz8sxAsZyT/HCNdey8=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "c2099c6c7599ea1980151b8b6247a8f93e1806ee", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "nadiavim", - "neovim-flake", - "nil", - "flake-utils" - ], - "nixpkgs": [ - "nadiavim", - "neovim-flake", - "nil", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1688783586, - "narHash": "sha256-HHaM2hk2azslv1kH8zmQxXo2e7i5cKgzNIuK4yftzB0=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "7a29283cc242c2486fc67f60b431ef708046d176", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "ssh-keys": { + "ssh-keys": { "flake": false, "locked": { "narHash": "sha256-RsFMo++G8c/KLfyZ5hLbUCws/jiNQufSmPPPCRQZJVI=", @@ -2306,13 +912,13 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_2", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_6", + "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-tmux": "tinted-tmux" @@ -2331,23 +937,6 @@ "type": "github" } }, - "superdirt-src": { - "flake": false, - "locked": { - "lastModified": 1611740180, - "narHash": "sha256-GtnqZeMFqFkVhgx2Exu0wY687cHa7mNnVCgjQd6fiIA=", - "owner": "musikinformatik", - "repo": "superdirt", - "rev": "7abb62e89649daa1232b9cbd6427241868abd30e", - "type": "github" - }, - "original": { - "owner": "musikinformatik", - "ref": "master", - "repo": "superdirt", - "type": "github" - } - }, "systems": { "locked": { "lastModified": 1689347949, @@ -2364,51 +953,6 @@ } }, "systems_2": { - "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_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=", @@ -2423,7 +967,7 @@ "type": "github" } }, - "systems_6": { + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2438,47 +982,6 @@ "type": "github" } }, - "tidal-src": { - "flake": false, - "locked": { - "lastModified": 1654350756, - "narHash": "sha256-tONM5SYYBca0orTLH1EUOilSC1FCluWrFt8AetUx+YQ=", - "owner": "tidalcycles", - "repo": "tidal", - "rev": "fda9c1ecb3722698935245e5409ef8ccdfca16c8", - "type": "github" - }, - "original": { - "owner": "tidalcycles", - "ref": "main", - "repo": "tidal", - "type": "github" - } - }, - "tidalcycles": { - "inputs": { - "dirt-samples-src": "dirt-samples-src", - "nixpkgs": "nixpkgs_5", - "superdirt-src": "superdirt-src", - "tidal-src": "tidal-src", - "utils": "utils", - "vim-tidal-src": "vim-tidal-src", - "vowel-src": "vowel-src" - }, - "locked": { - "lastModified": 1664760044, - "narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=", - "owner": "mitchmindtree", - "repo": "tidalcycles.nix", - "rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf", - "type": "github" - }, - "original": { - "owner": "mitchmindtree", - "repo": "tidalcycles.nix", - "type": "github" - } - }, "tinted-foot": { "flake": false, "locked": { @@ -2549,55 +1052,6 @@ "type": "github" } }, - "utils": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "vim-tidal-src": { - "flake": false, - "locked": { - "lastModified": 1685703852, - "narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=", - "owner": "tidalcycles", - "repo": "vim-tidal", - "rev": "e440fe5bdfe07f805e21e6872099685d38e8b761", - "type": "github" - }, - "original": { - "owner": "tidalcycles", - "ref": "master", - "repo": "vim-tidal", - "type": "github" - } - }, - "vowel-src": { - "flake": false, - "locked": { - "lastModified": 1641306144, - "narHash": "sha256-zfF6cvAGDNYWYsE8dOIo38b+dIymd17Pexg0HiPFbxM=", - "owner": "supercollider-quarks", - "repo": "vowel", - "rev": "ab59caa870201ecf2604b3efdd2196e21a8b5446", - "type": "github" - }, - "original": { - "owner": "supercollider-quarks", - "ref": "master", - "repo": "vowel", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 56cef54..567ddbf 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,6 @@ nixos-hardware.url = "github:NixOS/nixos-hardware/master"; hyprland.url = "github:hyprwm/hyprland"; - hyprpaper.url = "github:hyprwm/hyprpaper"; nix-index-database = { url = "github:Mic92/nix-index-database"; @@ -27,23 +26,15 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + # other programs nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; - # my neovim flake - nadiavim = { - url = "github:nyadiia/nadiavim-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # matlab nix-matlab = { - # Recommended if you also override the default nixpkgs flake, common among - # nixos-unstable users: - inputs.nixpkgs.follows = "nixpkgs"; url = "gitlab:doronbehar/nix-matlab"; + inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { @@ -59,14 +50,11 @@ outputs = inputs@{ + self, nixpkgs, nixpkgs-small, - home-manager, nixos-hardware, - nix-index-database, hyprland, - hyprpaper, - stylix, ... }: let @@ -88,18 +76,16 @@ }: let pkgs = import nixpkgs { inherit system config overlays; }; - pkgs-small = import nixpkgs-small { inherit system config overlays; }; + small = import nixpkgs-small { inherit system config overlays; }; # style = import ./style/default.nix { inherit pkgs; }; nixosConfig = ./. + "/hosts/${name}"; hmConfig = ./. + "/hm/${name}.nix"; specialArgs = { inherit inputs - stylix pkgs - pkgs-small + small hyprland - hyprpaper username email signingKey @@ -114,66 +100,47 @@ ./modules/stylix.nix nixosConfig hardware - nix-index-database.nixosModules.nix-index - home-manager.nixosModules.home-manager - stylix.nixosModules.stylix + inputs.nix-index-database.nixosModules.nix-index + inputs.home-manager.nixosModules.home-manager { home-manager = { useGlobalPkgs = true; useUserPackages = true; users.${username}.imports = [ hmConfig - nix-index-database.hmModules.nix-index + inputs.nix-index-database.hmModules.nix-index ] ++ hm-modules; extraSpecialArgs = specialArgs; }; } ] ++ modules; }; - in + # nixvimModule = { + # inherit pkgs; + # module = import ./packages/nixvim; # import the module directly + # # You can use `extraSpecialArgs` to pass additional arguments to your module files + # extraSpecialArgs = { + # # inherit (inputs) foo; + # }; + # }; { + # packages.x86_64-linux.nvim = nixvim.legacyPackages.x86_64-linux.makeNixvimWithModule nixvimModule; + nixosConfigurations = { hyprdash = mkSystem { name = "hyprdash"; hardware = nixos-hardware.nixosModules.framework-11th-gen-intel; + modules = [ + inputs.stylix.nixosModules.stylix + ./modules/stylix.nix + ]; hm-modules = [ inputs.ironbar.homeManagerModules.default + inputs.nix-index-database.hmModules.nix-index + inputs.ironbar.homeManagerModules.default ]; }; - # hyprdash = nixpkgs.lib.nixosSystem rec { - # system = "x86_64-linux"; - # specialArgs = { - # inherit inputs username; - # }; - # modules = [ - # { - # home-manager.users.${username}.imports = [ - # ./hm-modules/shell - # ./hm-modules/gtk.nix - # ./hm-modules/mako.nix - # ./hm-modules/fcitx.nix - # ./hm-modules/alacritty.nix - # ./hm-modules/fuzzel.nix - # ./hm-modules/vscode.nix - # ./hm-modules/firefox.nix - # ./hm-modules/ironbar.nix - # ./hm-modules/hyprland.nix - # ironbar.homeManagerModules.default - # ]; - # } - # nix-index-database.nixosModules.nix-index - # nixos-hardware.nixosModules.framework-11th-gen-intel - # home-manager.nixosModules.home-manager - # stylix.nixosModules.stylix - # ./hosts/system.nix - # ./hosts/hyprdash/configuration.nix - # ./hosts/hyprdash/hardware-configuration.nix - # ./hosts/home.nix - # ./modules/stylix.nix - # ./modules/suspend-then-hibernate.nix - # ]; - # }; }; }; } diff --git a/hm/XCompose b/hm/XCompose new file mode 100644 index 0000000..f9440e1 --- /dev/null +++ b/hm/XCompose @@ -0,0 +1,411 @@ +# for Emacs: -*- coding: utf-8 -*- + +include "%L" + +# Key sequences have the following form: +# +# … : "resulting text" +# +# All key names must be enclosed in . +# The first key must be . +# The remaining keys can be single characters, like , , <7>, +# , <@>, or from the following list: +# +# Up, Down, Left, Right (the arrow keys), space, exclam, quotedbl, +# numbersign, dollar, percent, ampersand, apostrophe, parenleft, +# parenright, asterisk, plus, comma, minus, period, slash, colon, +# semicolon, less, equal, greater, at, bracketleft, backslash, +# bracketright, asciicircum, underscore, grave, braceleft, bar, +# braceright, asciitilde. + +#typography + +# <-> <-> <-> : "—" + +#Mathbb + : "ℝ" + : "ℂ" + : "ℤ" + : "ℕ" + : "ℚ" + : "𝕂" + : "ℍ" + <1> : "𝟙" + : "𝔼" +

: "ℙ" + +# +# +# #Mathcal +# : "𝓖" +#

: "𝒫" +# : "𝓜" +# +# #math prefix +# : "∞" +# : "∈" +# <+> : "⊕" +# : "∘" +# +# : "∂" +#

: "±" +#

: "∓" +# +# #big symbols +# : "∫" +# : "∑" +#

: "∏" +# +# #math non-prefixed +# : "√" +# : "∞" +# +# +# : "≠" +# : "≡" +# : "∼" +# <~> <=> : "≃" +# <~> <~> : "≈" +# +# : "≔" +# +#

: "≺" +# : "≻" +# + : "∇" +# +# #arrows +# +# : "⟺" +# : "↪" +#

: "↦" +#

: "⇀" +# +# #logic +# : "⊢" +# : "∃" +# : "∀" +# : "⌐" +# +# #set +#

: "⋂" +#

: "⋃" +#

: "∩" +#

: "∪" +# : "∈" +# +# : "∉" +# : "⊂" +# +# <+> : "⊕" +# <*> : "⨂" +# <.> : "⨀" +# +# : "∨" +# : "∧" +# +# <+> : "⊕" +# <-> : "⊖" +# : "⊗" +# : "⊘" +# : "⊙" +# :"⊚" +# <*> : "⊛" +# <=> : "⊜" +# +# +# #math bracket-like +# : "⟨" +# : "⟩" +# +# +# : "⊳" + +# greek + : "α" + : "β" + : "γ" + : "δ" + : "ε" + : "ζ" + : "η" + : "θ" + : "ι" + : "κ" + : "λ" + : "μ" + : "ν" + : "ξ" + : "ο" +

: "π" + : "ρ" + : "σ" + : "ς" + : "τ" + : "υ" + : "φ" + : "χ" + : "ψ" + : "ω" + + : "Α" + : "Β" + : "Γ" + : "Δ" + : "Ε" + : "Ζ" + : "Η" + : "Θ" + : "Ι" + : "Κ" + : "Λ" + : "Μ" + : "Ν" + : "Ξ" + : "Ο" +

: "Π" + : "Ρ" + : "Σ" + : "Σ" + : "Τ" + : "Υ" + : "Φ" + : "Χ" + : "Ψ" + : "Ω" + + +# small caps + : "ᴀ" + : "ʙ" + : "ᴄ" + : "ᴅ" + : "ᴇ" + : "ꜰ" + : "ɢ" + : "ʜ" + : "ɪ" + : "ᴊ" + : "ᴋ" + : "ʟ" + : "ᴍ" + : "ɴ" + : "ᴏ" +

: "ᴘ" + : "ǫ" + : "ʀ" + : "s" + : "ᴛ" + : "ᴜ" + : "ᴠ" + : "ᴡ" + : "ʏ" + : "ᴢ" + +# international phonetic alphabet + +# consonants + +# bilabials +

: "ɸ" + : "ʍ" + : "ɓ" + +# labiodentals + : "ɱ" + : "ʋ" + : "ⱱ" # i dont super like this pattern but its what im used to + +# alveolar + : "ɬ" + : "ɮ" + : "ɹ" + : "ɗ" + : "ɾ" + : "ɺ" + +# postalveolar + : "ʃ" + : "ʒ" + +# retroflex + : "ɳ" + : "ʈ" + : "ɖ" + : "ɻ" + : "ʂ" + : "ʐ" + : "ɭ" + +# palatoalveolar + : "ɕ" + : "ʑ" + +# palatal + : "ɲ" + : "ɟ" + : "ʎ" + : "ʝ" + : "ʄ" + : "ɥ" + +# velar + : "ŋ" + : "ɣ" + : "ɰ" + : "ɠ" + +# uvular + : "ʁ" + : "ʛ" + +# pharyngeal + : "ħ" + : "ʕ" + +# glottal + : "ɦ" + : "ʔ" + +# epiglottal + : "ʡ" + : "ʢ" + +# vowels + +# high vowels + + : "ɨ" + : "ʉ" + + : "ɯ" + +# near-high vowels + : "ɪ" + : "ʏ" + : "ʊ" + +# close-mid vowels + : "ɘ" + : "ɵ" + : "ɤ" + +# open-mid vowels + : "ɛ" + <3> <3> : "ɜ" + <3> : "ɞ" + : "ʌ" + : "ɔ" + +# open vowels + : "ɐ" + : "ɶ" + : "ɑ" + : "ɒ" + +# restore defaults overridden by ipa + + : "ţ" + : "Ţ" + : "ş" + : "Ş" + : "ḑ" + : "Ḑ" + : "ņ" + : "Ņ" + : "ļ" + : "Ļ" + +# dot below + : "ṣ" + : "ụ" + : "Ụ" + : "ọ" + : "Ọ" + : "ṇ" + : "Ṇ" + : "ḳ" + : "Ḳ" + : "ṭ" + : "Ṭ" + : "ḥ" + : "Ḥ" + +# tone marks + <1> : "˩" + <2> : "˨" + <3> : "˧" + <4> : "˦" + <5> : "˥" + +# stress and length + : "́" + : "̩" + : "ˌ" + : "ː" + : "ˑ" + +# combining characters + : "̯" + : "̪" # dental + : "̺" # apical + : "̻" # laminal + : "̼" # linguolabial + : "̤" # breathy + : "̥" # voiceless + : "̬" # voiced + : "̰" # creaky + + : "̀" + : "̃" + : "̈" + : "ˀ" + : "ˁ" + + : "͡" + : "‿" + +# subscript numbers + <0> : "₀" + <1> : "₁" + <2> : "₂" + <3> : "₃" + <4> : "₄" + <5> : "₅" + <6> : "₆" + <7> : "₇" + <8> : "₈" + <9> : "₉" + +# raised letters + : "ᵃ" + : "ᵇ" + : "ᶜ" + : "ᵈ" + : "ᵉ" + : "ᶠ" + : "ᵍ" + : "ʰ" + : "ⁱ" + : "ʲ" + : "ᵏ" + : "ˡ" + : "ᵐ" + : "ⁿ" + : "ᵒ" +

: "ᵖ" + : "𐞥" + : "ʳ" + : "ˢ" + : "ᵗ" + : "ᵘ" + : "ᵛ" + : "ʷ" + : "ˣ" + : "ʸ" + : "ᶻ" + +# raised ipa + : "ᵑ" + : "ᶯ" + : "ꜜ" diff --git a/hm/alacritty.nix b/hm/alacritty.nix new file mode 100644 index 0000000..1b2e4e4 --- /dev/null +++ b/hm/alacritty.nix @@ -0,0 +1,13 @@ +{ lib, ... }: +{ + programs.alacritty = { + enable = true; + settings = lib.mkForce { + font.normal = { + family = "CozetteHiDpi"; + style = "Medium"; + }; + window.opacity = 0.8; + }; + }; +} diff --git a/hm/chrome.nix b/hm/chrome.nix new file mode 100644 index 0000000..fd72443 --- /dev/null +++ b/hm/chrome.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +{ + programs.chromium = { + enable = true; + package = pkgs.brave; + extensions = [ + { + # gruvbox-material + id = "fjofdcgahcnlkdjapcbeonbnmjdnfcki"; + } + ]; + }; +} diff --git a/hm/common.nix b/hm/common.nix new file mode 100644 index 0000000..4496f48 --- /dev/null +++ b/hm/common.nix @@ -0,0 +1,87 @@ +{ pkgs, small, ... }: +{ + imports = [ ./shell ]; + + home = { + username = "nyadiia"; + homeDirectory = "/home/nyadiia"; + }; + + programs = { + direnv = { + enable = true; + nix-direnv.enable = true; + }; + git = { + enable = true; + package = pkgs.gitAndTools.gitFull; + delta.enable = true; + delta.package = small.delta; + userName = "nyadiia"; + userEmail = "nyadiia@pm.me"; + extraConfig = { + core.editor = "nvim"; + init.defaultBranch = "main"; + feature.manyFiles = true; + }; + signing = { + signByDefault = true; + key = "178B4B1243860873"; + }; + }; + btop.enable = true; + bat = { + enable = true; + themes = { + gruvbox-material = { + src = pkgs.fetchFromGitHub { + owner = "karimlevallois"; + repo = "gruvbox-material-sublime-text"; + rev = "f37e5b0b89c78d2121daff6f82e6a244a25b7e84"; + hash = "sha256-PU483frm8O9Z2xHddzdbt6SAg80TZkv1JYfe9A+UoIA="; + }; + }; + }; + }; + fd.enable = true; + }; + + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ + "qemu:///system" + "qemu+ssh://root@vm/system" + "qemu+ssh://root@argo/system" + ]; + uris = [ + "qemu:///system" + "qemu+ssh://root@vm/system" + "qemu+ssh://root@argo/system" + ]; + }; + }; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home = { + stateVersion = "23.11"; + sessionVariables = { + EDITOR = "nvim"; + VISUAL = "nvim"; + NIXOS_OZONE_WL = "1"; + SSH_ASKPASS = "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; + }; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/hm/desktop.nix b/hm/desktop.nix new file mode 100644 index 0000000..2e71f37 --- /dev/null +++ b/hm/desktop.nix @@ -0,0 +1,80 @@ +{ + pkgs, + unstable, + inputs, + ... +}: + +{ + imports = [ + ./common.nix + ./firefox.nix + ./vscode.nix + ./hyprland.nix + ]; + + home = { + + pointerCursor = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + size = 24; + x11 = { + enable = true; + defaultCursor = "Adwaita"; + }; + }; + + sessionVariables = { + XDG_SESSION_DESKTOP = "Hyprland"; + XDG_CURRENT_DESKTOP = "Hyprland"; + + NIXOS_OZONE_WL = "1"; + XDG_SESSION_TYPE = "wayland"; + _JAVA_AWT_WM_NONREPARENTING = "1"; + QT_QPA_PLATFORM = "wayland;xcb"; + QT_AUTO_SCREEN_SCALE_FACTOR = "1"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + GDK_BACKEND = "wayland"; + CLUTTER_BACKEND = "wayland"; + SDL_VIDEODRIVER = "wayland"; + }; + + packages = + (with pkgs; [ + mpv + obsidian + spotify + nixpkgs-fmt + vesktop + (pkgs.writeShellScriptBin "discord" '' + exec ${pkgs.vesktop}/bin/vencorddesktop --enable-features=UseOzonePlatform --ozone-platform=wayland + '') + tigervnc + prismlauncher + swww + playerctl + tofi + wl-clipboard + libnotify + pavucontrol + qalculate-gtk + file-roller + inputs.hyprland-contrib.packages.${pkgs.system}.grimblast + ffmpeg + + octaveFull + ]) + ++ (with pkgs.octavePackages; [ + symbolic + io + ocl + linear-algebra + matgeom + general + audio + fuzzy-logic-toolkit + control + ]); + }; +} diff --git a/hm/fcitx.nix b/hm/fcitx.nix new file mode 100644 index 0000000..5c4e170 --- /dev/null +++ b/hm/fcitx.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + i18n.inputMethod = { + enabled = "fcitx5"; + fcitx5.addons = with pkgs; [ + fcitx5-gtk + fcitx5-mozc + ]; + }; +} diff --git a/hm/firefox.nix b/hm/firefox.nix index 127ccce..5d10fd2 100644 --- a/hm/firefox.nix +++ b/hm/firefox.nix @@ -1 +1,80 @@ -{ programs.firefox.enable = true; } +{ pkgs, ... }: +{ + programs.firefox = { + enable = true; + package = pkgs.floorp; + # profiles."default" = { + # isDefault = true; + # + # extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ + # ublock-origin + # clearurls + # bitwarden + # ]; + # + # search = { + # default = "DuckDuckGo"; + # engines = { + # "Nix Packages" = { + # urls = [ + # { + # template = "https://search.nixos.org/packages"; + # params = [ + # { + # name = "type"; + # value = "packages"; + # } + # { + # name = "query"; + # value = "{searchTerms}"; + # } + # ]; + # } + # ]; + # + # icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + # definedAliases = [ "@np" ]; + # }; + # + # "Nix Options" = { + # urls = [ + # { + # template = "https://search.nixos.org/options"; + # params = [ + # { + # name = "type"; + # value = "packages"; + # } + # { + # name = "query"; + # value = "{searchTerms}"; + # } + # ]; + # } + # ]; + # + # icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + # definedAliases = [ "@no" ]; + # }; + # + # "NixOS Wiki" = { + # urls = [ { template = "https://nixos.wiki/index.php?search=%s{searchTerms}"; } ]; + # iconUpdateURL = "https://nixos.wiki/favicon.png"; + # updateInterval = 24 * 60 * 60 * 1000; # every day + # definedAliases = [ "@nw" ]; + # }; + # }; + # }; + # + # userChrome = '' + # /* Remove close button*/ + # .titlebar-buttonbox-container { + # display:none + # }; + # #titlebar { + # background-color: #${config.lib.stylix.colors.base01} !important; + # }; + # ''; + # }; + }; +} diff --git a/hm/fuzzel.nix b/hm/fuzzel.nix new file mode 100644 index 0000000..141b850 --- /dev/null +++ b/hm/fuzzel.nix @@ -0,0 +1,26 @@ +{ + programs.fuzzel = { + enable = true; + settings = { + main = { + terminal = "alacritty"; + layer = "overlay"; + width = 45; + lines = 15; + }; + # colors = { + # background = "282828ff"; + # text = "ebdbb2ff"; + # match = "d65d0eff"; + # selection-match = "1d2021ff"; + # selection = "d65d0eff"; + # selection-text = "ebdbb2ff"; + # border = "ebdbb2ff"; + # }; + border = { + width = 1; + radius = 3; + }; + }; + }; +} diff --git a/hm/hyprdash.nix b/hm/hyprdash.nix index 61e0889..bf7bc91 100644 --- a/hm/hyprdash.nix +++ b/hm/hyprdash.nix @@ -1,9 +1,7 @@ { imports = [ - ./shell ./wm - ./vscode.nix ./firefox.nix ]; diff --git a/hm/kitty/Allow-bitmap-fonts.patch b/hm/kitty/Allow-bitmap-fonts.patch new file mode 100644 index 0000000..0d9e250 --- /dev/null +++ b/hm/kitty/Allow-bitmap-fonts.patch @@ -0,0 +1,44 @@ +diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi +index e69d7fa8..ad68c866 100644 +--- a/kitty/fast_data_types.pyi ++++ b/kitty/fast_data_types.pyi +@@ -423,7 +423,7 @@ class FontConfigPattern(TypedDict): + + def fc_list( + spacing: int = -1, +- allow_bitmapped_fonts: bool = False ++ allow_bitmapped_fonts: bool = True + ) -> Tuple[FontConfigPattern, ...]: + pass + +@@ -433,7 +433,7 @@ def fc_match( + bold: bool = False, + italic: bool = False, + spacing: int = FC_MONO, +- allow_bitmapped_fonts: bool = False, ++ allow_bitmapped_fonts: bool = True, + size_in_pts: float = 0., + dpi: float = 0. + ) -> FontConfigPattern: +diff --git a/kitty/fontconfig.c b/kitty/fontconfig.c +index 7156d9ee..6444d6bc 100644 +--- a/kitty/fontconfig.c ++++ b/kitty/fontconfig.c +@@ -84,7 +84,7 @@ font_set(FcFontSet *fs) { + + static PyObject* + fc_list(PyObject UNUSED *self, PyObject *args) { +- int allow_bitmapped_fonts = 0, spacing = -1; ++ int allow_bitmapped_fonts = 1, spacing = -1; + PyObject *ans = NULL; + FcObjectSet *os = NULL; + FcPattern *pat = NULL; +@@ -148,7 +148,7 @@ end: + static PyObject* + fc_match(PyObject UNUSED *self, PyObject *args) { + char *family = NULL; +- int bold = 0, italic = 0, allow_bitmapped_fonts = 0, spacing = FC_MONO; ++ int bold = 0, italic = 0, allow_bitmapped_fonts = 1, spacing = FC_MONO; + double size_in_pts = 0, dpi = 0; + FcPattern *pat = NULL; + PyObject *ans = NULL; diff --git a/hm/kitty/default.nix b/hm/kitty/default.nix new file mode 100644 index 0000000..f5bef3a --- /dev/null +++ b/hm/kitty/default.nix @@ -0,0 +1,30 @@ +{ lib, pkgs, ... }: +{ + # stylix.targets.kitty.enable = false; + + nixpkgs.overlays = + [ + ]; + + programs.kitty = { + enable = true; + settings = { + placement_strategy = "top-left"; + confirm_os_window_close = "0"; + background_opacity = lib.mkForce "0.8"; + background = lib.mkForce "#000000"; + #modify_font = "baseline 3"; + }; + + font = { + name = lib.mkForce "CozetteHiDpi"; + size = lib.mkForce 11; + package = lib.mkForce pkgs.cozette; + }; + + # extraConfig = builtins.fetchurl { + # url = "https://raw.githubusercontent.com/hbjydev/oxocarbon-kitty/refs/heads/main/skin.conf"; + # sha256 = "1lkm3sgmb113ywbfxl9k2ng230a1ks4is13lq89s95lp98zrqy21"; + # }; + }; +} diff --git a/hm/laptop.nix b/hm/laptop.nix new file mode 100644 index 0000000..c175585 --- /dev/null +++ b/hm/laptop.nix @@ -0,0 +1,92 @@ +{ pkgs, small, ... }: + +{ + imports = [ + ./common.nix + ./firefox.nix + # ./chrome.nix + ./vscode.nix + ./nvim.nix + ./hyprland.nix + ./fcitx.nix + ./alacritty.nix + ./foot.nix + ./xcompose.nix + ]; + + home.sessionVariables = { + XDG_SESSION_DESKTOP = "Hyprland"; + XDG_CURRENT_DESKTOP = "Hyprland"; + + NIXOS_OZONE_WL = "1"; + ELECTRON_OZONE_PLATFORM_HINT = "wayland"; + XDG_SESSION_TYPE = "wayland"; + _JAVA_AWT_WM_NONREPARENTING = "1"; + QT_QPA_PLATFORM = "wayland;xcb"; + QT_AUTO_SCREEN_SCALE_FACTOR = "1"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + GDK_BACKEND = "wayland"; + GDK_SCALE = "2"; + CLUTTER_BACKEND = "wayland"; + SDL_VIDEODRIVER = "wayland"; + ANKI_WAYLAND = "1"; + }; + + programs = { + gpg.enable = true; + }; + + services.gpg-agent = { + enable = true; + enableSshSupport = true; + }; + + home.packages = with pkgs; [ + # cargo + # rustc + vlc + zathura + brave + libreoffice-fresh + # neovim + yubioath-flutter + small.proton-pass + anki + imv + mpv + nil + obsidian + spotify + nixpkgs-fmt + vesktop + tigervnc + prismlauncher + playerctl + tofi + wl-clipboard + libnotify + pavucontrol + libqalculate + qalculate-gtk + file-roller + grimblast + ffmpeg + signal-desktop + hyprlock + rustup + glib + + (octaveFull.withPackages ( + opkgs: with opkgs; [ + symbolic + io + ocl + linear-algebra + matgeom + general + audio + control + ] + )) + ]; +} diff --git a/hm/nvim.nix b/hm/nvim.nix new file mode 100644 index 0000000..67d079d --- /dev/null +++ b/hm/nvim.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: +let + module = import ../packages/nixvim/nixvim.nix; +in +{ + programs.nixvim = { + enable = true; + defaultEditor = true; + + extraPackages = with pkgs; [ + nixfmt-rfc-style + typstyle + ]; + + plugins.treesitter.settings.grammarPackages = [ pkgs.tree-sitter-grammars.tree-sitter-nu ]; + + colorscheme = "gruvbox-material"; + extraPlugins = with pkgs.vimPlugins; [ + gruvbox-material-nvim + quick-scope + ]; + extraConfigLuaPre = '' + require('gruvbox-material').setup({ + italics = true, -- enable italics in general + contrast = "hard", -- set contrast, can be any of "hard", "medium", "soft" + comments = { + italics = true, -- enable italic comments + }, + background = { + transparent = true, -- set the background to transparent + }, + float = { + force_background = false, -- force background on floats even when background.transparent is set + background_color = nil, -- set color for float backgrounds. If nil, uses the default color set + }, + signs = { + highlight = true, -- whether to highlight signs + }, + }) + ''; + } // module; +} diff --git a/hm/server.nix b/hm/server.nix new file mode 100644 index 0000000..70b4a6b --- /dev/null +++ b/hm/server.nix @@ -0,0 +1 @@ +{ imports = [ ./common.nix ]; } diff --git a/hm/shell/config.nu b/hm/shell/config.nu new file mode 100644 index 0000000..4012013 --- /dev/null +++ b/hm/shell/config.nu @@ -0,0 +1,913 @@ +# Nushell Config File +# +# version = "0.98.0" + +# For more information on defining custom themes, see +# https://www.nushell.sh/book/coloring_and_theming.html +# And here is the theme collection +# https://github.com/nushell/nu_scripts/tree/main/themes +let dark_theme = { + # color for nushell primitives + separator: white + leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off + header: green_bold + empty: blue + # Closures can be used to choose colors for specific values. + # The value (in this case, a bool) is piped into the closure. + # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } + bool: light_cyan + int: white + filesize: cyan + duration: white + date: purple + range: white + float: white + string: white + nothing: white + binary: white + cell-path: white + row_index: green_bold + record: white + list: white + block: white + hints: dark_gray + search_result: { bg: red fg: white } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + # shapes are used to change the cli syntax highlighting + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} + +let light_theme = { + # color for nushell primitives + separator: dark_gray + leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off + header: green_bold + empty: blue + # Closures can be used to choose colors for specific values. + # The value (in this case, a bool) is piped into the closure. + # eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } } + bool: dark_cyan + int: dark_gray + filesize: cyan_bold + duration: dark_gray + date: purple + range: dark_gray + float: dark_gray + string: dark_gray + nothing: dark_gray + binary: dark_gray + cell-path: dark_gray + row_index: green_bold + record: dark_gray + list: dark_gray + block: dark_gray + hints: dark_gray + search_result: { fg: white bg: red } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_purple_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + # shapes are used to change the cli syntax highlighting + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} + +# External completer example +# let carapace_completer = {|spans| +# carapace $spans.0 nushell ...$spans | from json +# } + +# The default config record. This is where much of your global configuration is setup. +$env.config = { + show_banner: false # true or false to enable or disable the welcome banner at startup + + ls: { + use_ls_colors: true # use the LS_COLORS environment variable to colorize output + clickable_links: true # enable or disable clickable links. Your terminal has to support links. + } + + rm: { + always_trash: false # always act as if -t was given. Can be overridden with -p + } + + table: { + mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other + index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column + show_empty: true # show 'empty list' and 'empty record' placeholders for command output + padding: { left: 1, right: 1 } # a left right padding of each column in a table + trim: { + methodology: wrapping # wrapping or truncating + wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology + truncating_suffix: "..." # A suffix used by the 'truncating' methodology + } + header_on_separator: false # show header text on separator/border line + # abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point + } + + error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages + + # Whether an error message should be printed if an error of a certain kind is triggered. + display_errors: { + exit_code: false # assume the external command prints an error message + # Core dump errors are always printed, and SIGPIPE never triggers an error. + # The setting below controls message printing for termination by all other signals. + termination_signal: true + } + + # datetime_format determines what a datetime rendered in the shell would look like. + # Behavior without this configuration point will be to "humanize" the datetime display, + # showing something like "a day ago." + datetime_format: { + normal: '' + # normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables + # table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format + } + + explore: { + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, + command_bar_text: { fg: "#C4C9C6" }, + highlight: { fg: "black", bg: "yellow" }, + status: { + error: { fg: "white", bg: "red" }, + warn: {} + info: {} + }, + selected_cell: { bg: light_blue }, + } + + history: { + max_size: 100_000 # Session has to be reloaded for this to take effect + sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file + file_format: "plaintext" # "sqlite" or "plaintext" + isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions. + } + + completions: { + case_sensitive: false # set to true to enable case-sensitive completions + quick: true # set this to false to prevent auto-selecting completions when only one remains + partial: true # set this to false to prevent partial filling of the prompt + algorithm: "prefix" # prefix or fuzzy + sort: "smart" # "smart" (alphabetical for prefix matching, fuzzy score for fuzzy matching) or "alphabetical" + external: { + enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow + max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options + completer: null # check 'carapace_completer' above as an example + } + use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS + } + + filesize: { + metric: false # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) + format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto + } + + cursor_shape: { + emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default) + vi_insert: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default) + vi_normal: underscore # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default) + } + + color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record + footer_mode: 25 # always, never, number_of_rows, auto + float_precision: 2 # the precision for displaying floats in tables + buffer_editor: null # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL + use_ansi_coloring: true + bracketed_paste: true # enable bracketed paste, currently useless on windows + edit_mode: emacs # emacs, vi + shell_integration: { + # osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title + osc2: true + # osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory + osc7: true + # osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8 + osc8: true + # osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal + osc9_9: false + # osc133 is several escapes invented by Final Term which include the supported ones below. + # 133;A - Mark prompt start + # 133;B - Mark prompt end + # 133;C - Mark pre-execution + # 133;D;exit - Mark execution finished with exit code + # This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is + osc133: true + # osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features + # 633;A - Mark prompt start + # 633;B - Mark prompt end + # 633;C - Mark pre-execution + # 633;D;exit - Mark execution finished with exit code + # 633;E - Explicitly set the command line with an optional nonce + # 633;P;Cwd= - Mark the current working directory and communicate it to the terminal + # and also helps with the run recent menu in vscode + osc633: true + # reset_application_mode is escape \x1b[?1l and was added to help ssh work better + reset_application_mode: true + } + render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. + use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this. + highlight_resolved_externals: false # true enables highlighting of external commands in the repl resolved by which. + recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it + + plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration. + + plugin_gc: { + # Configuration for plugin garbage collection + default: { + enabled: true # true to enable stopping of inactive plugins + stop_after: 10sec # how long to wait after a plugin is inactive to stop it + } + plugins: { + # alternate configuration for specific plugins, by name, for example: + # + # gstat: { + # enabled: false + # } + } + } + + hooks: { + pre_prompt: [{ null }] # run before the prompt is shown + pre_execution: [{ null }] # run before the repl input is run + env_change: { + PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input + } + display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline + # command_not_found: { null } # return an error message when a command is not found + } + + # menus: [ + # # Configuration for default nushell menus + # # Note the lack of source parameter + # { + # name: completion_menu + # only_buffer_difference: false + # marker: "| " + # type: { + # layout: columnar + # columns: 4 + # col_width: 20 # Optional value. If missing all the screen width is used to calculate column width + # col_padding: 2 + # } + # style: { + # text: green + # selected_text: { attr: r } + # description_text: yellow + # match_text: { attr: u } + # selected_match_text: { attr: ur } + # } + # } + # { + # name: ide_completion_menu + # only_buffer_difference: false + # marker: "| " + # type: { + # layout: ide + # min_completion_width: 0, + # max_completion_width: 50, + # max_completion_height: 10, # will be limited by the available lines in the terminal + # padding: 0, + # border: true, + # cursor_offset: 0, + # description_mode: "prefer_right" + # min_description_width: 0 + # max_description_width: 50 + # max_description_height: 10 + # description_offset: 1 + # marker: "| " + # type: { + # layout: ide + # min_completion_width: 0, + # max_completion_width: 50, + # max_completion_height: 10, # will be limited by the available lines in the terminal + # padding: 0, + # border: true, + # cursor_offset: 0, + # description_mode: "prefer_right" + # min_description_width: 0 + # max_description_width: 50 + # max_description_height: 10 + # description_offset: 1 + # marker: "| " + # type: { + # layout: ide + # min_completion_width: 0, + # max_completion_width: 50, + # max_completion_height: 10, # will be limited by the available lines in the terminal + # padding: 0, + # border: true, + # cursor_offset: 0, + # description_mode: "prefer_right" + # min_description_width: 0 + # max_description_width: 50 + # max_description_height: 10 + # description_offset: 1 + # # If true, the cursor pos will be corrected, so the suggestions match up with the typed text + # # + # # C:\> str + # # str join + # # str trim + # # str split + # correct_cursor_pos: false + # } + # style: { + # text: green + # selected_text: { attr: r } + # description_text: yellow + # match_text: { attr: u } + # selected_match_text: { attr: ur } + # } + # } + # { + # name: history_menu + # only_buffer_difference: true + # marker: "? " + # type: { + # layout: list + # page_size: 10 + # } + # style: { + # text: green + # selected_text: green_reverse + # description_text: yellow + # } + # } + # { + # name: help_menu + # only_buffer_difference: true + # marker: "? " + # type: { + # layout: description + # columns: 4 + # col_width: 20 # Optional value. If missing all the screen width is used to calculate column width + # col_padding: 2 + # selection_rows: 4 + # description_rows: 10 + # } + # style: { + # text: green + # selected_text: green_reverse + # description_text: yellow + # } + # } + # ] + + keybindings: [ + { + name: change_dir_with_fzf + modifier: CONTROL + keycode: Char_t + mode: emacs + event:[ + { edit: Clear } + { + edit: InsertString, + value: "cd (ls | where type == dir | each { |row| $row.name} | str join (char nl) | fzf | decode utf-8 | str trim)" + } + { send: Enter } + ] + } + { + name: completion_menu + modifier: none + keycode: tab + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: ide_completion_menu + modifier: control + keycode: char_n + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: ide_completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: history_menu + modifier: control + keycode: char_r + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: history_menu } + } + { + name: help_menu + modifier: none + keycode: f1 + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: help_menu } + } + { + name: completion_previous_menu + modifier: shift + keycode: backtab + mode: [emacs, vi_normal, vi_insert] + event: { send: menuprevious } + } + { + name: next_page_menu + modifier: control + keycode: char_x + mode: emacs + event: { send: menupagenext } + } + { + name: undo_or_previous_page_menu + modifier: control + keycode: char_z + mode: emacs + event: { + until: [ + { send: menupageprevious } + { edit: undo } + ] + } + } + { + name: escape + modifier: none + keycode: escape + mode: [emacs, vi_normal, vi_insert] + event: { send: esc } # NOTE: does not appear to work + } + { + name: cancel_command + modifier: control + keycode: char_c + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrlc } + } + { + name: quit_shell + modifier: control + keycode: char_d + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrld } + } + { + name: clear_screen + modifier: control + keycode: char_l + mode: [emacs, vi_normal, vi_insert] + event: { send: clearscreen } + } + { + name: search_history + modifier: control + keycode: char_q + mode: [emacs, vi_normal, vi_insert] + event: { send: searchhistory } + } + { + name: open_command_editor + modifier: control + keycode: char_o + mode: [emacs, vi_normal, vi_insert] + event: { send: openeditor } + } + { + name: move_up + modifier: none + keycode: up + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: none + keycode: down + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_left + modifier: none + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: none + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: move_one_word_left + modifier: control + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: control + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_to_line_start + modifier: none + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_start + modifier: control + keycode: char_a + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end_or_take_history_hint + modifier: none + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_end_or_take_history_hint + modifier: control + keycode: char_e + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_start + modifier: control + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end + modifier: control + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolineend } + } + { + name: move_up + modifier: control + keycode: char_p + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: control + keycode: char_t + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: delete_one_character_backward + modifier: none + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: delete_one_character_forward + modifier: none + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_forward + modifier: control + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_backward + modifier: control + keycode: char_h + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: char_w + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: move_left + modifier: none + keycode: backspace + mode: vi_normal + event: { edit: moveleft } + } + { + name: newline_or_run_command + modifier: none + keycode: enter + mode: emacs + event: { send: enter } + } + { + name: move_left + modifier: control + keycode: char_b + mode: emacs + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: control + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: redo_change + modifier: control + keycode: char_g + mode: emacs + event: { edit: redo } + } + { + name: undo_change + modifier: control + keycode: char_z + mode: emacs + event: { edit: undo } + } + { + name: paste_before + modifier: control + keycode: char_y + mode: emacs + event: { edit: pastecutbufferbefore } + } + { + name: cut_word_left + modifier: control + keycode: char_w + mode: emacs + event: { edit: cutwordleft } + } + { + name: cut_line_to_end + modifier: control + keycode: char_k + mode: emacs + event: { edit: cuttolineend } + } + { + name: cut_line_from_start + modifier: control + keycode: char_u + mode: emacs + event: { edit: cutfromstart } + } + { + name: swap_graphemes + modifier: control + keycode: char_t + mode: emacs + event: { edit: swapgraphemes } + } + { + name: move_one_word_left + modifier: alt + keycode: left + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: right + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_one_word_left + modifier: alt + keycode: char_b + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: delete_one_word_forward + modifier: alt + keycode: delete + mode: emacs + event: { edit: deleteword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: backspace + mode: emacs + event: { edit: backspaceword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: char_m + mode: emacs + event: { edit: capitalizechar } + } + # The following bindings with `*system` events require that Nushell has + # been compiled with the `system-clipboard` feature. + # If you want to use the system clipboard for visual selection or to + # paste directly, uncomment the respective lines and replace the version + # using the internal clipboard. + { + name: copy_selection + modifier: control_shift + keycode: char_c + mode: emacs + event: { edit: copyselection } + # event: { edit: copyselectionsystem } + } + { + name: cut_selection + modifier: control_shift + keycode: char_x + mode: emacs + event: { edit: cutselection } + # event: { edit: cutselectionsystem } + } + # { + # name: paste_system + # modifier: control_shift + # keycode: char_v + # mode: emacs + # event: { edit: pastesystem } + # } + { + name: select_all + modifier: control_shift + keycode: char_a + mode: emacs + event: { edit: selectall } + } + ] +} diff --git a/hm/shell/default.nix b/hm/shell/default.nix index bdbf2f7..cad06a6 100644 --- a/hm/shell/default.nix +++ b/hm/shell/default.nix @@ -2,7 +2,6 @@ { imports = [ ./ssh.nix - ./tide.nix ]; programs = { diff --git a/hm/shell/nu.nix b/hm/shell/nu.nix new file mode 100644 index 0000000..5c3caf1 --- /dev/null +++ b/hm/shell/nu.nix @@ -0,0 +1,27 @@ +{ + imports = [ + ./ssh.nix + ./starship + ]; + + programs = { + carapace.enable = true; + nix-index.enable = true; + nushell = { + enable = true; + configFile.text = (builtins.readFile ./config.nu) + "\n" + (builtins.readFile ./zoxide.nu); + shellAliases = { + s = "ssh"; + cl = "clear"; + l = "ls"; + la = "ls -al"; + ll = "ls -l"; + }; + }; + zoxide.enable = true; + fzf = { + enable = true; + fileWidgetOptions = [ "--preview 'bat{}'" ]; + }; + }; +} diff --git a/hm/shell/starship.nu b/hm/shell/starship.nu new file mode 100644 index 0000000..f6ee1ea --- /dev/null +++ b/hm/shell/starship.nu @@ -0,0 +1,38 @@ +# this file is both a valid +# - overlay which can be loaded with `overlay use starship.nu` +# - module which can be used with `use starship.nu` +# - script which can be used with `source starship.nu` +export-env { $env.STARSHIP_SHELL = "nu"; load-env { + STARSHIP_SESSION_KEY: (random chars -l 16) + PROMPT_MULTILINE_INDICATOR: ( + ^/nix/store/3kqgbyp136g6qanfynag62b283fd05pn-starship-1.20.1/bin/starship prompt --continuation + ) + + # Does not play well with default character module. + # TODO: Also Use starship vi mode indicators? + PROMPT_INDICATOR: "" + + PROMPT_COMMAND: {|| + # jobs are not supported + ( + ^/nix/store/3kqgbyp136g6qanfynag62b283fd05pn-starship-1.20.1/bin/starship prompt + --cmd-duration $env.CMD_DURATION_MS + $"--status=($env.LAST_EXIT_CODE)" + --terminal-width (term size).columns + ) + } + + config: ($env.config? | default {} | merge { + render_right_prompt_on_last_line: true + }) + + PROMPT_COMMAND_RIGHT: {|| + ( + ^/nix/store/3kqgbyp136g6qanfynag62b283fd05pn-starship-1.20.1/bin/starship prompt + --right + --cmd-duration $env.CMD_DURATION_MS + $"--status=($env.LAST_EXIT_CODE)" + --terminal-width (term size).columns + ) + } +}} diff --git a/hm/shell/starship/starship.toml b/hm/shell/starship/starship.toml index 47685f3..432a276 100644 --- a/hm/shell/starship/starship.toml +++ b/hm/shell/starship/starship.toml @@ -1,32 +1,28 @@ # Get editor completions based on the config schema "$schema" = 'https://starship.rs/config-schema.json' -# Inserts a blank line between shell prompts -add_newline = true +add_newline = false -format = '$username$directory$character' -right_format = '$container$hostname$status$git_status$git_branch$nix_shell' - -[character] -format = '[❯ ](#FF0066)' +format = '$directory$git_branch$git_status$character' +right_format = '$status $nix_shell $container $username$hostname' [package] disabled = false [username] show_always = false -format = '[$user ]($style)' -style_user = 'bold #FF0066' -style_root = 'bold #A00CE8' +format = '[$user]($style)' +style_user = '#FF0066' +style_root = 'bold red' [hostname] ssh_only = true style = 'bold blue' -format = '[$hostname]($style)' +format = '[@](white)[$hostname]($style)' [container] style = 'dimmed white' -format = '[$name](style)' +format = '[$name]($style)' [status] style = 'bold red' @@ -39,21 +35,31 @@ map_symbol = true disabled = false [directory] -truncate_to_repo = true -truncation_length = 2 +truncate_to_repo = false +truncation_length = 8 truncation_symbol = '…/' style = 'cyan' [git_branch] disabled = false -symbol = ' ' -style = 'bold dimmed green' -format = '[$symbol$branch]($style)' -truncation_length = 4 -# ignore_branches = ['master', 'main'] +style = 'green' +format = '[$branch ]($style)' [git_status] -style = 'bold green' +style = 'yellow' +format = '[$all_status$ahead_behind]($style)' + +# Modify the display for each git status indicator to show count after symbol +stashed = '\$$count ' +ahead = '⇡$count ' +behind = '⇣$count ' +diverged = '⇡$ahead_count⇣$behind_count ' +untracked = '?$count ' +modified = '!$count ' +staged = '+$count ' +renamed = '»$count ' +deleted = '×$count ' +conflicted = '≠$count ' [git_commit] disabled = true diff --git a/hm/shell/tide.nix b/hm/shell/tide.nix deleted file mode 100644 index fb5ecd1..0000000 --- a/hm/shell/tide.nix +++ /dev/null @@ -1,177 +0,0 @@ -{ lib, pkgs, ... }: -{ - programs.fish = { - plugins = lib.mkBefore [ - { - name = "tide"; - src = pkgs.fetchFromGitHub { - owner = "IlanCosman"; - repo = "tide"; - rev = "44c521ab292f0eb659a9e2e1b6f83f5f0595fcbd"; - hash = "sha256-85iU1QzcZmZYGhK30/ZaKwJNLTsx+j3w6St8bFiQWxc="; - }; - } - ]; - shellInit = lib.mkBefore '' - set -U tide_aws_bg_color normal - set -U tide_aws_color FF9900 - set -U tide_aws_icon \uf270 - set -U tide_bun_bg_color normal - set -U tide_bun_color FBF0DF - set -U tide_bun_icon \U000f0cd3 - set -U tide_character_color 5FD700 - set -U tide_character_color_failure FF0000 - set -U tide_character_icon : - set -U tide_character_vi_icon_default \u276e - set -U tide_character_vi_icon_replace \u25b6 - set -U tide_character_vi_icon_visual V - set -U tide_cmd_duration_bg_color normal - set -U tide_cmd_duration_color 87875F - set -U tide_cmd_duration_decimals 0 - set -U tide_cmd_duration_icon \x1d - set -U tide_cmd_duration_threshold 3000 - set -U tide_context_always_display false - set -U tide_context_bg_color normal - set -U tide_context_color_default D7AF87 - set -U tide_context_color_root D7AF00 - set -U tide_context_color_ssh D7AF87 - set -U tide_context_hostname_parts 1 - set -U tide_crystal_bg_color normal - set -U tide_crystal_color FFFFFF - set -U tide_crystal_icon \ue62f - set -U tide_direnv_bg_color normal - set -U tide_direnv_bg_color_denied normal - set -U tide_direnv_color D7AF00 - set -U tide_direnv_color_denied FF0000 - set -U tide_direnv_icon \u25bc - set -U tide_distrobox_bg_color normal - set -U tide_distrobox_color FF00FF - set -U tide_distrobox_icon \U000f01a7 - set -U tide_docker_bg_color normal - set -U tide_docker_color 2496ED - set -U tide_docker_default_contexts default\x1ecolima - set -U tide_docker_icon \uf308 - set -U tide_elixir_bg_color normal - set -U tide_elixir_color 4E2A8E - set -U tide_elixir_icon \ue62d - set -U tide_gcloud_bg_color normal - set -U tide_gcloud_color 4285F4 - set -U tide_gcloud_icon \U000f02ad - set -U tide_git_bg_color normal - set -U tide_git_bg_color_unstable normal - set -U tide_git_bg_color_urgent normal - set -U tide_git_color_branch 5FD700 - set -U tide_git_color_conflicted FF0000 - set -U tide_git_color_dirty D7AF00 - set -U tide_git_color_operation FF0000 - set -U tide_git_color_staged D7AF00 - set -U tide_git_color_stash 5FD700 - set -U tide_git_color_untracked 00AFFF - set -U tide_git_color_upstream 5FD700 - set -U tide_git_icon \x1d - set -U tide_git_truncation_length 24 - set -U tide_git_truncation_strategy \x1d - set -U tide_go_bg_color normal - set -U tide_go_color 00ACD7 - set -U tide_go_icon \ue627 - set -U tide_java_bg_color normal - set -U tide_java_color ED8B00 - set -U tide_java_icon \ue256 - set -U tide_jobs_bg_color normal - set -U tide_jobs_color 5FAF00 - set -U tide_jobs_icon \uf013 - set -U tide_jobs_number_threshold 1000 - set -U tide_kubectl_bg_color normal - set -U tide_kubectl_color 326CE5 - set -U tide_kubectl_icon \U000f10fe - set -U tide_left_prompt_frame_enabled false - set -U tide_left_prompt_items pwd\x1egit\x1echaracter - set -U tide_left_prompt_prefix - set -U tide_left_prompt_separator_diff_color \x20 - set -U tide_left_prompt_separator_same_color \x20 - set -U tide_left_prompt_suffix - set -U tide_nix_shell_bg_color normal - set -U tide_nix_shell_color 7EBAE4 - set -U tide_nix_shell_icon \uf313 - set -U tide_node_bg_color normal - set -U tide_node_color 44883E - set -U tide_node_icon \ue24f - set -U tide_os_bg_color normal - set -U tide_os_color normal - set -U tide_os_icon \uf313 - set -U tide_php_bg_color normal - set -U tide_php_color 617CBE - set -U tide_php_icon \ue608 - set -U tide_private_mode_bg_color normal - set -U tide_private_mode_color FFFFFF - set -U tide_private_mode_icon \U000f05f9 - set -U tide_prompt_add_newline_before true - set -U tide_prompt_color_frame_and_connection 6C6C6C - set -U tide_prompt_color_separator_same_color 949494 - set -U tide_prompt_icon_connection \x20 - set -U tide_prompt_min_cols 34 - set -U tide_prompt_pad_items false - set -U tide_prompt_transient_enabled false - set -U tide_pulumi_bg_color normal - set -U tide_pulumi_color F7BF2A - set -U tide_pulumi_icon \uf1b2 - set -U tide_pwd_bg_color normal - set -U tide_pwd_color_anchors 00AFFF - set -U tide_pwd_color_dirs 0087AF - set -U tide_pwd_color_truncated_dirs 8787AF - set -U tide_pwd_icon \x1d - set -U tide_pwd_icon_home \x1d - set -U tide_pwd_icon_unwritable \uf023 - set -U tide_pwd_markers \x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1ebun\x2elockb\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig - set -U tide_python_bg_color normal - set -U tide_python_color 00AFAF - set -U tide_python_icon \U000f0320 - set -U tide_right_prompt_frame_enabled false - set -U tide_right_prompt_items status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1ebun\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig - set -U tide_right_prompt_prefix \x20 - set -U tide_right_prompt_separator_diff_color \x20 - set -U tide_right_prompt_separator_same_color \x20 - set -U tide_right_prompt_suffix - set -U tide_ruby_bg_color normal - set -U tide_ruby_color B31209 - set -U tide_ruby_icon \ue23e - set -U tide_rustc_bg_color normal - set -U tide_rustc_color F74C00 - set -U tide_rustc_icon \ue7a8 - set -U tide_shlvl_bg_color normal - set -U tide_shlvl_color d78700 - set -U tide_shlvl_icon \uf120 - set -U tide_shlvl_threshold 1 - set -U tide_status_bg_color normal - set -U tide_status_bg_color_failure normal - set -U tide_status_color 5FAF00 - set -U tide_status_color_failure D70000 - set -U tide_status_icon \u2714 - set -U tide_status_icon_failure \u2718 - set -U tide_terraform_bg_color normal - set -U tide_terraform_color 844FBA - set -U tide_terraform_icon \U000f1062 - set -U tide_time_bg_color normal - set -U tide_time_color 5F8787 - set -U tide_time_format - set -U tide_toolbox_bg_color normal - set -U tide_toolbox_color 613583 - set -U tide_toolbox_icon \ue24f - set -U tide_vi_mode_bg_color_default normal - set -U tide_vi_mode_bg_color_insert normal - set -U tide_vi_mode_bg_color_replace normal - set -U tide_vi_mode_bg_color_visual normal - set -U tide_vi_mode_color_default 949494 - set -U tide_vi_mode_color_insert 87AFAF - set -U tide_vi_mode_color_replace 87AF87 - set -U tide_vi_mode_color_visual FF8700 - set -U tide_vi_mode_icon_default D - set -U tide_vi_mode_icon_insert I - set -U tide_vi_mode_icon_replace R - set -U tide_vi_mode_icon_visual V - set -U tide_zig_bg_color normal - set -U tide_zig_color F7A41D - set -U tide_zig_icon \ue6a9 - ''; - }; -} diff --git a/hm/shell/zoxide.nu b/hm/shell/zoxide.nu new file mode 100644 index 0000000..abe72eb --- /dev/null +++ b/hm/shell/zoxide.nu @@ -0,0 +1,61 @@ +# Code generated by zoxide. DO NOT EDIT. + +# ============================================================================= +# +# Hook configuration for zoxide. +# + +# Initialize hook to add new entries to the database. +if (not ($env | default false __zoxide_hooked | get __zoxide_hooked)) { + $env.__zoxide_hooked = true + $env.config = ($env | default {} config).config + $env.config = ($env.config | default {} hooks) + $env.config = ($env.config | update hooks ($env.config.hooks | default {} env_change)) + $env.config = ($env.config | update hooks.env_change ($env.config.hooks.env_change | default [] PWD)) + $env.config = ($env.config | update hooks.env_change.PWD ($env.config.hooks.env_change.PWD | append {|_, dir| + zoxide add -- $dir + })) +} + +# ============================================================================= +# +# When using zoxide with --no-cmd, alias these internal functions as desired. +# + +# Jump to a directory using only keywords. +def --env --wrapped __zoxide_z [...rest:string] { + let arg0 = ($rest | append '~').0 + let arg0_is_dir = (try {$arg0 | path expand | path type}) == 'dir' + let path = if (($rest | length) <= 1) and ($arg0 == '-' or $arg0_is_dir) { + $arg0 + } else { + (zoxide query --exclude $env.PWD -- ...$rest | str trim -r -c "\n") + } + cd $path +} + +# Jump to a directory using interactive search. +def --env --wrapped __zoxide_zi [...rest:string] { + cd $'(zoxide query --interactive -- ...$rest | str trim -r -c "\n")' +} + +# ============================================================================= +# +# Commands for zoxide. Disable these using --no-cmd. +# + +alias cd = __zoxide_z +alias cdi = __zoxide_zi + +# ============================================================================= +# +# Add this to your env file (find it by running `$nu.env-path` in Nushell): +# +# zoxide init nushell | save -f ~/.zoxide.nu +# +# Now, add this to the end of your config file (find it by running +# `$nu.config-path` in Nushell): +# +# source ~/.zoxide.nu +# +# Note: zoxide only supports Nushell v0.89.0+. diff --git a/hm/vscode.nix b/hm/vscode.nix index 6bf28bd..8f52d21 100644 --- a/hm/vscode.nix +++ b/hm/vscode.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, small, ... }: { programs.vscode = { enable = true; @@ -11,7 +11,7 @@ [ ms-python.python ms-toolsai.jupyter - rust-lang.rust-analyzer + (small.pkgs.vscode-extensions.rust-lang.rust-analyzer) serayuzgur.crates ms-vscode.cpptools ecmel.vscode-html-css @@ -42,6 +42,12 @@ version = "0.3.1"; hash = "sha256-C0dzedKMH2tgospzS+o1eqBmNYEKurEOTPbt0t+22t8="; } + { + name = "gruvbox-material"; + publisher = "sainnhe"; + version = "6.5.2"; + hash = "sha256-D+SZEQQwjZeuyENOYBJGn8tqS3cJiWbEkmEqhNRY/i4="; + } ]; }; } diff --git a/hm/wezterm.lua b/hm/wezterm.lua new file mode 100644 index 0000000..2dd4bb7 --- /dev/null +++ b/hm/wezterm.lua @@ -0,0 +1,17 @@ +return { + font = wezterm.font_with_fallback { + "Mononoki Nerd Font", + -- "JetBrainsMono Nerd Font", + -- "azuki_font" + -- { family = "CozetteHiDpi", weight = "Regular" }, + -- "FiraCode Nerd Font", + }, + font_size = 10, + -- + -- man fix the nix config + front_end = "WebGpu", + + enable_tab_bar = false, + color_scheme = 'Gruvbox Material (Gogh)', + window_background_opacity = 0.8, +} diff --git a/hm/wezterm.nix b/hm/wezterm.nix new file mode 100644 index 0000000..87ae4e3 --- /dev/null +++ b/hm/wezterm.nix @@ -0,0 +1,7 @@ +{ + stylix.targets.wezterm.enable = false; + programs.wezterm = { + enable = false; + # extraConfig = builtins.readFile ./wezterm.lua; + }; +} diff --git a/hm/wm/default.nix b/hm/wm/default.nix index a399a95..d23d40b 100644 --- a/hm/wm/default.nix +++ b/hm/wm/default.nix @@ -1,13 +1,13 @@ { imports = [ ./hyprland.nix - ./alacritty.nix - ./kitty.nix ./mako.nix ./fcitx.nix ./gtk.nix ./fuzzel.nix ./ironbar.nix - ./swaylock.nix + ./foot.nix + ./hyprlock.nix + ./hyprpaper.nix ]; } diff --git a/hm/wm/foot.nix b/hm/wm/foot.nix new file mode 100644 index 0000000..f960279 --- /dev/null +++ b/hm/wm/foot.nix @@ -0,0 +1,14 @@ +{ lib, ... }: +{ + programs.foot = { + enable = true; + settings = { + main = { + # term = "xterm-256color"; + }; + colors = { + alpha = lib.mkForce 0.8; + }; + }; + }; +} diff --git a/hm/wm/hyprland.nix b/hm/wm/hyprland.nix index 5f60ac3..0d387cb 100644 --- a/hm/wm/hyprland.nix +++ b/hm/wm/hyprland.nix @@ -1,12 +1,10 @@ { - hyprpaper, hyprland, pkgs, ... }: { services.cliphist.enable = true; - services.hyprpaper.package = hyprpaper.packages.${pkgs.system}.hyprpaper; wayland.windowManager.hyprland = { enable = true; @@ -14,27 +12,31 @@ systemd.enableXdgAutostart = true; settings = { "$mod" = "SUPER"; - "$term" = "alacritty"; + "$term" = "foot"; "$runner" = "fuzzel"; "$files" = "nautilus"; "$browser" = "brave --enable-features=TouchpadOverscrollHistoryNavigation"; + "$lock" = "hyprlock"; exec-once = [ - "cliphist wipe" + "cliphist wipe" # wipe clipboard history "ironbar &" "wl-paste --type text --watch cliphist store" # Stores only text data "wl-paste --type image --watch cliphist store" # Stores only image data - "mako &" + "mako &" # notification daemon + "wpctl set-mute @DEFAULT_AUDIO_SINK@ 1" # make sure speakers are muted on startup ]; monitor = [ - "eDP-1,prefferd,auto,2" + "eDP-1,2880x1920@120.00Hz,auto,2,vrr,1" + "desc:GIGA-BYTE TECHNOLOGY CO. LTD. M27Q 20530B002634,2560x1440@169.83Hz,auto-left,1,vrr,1" ",preferred,auto,auto" ]; misc.vfr = true; input = { kb_layout = "us"; + kb_options = "compose:caps"; repeat_rate = 50; repeat_delay = 250; touchpad = { @@ -103,6 +105,7 @@ ", Print, exec, grimblast copy area" "$mod, Print, exec, grimblast copy screen" "$mod, Return, exec, $term" + # "$mod, Return, exec, [float;tile] wezterm start --always-new-process" "$mod, Q, killactive" "$mod Shift, R, exec, hyprctl reload && pkill -USR2 waybar" "$mod, P, pseudo" # dwindle @@ -110,7 +113,7 @@ "$mod Shift, Space, togglefloating" "$mod, F, fullscreen" "$mod, V, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy" - "$mod, L, exec, swaylock" + "$mod, L, exec, $lock" # move focus "$mod, Left, movefocus, l" @@ -146,7 +149,7 @@ ); # works while locked bindl = [ - # ",switch:Lid Switch, exec, hyprlock" + ",switch:Lid Switch, exec, $lock" # audio ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" diff --git a/hm/wm/hyprlock.nix b/hm/wm/hyprlock.nix new file mode 100644 index 0000000..cc43801 --- /dev/null +++ b/hm/wm/hyprlock.nix @@ -0,0 +1,51 @@ +{ + programs.hyprlock = { + enable = true; + settings = { + background = [ + { + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + noise = 8.0e-2; + brightness = 0.8; + contrast = 1.4; + vibrancy = 0.3; + vibrancy_darkness = 0.5; + } + ]; + + label = [ + { + monitor = ""; + text = "$TIME"; + text_align = "center"; # center/right or any value for default left. multi-line text alignment inside label container + color = "rgb(200, 200, 200)"; + font_size = 96; + font_family = "CozetteVector"; + + position = "0, 80"; + halign = "center"; + valign = "center"; + } + ]; + + input-field = [ + { + size = "400, 75"; + position = "0, 300"; + valign = "bottom"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(212, 190, 152)"; + inner_color = "rgb(29, 32, 33)"; + outer_color = "rgb(212, 190, 152)"; + outline_thickness = 1; + rounding = "-1"; + placeholder_text = "pwease say the magic words"; + } + ]; + }; + }; +} diff --git a/hm/wm/hyprpaper.nix b/hm/wm/hyprpaper.nix new file mode 100644 index 0000000..bae99ac --- /dev/null +++ b/hm/wm/hyprpaper.nix @@ -0,0 +1,15 @@ +{ hyprpaper, pkgs, ... }: +let + wallpaper = "${../wallpapers/lain_lucy.jpg}"; +in +{ + services.hyprpaper = { + enable = true; + package = hyprpaper.packages.${pkgs.system}.hyprpaper; + # stylix handling it + # settings = { + # preload = [ wallpaper ]; + # wallpaper = [ ",${wallpaper}" ]; + # }; + }; +} diff --git a/hm/wm/ironbar.nix b/hm/wm/ironbar.nix index b7188b0..a5b90fe 100644 --- a/hm/wm/ironbar.nix +++ b/hm/wm/ironbar.nix @@ -67,7 +67,7 @@ /* -- base styles -- */ * { - font-family: FiraCode Nerd Font, sans-serif; + font-family: Roboto, sans-serif; font-size: 10px; border: none; border-radius: 0; diff --git a/hm/xcompose.nix b/hm/xcompose.nix new file mode 100644 index 0000000..fad9457 --- /dev/null +++ b/hm/xcompose.nix @@ -0,0 +1,5 @@ +{ + home.file.".XCompose" = { + source = ./XCompose; + }; +} diff --git a/hosts/crystal-heart/default.nix b/hosts/crystal-heart/default.nix new file mode 100644 index 0000000..a79ae95 --- /dev/null +++ b/hosts/crystal-heart/default.nix @@ -0,0 +1,90 @@ +# { +# config, +# pkgs, +# unstable, +# inputs, +# lib, +# ... +# }: +# { +# imports = [ +# ../system.nix +# # /etc/nixos/hardware-configuration.nix +# ]; + +# nix.buildMachines = [ +# { +# hostName = "vm"; +# system = "x86_64-linux"; +# protocol = "ssh-ng"; +# # if the builder supports building for multiple architectures, +# # replace the previous line by, e.g. +# # systems = ["x86_64-linux" "aarch64-linux"]; +# maxJobs = 16; +# speedFactor = 5; +# supportedFeatures = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86_64-v3" +# ]; +# mandatoryFeatures = [ ]; +# } +# ]; +# nix.distributedBuilds = false; +# # optional, useful when the builder has a faster internet connection than yours +# nix.extraOptions = '' +# builders-use-substitutes = true +# ''; + +# networking = { +# hostName = "crystal-heart"; +# useDHCP = false; +# defaultGateway = "128.101.131.1"; +# interfaces = { +# enp1s0.ipv4.addresses = [ +# { +# address = "128.101.131.228"; +# prefixLength = 24; +# } +# { +# address = "128.101.131.204"; +# prefixLength = 24; +# } +# ]; +# }; +# }; + +# # User info +# security.polkit.enable = true; + +# users.users.nyadiia = { +# extraGroups = [ +# "networkmanager" +# "video" +# "wheel" +# "docker" +# ]; +# openssh.authorizedKeys.keys = [ +# "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUjzKy5ccDe6Ij8zQG3/zqIjoKwo3kfU/0Ui50hZs+r" +# ]; +# }; + +# # disable pulseaudio and enable pipewire +# hardware.pulseaudio.enable = false; +# security.rtkit.enable = true; +# services = { +# # Enable the OpenSSH daemon. +# openssh = { +# enable = true; +# settings.PasswordAuthentication = false; +# settings.KbdInteractiveAuthentication = false; +# }; + +# # transmission = { +# # enable = true; #Enable transmission daemon +# # openRPCPort = true; #Open firewall for RPC +# # }; +# }; +# } \ No newline at end of file diff --git a/hosts/farewell/configuration.nix b/hosts/farewell/configuration.nix new file mode 100644 index 0000000..b64a231 --- /dev/null +++ b/hosts/farewell/configuration.nix @@ -0,0 +1,84 @@ +# { +# config, +# pkgs, +# unstable, +# inputs, +# lib, +# ... +# }: +# { +# nix.buildMachines = [ +# { +# hostName = "vm"; +# system = "x86_64-linux"; +# protocol = "ssh-ng"; +# # if the builder supports building for multiple architectures, +# # replace the previous line by, e.g. +# # systems = ["x86_64-linux" "aarch64-linux"]; +# maxJobs = 16; +# speedFactor = 5; +# supportedFeatures = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86_64-v3" +# ]; +# mandatoryFeatures = [ ]; +# } +# ]; +# nix.distributedBuilds = false; +# # optional, useful when the builder has a faster internet connection than yours +# nix.extraOptions = '' +# builders-use-substitutes = true +# ''; + +# nix.settings.system-features = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86-64-v2" +# "gccarch-sandybridge" +# ]; + +# networking.hostName = "farewell"; + +# # User info +# security.polkit.enable = true; + +# users.users.nyadiia = { +# extraGroups = [ +# "networkmanager" +# "video" +# "wheel" +# "docker" +# ]; +# openssh.authorizedKeys.keys = [ +# "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUjzKy5ccDe6Ij8zQG3/zqIjoKwo3kfU/0Ui50hZs+r" +# ]; +# }; + +# # disable pulseaudio and enable pipewire +# hardware.pulseaudio.enable = false; +# security.rtkit.enable = true; +# services = { +# # Enable the OpenSSH daemon. +# openssh = { +# enable = true; +# settings.PasswordAuthentication = false; +# settings.KbdInteractiveAuthentication = false; +# }; + +# # transmission = { +# # enable = true; #Enable transmission daemon +# # openRPCPort = true; #Open firewall for RPC +# # }; + +# # # framework specific services +# # fwupd.enable = true; + +# # general services +# printing.enable = true; +# }; +# } diff --git a/hosts/farewell/hardware-configuration.nix b/hosts/farewell/hardware-configuration.nix new file mode 100755 index 0000000..7af2afb --- /dev/null +++ b/hosts/farewell/hardware-configuration.nix @@ -0,0 +1,48 @@ +# # 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" +# "ehci_pci" +# "ahci" +# "usbhid" +# "usb_storage" +# "sd_mod" +# ]; +# boot.initrd.kernelModules = [ ]; +# boot.kernelModules = [ "kvm-intel" ]; +# boot.extraModulePackages = [ ]; + +# fileSystems."/" = { +# device = "/dev/disk/by-uuid/a10cbb89-4450-465a-be21-c57df2d9a195"; +# fsType = "ext4"; +# }; + +# fileSystems."/boot" = { +# device = "/dev/disk/by-uuid/ED8D-03C9"; +# fsType = "vfat"; +# }; + +# swapDevices = [ { device = "/dev/disk/by-uuid/8bc5dcb9-1c49-4d83-8165-397c5984699f"; } ]; + +# # 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.eno1.useDHCP = lib.mkDefault true; + +# nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +# } diff --git a/hosts/hyprdash/configuration.nix b/hosts/hyprdash/configuration.nix new file mode 100644 index 0000000..466cbc1 --- /dev/null +++ b/hosts/hyprdash/configuration.nix @@ -0,0 +1,255 @@ +{ + pkgs, + hyprland, + config, + lib, + ... +}: +{ + networking = { + networkmanager.enable = true; + hostName = "hyprdash"; + }; + + # User info + nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; + + # programs.hyprlock.enable = true; + + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + + environment.systemPackages = + (with pkgs; [ + yubikey-manager-qt + yubikey-personalization-gui + yubikey-personalization + yubikey-manager + + powertop + swtpm + libvirt + python3 + dnsmasq + qemu_full + matlab + pavucontrol + bluetuith + framework-tool + wineWowPackages.waylandFull + polkit_gnome + gparted + nautilus + fprintd + # (pkgs.callPackage ./pentablet.nix {}) + ]) + ++ (with pkgs.gst_all_1; [ + gstreamer + # Common plugins like "filesrc" to combine within e.g. gst-launch + gst-plugins-base + # Specialized plugins separated by quality + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + # Plugins to reuse ffmpeg to play almost every video format + gst-libav + # Support the Video Audio (Hardware) Acceleration API + gst-vaapi + ]); + + programs = { + hyprland.enable = true; + hyprland.package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + virt-manager.enable = true; + seahorse.enable = true; + light.enable = true; + steam.enable = true; + steam.gamescopeSession.enable = true; + gnupg = { + agent.enableSSHSupport = true; + }; + }; + + users.users.nyadiia = { + extraGroups = [ + "networkmanager" + "video" + "wheel" + "libvirtd" + "docker" + "vitamtp" + "tss" + ]; + }; + + services.udev.packages = [ + pkgs.yubikey-manager-qt + pkgs.yubikey-personalization-gui + pkgs.yubikey-personalization + ]; + + systemd = { + user.services.polkit-gnome-authentication-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; # Without this errors will spam on screen + # Without these bootlogs will spam on screen + TTYReset = true; + TTYVHangup = true; + TTYVTDisallocate = true; + }; + }; + + # powerManagement.powertop.enable = true; + powerManagement = { + enable = true; + powertop.enable = true; + }; + # disable pulseaudio and enable pipewire + hardware = { + pulseaudio.enable = false; + bluetooth = { + enable = true; # enables support for Bluetooth + powerOnBoot = true; # powers up the default Bluetooth controller on boot + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + Experimental = true; + }; + }; + }; + }; + + security = { + polkit.enable = true; + rtkit.enable = true; + pam.services = { + "sudo".fprintAuth = true; + "su".fprintAuth = true; + hyprlock.fprintAuth = false; + greetd.enableGnomeKeyring = true; + }; + tpm2 = { + enable = true; + pkcs11.enable = true; + tctiEnvironment.enable = true; + }; + }; + + systemd.sleep.extraConfig = "HibernateDelaySec=1h"; + services = { + pcscd.enable = true; + gnome.sushi.enable = true; + gnome.gnome-keyring.enable = true; + greetd = { + enable = true; + # settings.default_session = { + # command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks -r --cmd Hyprland"; + # user = "greeter"; + # }; + settings = { + default_session = { + # command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --greeting 'Welcome to PwNixOS!' --cmd Hyprland"; + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks -r --cmd Hyprland"; + user = "nyadiia"; + }; + initial_session = { + command = "${pkgs.hyprland}/bin/Hyprland"; + user = "nyadiia"; + }; + }; + }; + + # framework specific services + # logind = { + # lidSwitch = "suspend-then-hibernate"; + # extraConfig = '' + # HandlePowerKey=suspend-then-hibernate + # IdleAction=suspend-then-hibernate + # IdleActionSec=2m + # ''; + # }; + logind.extraConfig = '' + # don’t shutdown when power button is short-pressed + HandlePowerKey=poweroff + ''; + fprintd.enable = true; + fwupd = { + enable = true; + extraRemotes = [ "lvfs-testing" ]; + uefiCapsuleSettings.DisableCapsuleUpdateOnDisk = true; + }; + blueman.enable = true; + thermald = { + enable = true; + configFile = ./thermal-conf.xml; + }; + tlp = { + enable = true; + # settings = { + # CPU_SCALING_GOVERNOR_ON_AC = "performance"; + # CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + # CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + # CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + # CPU_MIN_ON_AC = 0; + # CPU_MAX_ON_AC = 100; + # CPU_MIN_ON_BAT = 0; + # CPU_MAX_ON_BAT = 30; + # CPU_BOOST_ON_AC = 1; + # CPU_BOOST_ON_BAT = 0; + # CPU_HWP_DYN_BOOST_ON_AC = 1; + # CPU_HWP_DYN_BOOST_ON_BAT = 0; + # + # INTEL_GPU_MIN_FREQ_ON_AC = 100; + # INTEL_GPU_MIN_FREQ_ON_BAT = 100; + # INTEL_GPU_MAX_FREQ_ON_AC = 1300; + # INTEL_GPU_MAX_FREQ_ON_BAT = 900; + # INTEL_GPU_BOOST_FREQ_ON_AC = 1300; + # INTEL_GPU_BOOST_FREQ_ON_BAT = 1000; + # + # NMI_WATCHDOG = 0; + # PLATFORM_PROFILE_ON_AC = "performance"; + # PLATFORM_PROFILE_ON_BAT = "power"; + # DISK_DEVICES = "nvme0n1"; + # WIFI_PWR_ON_AC = "off"; + # WIFI_PWR_ON_BAT = "off"; + # WOL_DISABLE = "Y"; + # + # PCIE_ASPM_ON_AC = "default"; + # PCIE_ASPM_ON_BAT = "powersupersave"; + # RUNTIME_PM_ON_AC = "on"; + # RUNTIME_PM_ON_BAT = "auto"; + # }; + }; + upower.enable = true; + + # general services + printing.enable = true; + colord.enable = true; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + tumbler.enable = true; # Thumbnail support for images + psd.enable = false; + zfs = { + autoScrub.enable = true; + trim.enable = true; + }; + }; +} diff --git a/hosts/hyprdash/hardware-configuration.nix b/hosts/hyprdash/hardware-configuration.nix index 0e7fbcf..20f6594 100644 --- a/hosts/hyprdash/hardware-configuration.nix +++ b/hosts/hyprdash/hardware-configuration.nix @@ -4,6 +4,7 @@ { config, lib, + pkgs, modulesPath, ... }: @@ -11,30 +12,71 @@ { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot = { - initrd.availableKernelModules = [ - "xhci_pci" - "thunderbolt" - "nvme" - ]; - initrd.kernelModules = [ ]; - kernelModules = [ "kvm-intel" ]; - extraModulePackages = [ ]; + networking.hostId = "215f7219"; + zramSwap.enable = true; + + boot.plymouth.enable = true; + boot.plymouth.theme = lib.mkForce "bgrt"; + boot.loader.grub.gfxmodeEfi = "1440x960"; + + boot.initrd.systemd.enable = true; + boot.initrd.services.lvm.enable = true; + # boot.initrd.preLVMCommands = ''alias lvm=echo $@''; + + boot.kernelParams = [ + "nohibernate" + "quiet" + "mem_sleep_default=deep" + "nowatchdog" + "resume=UUID=4b07b1e0-bc31-438c-9adc-4cf15bb48245" + ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "thunderbolt" + "nvme" + "usb_storage" + "sd_mod" + "aesni_intel" + "cryptd" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + boot.initrd.luks.devices = { + "luks-rpool-nvme-Samsung_SSD_970_EVO_Plus_1TB_S59ANMFNB34408L-part2".device = "/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_1TB_S59ANMFNB34408L-part2"; }; fileSystems."/" = { - device = "/dev/disk/by-uuid/46c29583-63b5-41c2-9002-45c0c4566d41"; - fsType = "ext4"; + device = "rpool/root"; + fsType = "zfs"; }; - boot.initrd.luks.devices."luks-7575dd14-5a34-4696-aed8-f417b99127a2".device = "/dev/disk/by-uuid/7575dd14-5a34-4696-aed8-f417b99127a2"; + fileSystems."/home" = { + device = "rpool/home"; + fsType = "zfs"; + }; fileSystems."/boot" = { - device = "/dev/disk/by-uuid/36AB-C03E"; + device = "/dev/disk/by-uuid/5B33-A077"; fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + fileSystems."/var" = { + device = "rpool/var"; + fsType = "zfs"; + }; + + fileSystems."/nix" = { + device = "rpool/nix"; + fsType = "zfs"; }; - swapDevices = [ { device = "/dev/disk/by-uuid/e67a1cf4-bf0d-4ea6-a923-3fec8a1e86d2"; } ]; + boot.resumeDevice = "/dev/disk/by-uuid/4b07b1e0-bc31-438c-9adc-4cf15bb48245"; + swapDevices = [ { device = "/dev/disk/by-uuid/4b07b1e0-bc31-438c-9adc-4cf15bb48245"; } ]; # 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 diff --git a/hosts/hyprdash/thermal-conf.xml b/hosts/hyprdash/thermal-conf.xml new file mode 100644 index 0000000..0913821 --- /dev/null +++ b/hosts/hyprdash/thermal-conf.xml @@ -0,0 +1,92 @@ + + + + + Auto generated + Laptop + QUIET + + 0 + 5000 + 28000 + 28000 + 32000 + 250 + + + + auto_zone_0 + + + TCPU + 105000 + Passive + + B0D4 + 5 + + + + + + auto_zone_1 + + + SEN5 + 85000 + Passive + + B0D4 + 5 + + + + + + auto_zone_2 + + + SEN3 + 52000 + Passive + + B0D4 + 5 + 2147483647 + + + + SEN3 + 55000 + Passive + + B0D4 + 5 + 28000000 + + + + SEN3 + 70000 + Passive + + B0D4 + 5 + 28000000 + + + + SEN3 + 75000 + Passive + + B0D4 + 5 + + + + + + + + diff --git a/hosts/system.nix b/hosts/system.nix new file mode 100644 index 0000000..b7980b8 --- /dev/null +++ b/hosts/system.nix @@ -0,0 +1,222 @@ +{ pkgs, self, ... }: + +{ + networking.networkmanager.enable = true; + systemd.services.NetworkManager-wait-online.enable = false; + + # User info + programs = { + nix-ld.enable = true; + fish = { + enable = true; + promptInit = '' + ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source + ''; + }; + ssh.askPassword = "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; + ssh.startAgent = false; + gnupg.agent.enable = true; + dconf.enable = true; + command-not-found.enable = false; + nix-index = { + enable = true; + enableFishIntegration = true; + enableZshIntegration = false; + enableBashIntegration = false; + }; + nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 14d --keep 10 --nogcroots"; + flake = "/home/nyadiia/snow/"; + }; + }; + + virtualisation = { + docker = { + enable = true; + enableOnBoot = true; + }; + # Enable virtualization + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + }; + + home-manager.backupFileExtension = "bak"; + + environment.systemPackages = with pkgs; [ + nmap + tldr + fd + btop + tmux + neovim + wget + curl + usbutils + links2 + ripgrep + any-nix-shell + fastfetch + yazi + profile-sync-daemon + glib + + # not really needed on desktop (home-manager handles it) but nice for servers + git + + # iphone bs + libimobiledevice + idevicerestore + ifuse + + # fs + ntfs3g + zip + unzip + lz4 + ]; + + services = { + xserver.xkb.layout = "us"; + kmscon = { + enable = true; + hwRender = true; + extraConfig = '' + font-dpi=192 + ''; + fonts = [ + { + name = "Mononoki Nerd Font"; + package = pkgs.nerdfonts.override { + fonts = [ "Mononoki" ]; + }; + } + ]; + + }; + + chrony.enable = true; + tailscale.enable = true; + + # iphone stuff + usbmuxd.enable = true; + usbmuxd.package = pkgs.usbmuxd2; + + # disk management + gvfs.enable = true; + udisks2.enable = true; + devmon.enable = true; + + dbus = { + enable = true; + packages = [ pkgs.dconf ]; + }; + + syncthing = { + enable = true; + user = "nyadiia"; + dataDir = "/home/nyadiia/Documents"; # Default folder for new synced folders + configDir = "/home/nyadiia/Documents/.config/syncthing"; # Folder for Syncthing's settings and keys + }; + }; + + users.users.nyadiia = { + isNormalUser = true; + home = "/home/nyadiia"; + # for systems that don't use home-manager ( like servers ) + shell = pkgs.fish; + # !! please use home-manager if you can !! + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUjzKy5ccDe6Ij8zQG3/zqIjoKwo3kfU/0Ui50hZs+r" + ]; + }; + + # Fonts config + fonts = { + enableDefaultPackages = true; + packages = with pkgs; [ + corefonts + vistafonts + noto-fonts-emoji + noto-fonts-cjk-sans + twitter-color-emoji + (nerdfonts.override { + fonts = [ + "Mononoki" + ]; + }) + cozette + azuki + ]; + fontconfig = { + defaultFonts = { + serif = [ "Roboto" ]; + sansSerif = [ "Roboto" ]; + monospace = [ "Mononoki Nerd Font" ]; + }; + }; + }; + + nix = { + settings = { + auto-optimise-store = true; + experimental-features = [ + "nix-command" + "flakes" + ]; + trusted-users = [ + "root" + "@wheel" + ]; + substituters = [ + # ironbar + "https://cache.garnix.io" + # hyprland + "https://hyprland.cachix.org" + "https://numtide.cachix.org" + ]; + trusted-public-keys = [ + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE=" + ]; + }; + # gc = { + # automatic = true; + # dates = "weekly"; + # options = "--delete-older-than 30d"; + # }; + }; + + nixpkgs.config.allowUnfree = true; + + # Use the systemd-boot EFI boot loader. + #boot.loader.systemd-boot.enable = true; + boot.loader = { + efi.canTouchEfiVariables = true; + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + }; + }; + + time.timeZone = "America/Chicago"; + i18n = { + defaultLocale = "en_US.UTF-8"; + extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + }; + # Configure keymap in X11 + system.stateVersion = "23.11"; +} diff --git a/hosts/wavedash/configuration.nix b/hosts/wavedash/configuration.nix new file mode 100644 index 0000000..e61ab91 --- /dev/null +++ b/hosts/wavedash/configuration.nix @@ -0,0 +1,161 @@ +# { +# config, +# pkgs, +# unstable, +# inputs, +# ... +# }: +# { +# nix.buildMachines = [ +# { +# hostName = "farewell"; +# system = "x86_64-linux"; +# protocol = "ssh-ng"; +# # if the builder supports building for multiple architectures, +# # replace the previous line by, e.g. +# # systems = ["x86_64-linux" "aarch64-linux"]; +# maxJobs = 8; +# speedFactor = 2; +# supportedFeatures = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86_64-v3" +# ]; +# mandatoryFeatures = [ ]; +# } +# { +# hostName = "vm"; +# system = "x86_64-linux"; +# protocol = "ssh-ng"; +# # if the builder supports building for multiple architectures, +# # replace the previous line by, e.g. +# # systems = ["x86_64-linux" "aarch64-linux"]; +# maxJobs = 16; +# speedFactor = 5; +# supportedFeatures = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86_64-v3" +# ]; +# mandatoryFeatures = [ ]; +# } +# ]; +# nix.distributedBuilds = false; +# # optional, useful when the builder has a faster internet connection than yours +# nix.extraOptions = '' +# builders-use-substitutes = true +# ''; + +# nix.settings.system-features = [ +# "nixos-test" +# "benchmark" +# "big-parallel" +# "kvm" +# "gccarch-x86-64-v3" +# "gccarch-x86-64-v4" +# "gccarch-tigerlake" +# ]; +# # nixpkgs.hostPlatform = { +# # gcc.arch = "x86-64-v4"; +# # system = "x86_64-linux"; +# # }; +# networking.networkmanager.enable = true; +# networking.hostName = "wavedash"; + +# # User info +# nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; + +# programs = { +# virt-manager.enable = true; +# seahorse.enable = true; +# light.enable = true; +# thunar = { +# enable = true; +# plugins = with pkgs.xfce; [ +# thunar-archive-plugin +# thunar-volman +# ]; +# }; +# steam.enable = true; +# steam.gamescopeSession.enable = true; +# }; + +# security.polkit.enable = true; + +# users.users.nyadiia = { +# extraGroups = [ +# "networkmanager" +# "video" +# "wheel" +# "libvirtd" +# "docker" +# ]; +# }; + +# systemd.services.greetd.serviceConfig = { +# Type = "idle"; +# StandardInput = "tty"; +# StandardOutput = "tty"; +# StandardError = "journal"; # Without this errors will spam on screen +# # Without these bootlogs will spam on screen +# TTYReset = true; +# TTYVHangup = true; +# TTYVTDisallocate = true; +# }; + +# # Enable OpenGL +# hardware.opengl = { +# enable = true; +# driSupport = true; +# driSupport32Bit = true; +# }; + +# # Load nvidia driver for Xorg and Wayland +# services.xserver.videoDrivers = [ "nvidia" ]; # or "nvidiaLegacy470 etc. + +# hardware.nvidia = { +# package = config.boot.kernelPackages.nvidiaPackages.stable; +# modesetting.enable = true; +# nvidiaSettings = true; + +# # Nvidia power management. Experimental, and can cause sleep/suspend to fail. +# # Enable this if you have graphical corruption issues or application crashes after waking +# # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead +# # of just the bare essentials. +# powerManagement.enable = false; + +# # Fine-grained power management. Turns off GPU when not in use. +# # Experimental and only works on modern Nvidia GPUs (Turing or newer). +# powerManagement.finegrained = false; +# }; + +# # disable pulseaudio and enable pipewire +# hardware.pulseaudio.enable = false; +# security.rtkit.enable = true; +# services = { +# greetd = { +# enable = true; +# settings.default_session = { +# command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland"; +# user = "greeter"; +# }; +# }; + +# # general services +# printing.enable = true; +# pipewire = { +# enable = true; +# alsa.enable = true; +# alsa.support32Bit = true; +# pulse.enable = true; +# }; +# gvfs.enable = true; # Mount, trash, and other functionalities +# tumbler.enable = true; # Thumbnail support for images +# }; + +# boot.kernelParams = [ "mem_sleep_default=deep" ]; +# } diff --git a/hosts/wavedash/hardware-configuration.nix b/hosts/wavedash/hardware-configuration.nix new file mode 100644 index 0000000..eeb77c6 --- /dev/null +++ b/hosts/wavedash/hardware-configuration.nix @@ -0,0 +1,48 @@ +# # 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" +# "thunderbolt" +# "nvme" +# "usb_storage" +# "sd_mod" +# ]; +# boot.initrd.kernelModules = [ ]; +# boot.kernelModules = [ "kvm-intel" ]; +# boot.extraModulePackages = [ ]; + +# fileSystems."/" = { +# device = "/dev/disk/by-uuid/aa7ef197-e488-45af-a9bd-9f42bb915bab"; +# fsType = "btrfs"; +# options = [ "subvol=@" ]; +# }; + +# fileSystems."/boot" = { +# device = "/dev/disk/by-uuid/36AB-C03E"; +# 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.wlp170s0.useDHCP = lib.mkDefault true; + +# nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +# } diff --git a/modules/gnome.nix b/modules/gnome.nix new file mode 100644 index 0000000..0bf4632 --- /dev/null +++ b/modules/gnome.nix @@ -0,0 +1,35 @@ +{ pkgs, ... }: +{ + # GNOME + services.xserver = { + enable = true; + displayManager.gdm.enable = true; + desktopManager.gnome = { + enable = true; + # enable fractional scaling on wayland + extraGSettingsOverridePackages = [ pkgs.gnome.mutter ]; + extraGSettingsOverrides = '' + [org.gnome.mutter] + experimental-features=['scale-monitor-framebuffer'] + ''; + }; + }; + + environment.gnome.excludePackages = + (with pkgs; [ + gnome-photos + gnome-tour + ]) + ++ (with pkgs.gnome; [ + cheese # webcam tool + gedit # text editor + epiphany # web browser + geary # email reader + evince # document viewer + totem # video player + tali # poker game + iagno # go game + hitori # sudoku game + atomix # puzzle game + ]); +} diff --git a/modules/stylix.nix b/modules/stylix.nix index 33b9b3f..eaf6c82 100644 --- a/modules/stylix.nix +++ b/modules/stylix.nix @@ -2,7 +2,7 @@ { stylix = { enable = true; - image = ../wallpapers/camping.png; + image = ../wallpapers/lain_lucy.jpg; polarity = "dark"; base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-hard.yaml"; fonts = { @@ -13,24 +13,9 @@ serif = config.stylix.fonts.sansSerif; - # serif = { - # package = pkgs.roboto-serif; - # name = "Roboto Serif"; - # }; - # - # monospace = { - # package = azuki-pkgs.azuki; - # name = "azuki_font"; - # }; - - # sansSerif = { - # package = pkgs.roboto; - # name = "Roboto"; - # }; - monospace = { - package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; }; - name = "FiraCode Nerd Font"; + package = pkgs.nerdfonts.override { fonts = [ "Mononoki" ]; }; + name = "Mononoki Nerd Font"; }; emoji = { @@ -52,6 +37,8 @@ }; targets = { regreet.enable = false; + console.enable = false; + grub.enable = true; }; }; } diff --git a/modules/system.nix b/modules/system.nix index ea1388c..13d52cb 100644 --- a/modules/system.nix +++ b/modules/system.nix @@ -122,7 +122,6 @@ ]; nix = { - package = pkgs.nixFlakes; settings = { auto-optimise-store = true; experimental-features = [ diff --git a/packages/azuki.nix b/packages/azuki.nix new file mode 100644 index 0000000..9d05214 --- /dev/null +++ b/packages/azuki.nix @@ -0,0 +1,69 @@ +{ + stdenvNoCC, + fetchzip, +}: + +let + fonts = [ + { + name = "azuki"; + downloadVersion = "121"; + hash = "sha256-AMpEJDD8lN0qWJ5C0y4V+/2JE/pKQrUHGfKHcnV+dhA="; + } + { + name = "azuki-b"; + downloadVersion = "B120"; + hash = "sha256-GoXnDX9H6D1X0QEgrD2jmQp7ek081PpO+xR3OdIY8Ck="; + } + { + name = "azuki-l"; + downloadVersion = "L120"; + hash = "sha256-rvWvSuvLnK3m2+iyKPQyIB1UGjg8dAW5oygjsLCQZ48="; + } + { + name = "azuki-lb"; + downloadVersion = "LB100"; + hash = "sha256-zpGomVshCe2W2Z2C5UGtVrJ2k7F//MftndSHPHmG290="; + } + { + name = "azuki-lp"; + downloadVersion = "LP100"; + hash = "sha256-Q/ND3dv8q7WTQx4oYVY5pTiGl4Ht89oA+tuCyfPOLUk="; + } + { + name = "azuki-p"; + downloadVersion = "P100"; + hash = "sha256-s4uodxyXP5R7jwkzjmg6qJZCllJ/MtgkkVOeELI8hLI="; + } + ]; + +in +stdenvNoCC.mkDerivation { + pname = "azuki"; + version = "0-unstable-2021-07-02"; + + sourceRoot = "azuki"; + + srcs = map ( + { + name, + downloadVersion, + hash, + }: + fetchzip { + url = "https://azukifont.com/font/azukifont${downloadVersion}.zip"; + stripRoot = false; + inherit name hash; + } + ) fonts; + + installPhase = '' + runHook preInstall + + for font in $srcs; do + install -Dm644 $font/azukifont*/*.ttf -t $out/share/fonts/truetype + done + + runHook postInstall + ''; +} diff --git a/packages/nixvim/default.nix b/packages/nixvim/default.nix new file mode 100644 index 0000000..62191ac --- /dev/null +++ b/packages/nixvim/default.nix @@ -0,0 +1,50 @@ +{ pkgs, lib, ... }: +{ + imports = [ + ./nixvim.nix + ]; + + # for some reason this works with home-manager but not standalone... + performance.combinePlugins.enable = lib.mkForce false; + + # all seperate due to the way i'm also importing nixvim.nix into my home-manager config + extraPackages = with pkgs; [ + nixfmt-rfc-style + typstyle + + ]; + plugins.treesitter.settings.grammerPackages = [ pkgs.tree-sitter-grammars.tree-sitter-nu ]; + extraPlugins = with pkgs.vimPlugins; [ + gruvbox-material-nvim + quick-scope + ]; + colorscheme = "gruvbox-material"; + extraConfigLuaPre = '' + require('gruvbox-material').setup({ + italics = true, -- enable italics in general + contrast = "hard", -- set contrast, can be any of "hard", "medium", "soft" + comments = { + italics = true, -- enable italic comments + }, + background = { + transparent = true, -- set the background to transparent + }, + float = { + force_background = false, -- force background on floats even when background.transparent is set + background_color = nil, -- set color for float backgrounds. If nil, uses the default color set + }, + signs = { + highlight = true, -- whether to highlight signs + }, + }) + -- Function to get the foreground color of a highlight group + local function get_hl_fg(group) + local hl = vim.api.nvim_get_hl_by_name(group, true) + if hl and hl.foreground then + -- Return the color in #RRGGBB format + return string.format("#%06x", hl.foreground) + end + end + ''; + +} diff --git a/packages/nixvim/nixvim.nix b/packages/nixvim/nixvim.nix new file mode 100644 index 0000000..1d85f45 --- /dev/null +++ b/packages/nixvim/nixvim.nix @@ -0,0 +1,119 @@ +{ + extraConfigVim = '' + highlight QuickScopePrimary guifg='#89b482' gui=underline ctermfg=155 cterm=underline + highlight QuickScopeSecondary guifg='#d3869b' gui=underline ctermfg=81 cterm=underline + ''; + opts = { + number = true; + relativenumber = true; + shiftwidth = 2; + }; + keymaps = + [ + { + action = ":Neotree focus"; + key = ""; + mode = "n"; + } + { + action = ":Telescope find_files"; + key = ""; + mode = "n"; + } + { + action = ":Telescope live_grep"; + key = ""; + mode = "n"; + } + ] + # window movement + ++ (builtins.map + (x: { + action = "<${x}>"; + key = ""; + mode = "n"; + options.silent = true; + }) + [ + "Up" + "Right" + "Down" + "Left" + ] + ); + globals.mapleader = " "; + plugins = { + barbar.enable = true; + cmp-nvim-lsp.enable = true; + cmp-treesitter.enable = true; + cmp.enable = true; + conform-nvim = { + enable = true; + settings = { + formatters_by_ft = { + nix = [ "nixfmt" ]; + typst = [ "typstyle" ]; + }; + format_after_save = { + timeout_ms = 500; + lsp_format = "fallback"; + }; + }; + }; + coq-nvim = { + enable = true; + installArtifacts = true; + }; + coq-thirdparty.enable = true; + floaterm = { + enable = true; + keymaps.toggle = ""; + }; + gitsigns.enable = true; + lsp-format.enable = false; + lualine.enable = true; + neo-tree = { + enable = true; + closeIfLastWindow = true; + }; + nvim-autopairs.enable = true; + telescope.enable = true; + treesitter = { + enable = true; + settings.auto_install = true; + }; + trouble.enable = true; + web-devicons.enable = true; + which-key.enable = true; + lsp = { + enable = true; + servers = { + lua_ls.enable = true; + markdown_oxide.enable = true; + nil_ls.enable = true; + nixd.enable = true; + nushell.enable = true; + rust_analyzer = { + enable = true; + installCargo = true; + installRustc = true; + }; + ts_ls.enable = true; + typst_lsp.enable = true; + }; + }; + }; + performance = { + byteCompileLua = { + enable = true; + nvimRuntime = true; + plugins = true; + }; + combinePlugins = { + enable = true; + standalonePlugins = [ + "nvim-treesitter" + ]; + }; + }; +} diff --git a/patches/allow_bitmap_fonts.patch b/patches/allow_bitmap_fonts.patch new file mode 100644 index 0000000..96f9424 --- /dev/null +++ b/patches/allow_bitmap_fonts.patch @@ -0,0 +1,44 @@ +diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi +index 8fcd806da..4bfe81fe3 100644 +--- a/kitty/fast_data_types.pyi ++++ b/kitty/fast_data_types.pyi +@@ -405,7 +405,7 @@ class FontConfigPattern(TypedDict): + features: NotRequired[Tuple[ParsedFontFeature, ...]] + + +-def fc_list(spacing: int = -1, allow_bitmapped_fonts: bool = False, only_variable: bool = False) -> Tuple[FontConfigPattern, ...]: ++def fc_list(spacing: int = -1, allow_bitmapped_fonts: bool = True, only_variable: bool = False) -> Tuple[FontConfigPattern, ...]: + pass + + +@@ -414,7 +414,7 @@ def fc_match( + bold: bool = False, + italic: bool = False, + spacing: int = FC_MONO, +- allow_bitmapped_fonts: bool = False, ++ allow_bitmapped_fonts: bool = True, + size_in_pts: float = 0., + dpi: float = 0. + ) -> FontConfigPattern: +diff --git a/kitty/fontconfig.c b/kitty/fontconfig.c +index 224cb5f43..7472197e6 100644 +--- a/kitty/fontconfig.c ++++ b/kitty/fontconfig.c +@@ -240,7 +240,7 @@ font_set(FcFontSet *fs) { + static PyObject* + fc_list(PyObject UNUSED *self, PyObject *args, PyObject *kw) { + ensure_initialized(); +- int allow_bitmapped_fonts = 0, spacing = -1, only_variable = 0; ++ int allow_bitmapped_fonts = 1, spacing = -1, only_variable = 0; + PyObject *ans = NULL; + FcObjectSet *os = NULL; + FcPattern *pat = NULL; +@@ -354,7 +354,7 @@ static PyObject* + fc_match(PyObject UNUSED *self, PyObject *args) { + ensure_initialized(); + char *family = NULL; +- int bold = 0, italic = 0, allow_bitmapped_fonts = 0, spacing = FC_MONO; ++ int bold = 0, italic = 0, allow_bitmapped_fonts = 1, spacing = FC_MONO; + double size_in_pts = 0, dpi = 0; + FcPattern *pat = NULL; + PyObject *ans = NULL;