Compare commits
28 Commits
main
..
4f820f94ab
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f820f94ab | |||
| 1155c43800 | |||
| 4d92882f4e | |||
| f082e5a1d3 | |||
| d708b43395 | |||
| 893030ef66 | |||
| 1c4c5d1be6 | |||
| 1fe42be1b4 | |||
| 4324799e60 | |||
| 82fb86c945 | |||
| 52639559e3 | |||
| 50db8aec2c | |||
| 6a6f2fc67f | |||
| 6696d0a56a | |||
| 9b216cf609 | |||
| c76b681700 | |||
| d55b2ef3d2 | |||
| c7ba15d42a | |||
| 629929b657 | |||
| 92e9b70b04 | |||
| 3c404ce97c | |||
| 93784a1909 | |||
| 158f5a744e | |||
| e4a5dd8061 | |||
| e109b48cf6 | |||
| b5549d2629 | |||
| ffe63a7a0d | |||
| ae221986c7 |
Generated
+184
-129
@@ -21,28 +21,28 @@
|
||||
"base16-fish": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1765809053,
|
||||
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
|
||||
"lastModified": 1754405784,
|
||||
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1776754714,
|
||||
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
|
||||
"lastModified": 1760703920,
|
||||
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
|
||||
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -68,32 +68,14 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16_2": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755819240,
|
||||
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1776136500,
|
||||
"narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=",
|
||||
"lastModified": 1764724327,
|
||||
"narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=",
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"rev": "0f8ba203d475587f477e7ae12661bd8459e225b7",
|
||||
"rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -121,16 +103,16 @@
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"neovim-nightly-overlay",
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778716662,
|
||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||
"lastModified": 1763759067,
|
||||
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -147,11 +129,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775087534,
|
||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
||||
"lastModified": 1763759067,
|
||||
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
||||
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -178,23 +160,25 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731966426,
|
||||
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml_2": {
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1731966426,
|
||||
@@ -235,18 +219,20 @@
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767737596,
|
||||
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
|
||||
"host": "gitlab.gnome.org",
|
||||
"lastModified": 1764524476,
|
||||
"narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
||||
"type": "github"
|
||||
"rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"host": "gitlab.gnome.org",
|
||||
"owner": "GNOME",
|
||||
"ref": "gnome-49",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
||||
"type": "github"
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
@@ -256,11 +242,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779507042,
|
||||
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=",
|
||||
"lastModified": 1764891212,
|
||||
"narHash": "sha256-74ZPvCEmT5JatN227aSBOnORAtW3RWcMjjAkeiHp8UE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34",
|
||||
"rev": "df7bac2b2bdbaae8f9100be4e4cd21c7155611e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -277,11 +263,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778805320,
|
||||
"narHash": "sha256-nGFJ01m2CTBKD4ABtcY4vLhHrRN91LKr/pn41PcU78A=",
|
||||
"lastModified": 1762964643,
|
||||
"narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "9846abe15e7d0d36b8acbd4d05f2b87461744c92",
|
||||
"rev": "827f2a23373a774a8805f84ca5344654c31f354b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -290,39 +276,31 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-nightly-overlay": {
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"neovim-src": "neovim-src",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779494629,
|
||||
"narHash": "sha256-VuZJ76qmY90clvY6RQfAPL5JHwhcf1jmyqBfKR7WQ7Q=",
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"rev": "9b46852004ed151b36e424de6d529a231c622561",
|
||||
"lastModified": 1754860581,
|
||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1779493669,
|
||||
"narHash": "sha256-09xuVobnmU/uZLUZLr/lb3tir2v0lwWEj92gGuJIdKU=",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"rev": "f53d9ac90b7a5a0eefb22398a8ce4e249a3fc732",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.1.1",
|
||||
"repo": "ixx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -335,11 +313,11 @@
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769821964,
|
||||
"narHash": "sha256-WcfoLCZbo32Psw2mP9bF8uHCF50SMAhQFkWq+/+Z9B0=",
|
||||
"lastModified": 1750526611,
|
||||
"narHash": "sha256-RuP01U7zaS9S3zTNw4R0P87PY0A1szG8K5NTlOrqG18=",
|
||||
"owner": "lunik1",
|
||||
"repo": "nix-wallpaper",
|
||||
"rev": "f658947fdc9ab85be9003deb26632a464bd41e5d",
|
||||
"rev": "fb2a848f01cd1b08c5d9029984f034eb883e318a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -350,27 +328,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1779414690,
|
||||
"narHash": "sha256-gOTcX/9MZVMUE0Xvb4IEcv+0TQJkZFNEnL757ljU360=",
|
||||
"lastModified": 1764667669,
|
||||
"narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6dedf69f94d03cbe7bdde106f2d4c23ae2a853bf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1779357205,
|
||||
"narHash": "sha256-cCO8aTqss5x9Ky8GWkpY0Hy5fyTZEbtifSUV8QjSzic=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1",
|
||||
"rev": "418468ac9527e799809c900eda37cbff999199b6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -380,6 +342,29 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764775759,
|
||||
"narHash": "sha256-NZKVrj5mOPZVOVZ6wU5FcGsPUY6W12dNgVsctkjO3tY=",
|
||||
"owner": "jfredett",
|
||||
"repo": "nixvim",
|
||||
"rev": "bfeca2ce13d46ea96fd306b61fb81095b5258266",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "jfredett",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": [
|
||||
@@ -392,11 +377,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777598946,
|
||||
"narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=",
|
||||
"lastModified": 1764773531,
|
||||
"narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "5d55af01c0f86be583931fe99207fc56c14134b3",
|
||||
"rev": "1d9616689e98beded059ad0384b9951e967a17fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -405,6 +390,29 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"ixx": "ixx",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761730856,
|
||||
"narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
@@ -430,18 +438,17 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"home-manager": "home-manager",
|
||||
"neovim-nightly-overlay": "neovim-nightly-overlay",
|
||||
"nix-wallpaper": "nix-wallpaper",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"stylix": "stylix",
|
||||
"zen-browser": "zen-browser"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16_2",
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
@@ -452,18 +459,19 @@
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur",
|
||||
"systems": "systems_2",
|
||||
"systems": "systems_4",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
"tinted-tmux": "tinted-tmux",
|
||||
"tinted-zed": "tinted-zed"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779378391,
|
||||
"narHash": "sha256-IsDb9erotvx9npI94UDosvMeYQK17p7/vmU2v9batrY=",
|
||||
"lastModified": 1764860352,
|
||||
"narHash": "sha256-bWrh2T6EPiiZC7jY0jK5cWRwkG0hltnPT1etfHIHiXM=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "c1456cc4ba3c9485e7b4158c909eeca5a752cd59",
|
||||
"rev": "61a01b75f0a7e58dac486ddf022c628a71528399",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -502,6 +510,53 @@
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1726913040,
|
||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -521,11 +576,11 @@
|
||||
"tinted-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1777041405,
|
||||
"narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=",
|
||||
"lastModified": 1763914658,
|
||||
"narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "schemes",
|
||||
"rev": "5f868b3a338b6904c47f3833b9c411be641983a8",
|
||||
"rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -537,11 +592,11 @@
|
||||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1777169200,
|
||||
"narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=",
|
||||
"lastModified": 1764465359,
|
||||
"narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac",
|
||||
"rev": "edf89a780e239263cc691a987721f786ddc4f6aa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -553,11 +608,11 @@
|
||||
"tinted-zed": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1777463218,
|
||||
"narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=",
|
||||
"lastModified": 1764464512,
|
||||
"narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-zed",
|
||||
"rev": "5768d08ed2e7944a26a958868cdb073cb8856dae",
|
||||
"rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -574,11 +629,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779455631,
|
||||
"narHash": "sha256-svU6Ro4xiMxMA1KJGwQ/nfKwz3yXE/SONCw2Z1qTXHA=",
|
||||
"lastModified": 1764825646,
|
||||
"narHash": "sha256-QkKEkj3GXpkPxJz9S1RgaMlxstkyaj5IKVWvxIbtC8w=",
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "5bcdfcef664bf62831dcb4b947004d9c5fbf7201",
|
||||
"rev": "8c9284cc227a5c7cd8f1e1fa7a6882b0907187c8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix = {
|
||||
url = "github:danth/stylix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
base16 = {
|
||||
url = "github:SenchoPens/base16.nix";
|
||||
};
|
||||
zen-browser = {
|
||||
url = "github:0xc000022070/zen-browser-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -24,11 +24,9 @@
|
||||
};
|
||||
};
|
||||
outputs =
|
||||
{ ... }@inputs:
|
||||
let
|
||||
{ ... }@inputs: let
|
||||
userName = "autumn";
|
||||
in
|
||||
{
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
"january" = inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
@@ -45,9 +43,9 @@
|
||||
hostName = "february";
|
||||
inherit userName;
|
||||
inherit inputs;
|
||||
};
|
||||
|
||||
modules = [ ./host/pc/february/configuration.nix ];
|
||||
modules = [ ./host/pc/february/configuration.nix ];
|
||||
};
|
||||
};
|
||||
|
||||
"march" = inputs.nixpkgs.lib.nixosSystem {
|
||||
|
||||
@@ -1,11 +1,37 @@
|
||||
{ pkgs, ... }:
|
||||
{pkgs, ...}:
|
||||
{
|
||||
home.file.".clang-format".text = ''
|
||||
---
|
||||
BasedOnStyle: LLVM
|
||||
ColumnLimit: 80
|
||||
IndentCaseLabels: true
|
||||
InsertBraces: true
|
||||
IndentWidth: 4
|
||||
'';
|
||||
home.packages = with pkgs; [
|
||||
clang
|
||||
];
|
||||
|
||||
home.file.".clang-format".text = ''
|
||||
---
|
||||
BasedOnStyle: WebKit
|
||||
AlignAfterOpenBracket: Align
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: true
|
||||
AfterClass: true
|
||||
AfterControlStatement: Always
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterObjCDeclaration: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterExternBlock: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
BeforeLambdaBody: true
|
||||
BeforeWhile: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBraces: Custom
|
||||
ColumnLimit: 80
|
||||
IndentCaseLabels: true
|
||||
InsertBraces: true
|
||||
TabWidth: 4
|
||||
|
||||
'';
|
||||
}
|
||||
|
||||
+10
-27
@@ -1,34 +1,24 @@
|
||||
{ inputs, lib, pkgs, ... }:
|
||||
let
|
||||
cursorTheme = {
|
||||
name = "Bibata-Modern-Ice";
|
||||
package = pkgs.bibata-cursors;
|
||||
size = 3;
|
||||
};
|
||||
in
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
inputs.zen-browser.homeModules.default
|
||||
#inputs.stylix.homeModules.stylix
|
||||
|
||||
./programs
|
||||
|
||||
./clangd.nix
|
||||
./hyprland.nix
|
||||
./packages.nix
|
||||
./xdg.nix
|
||||
|
||||
./river
|
||||
];
|
||||
|
||||
home.username = "autumn";
|
||||
home.homeDirectory = "/home/autumn";
|
||||
home.stateVersion = "26.05";
|
||||
home.stateVersion = "25.05";
|
||||
|
||||
# programs.ghostty.enable = true;
|
||||
# programs.ghostty.settings.font-size = 24;
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
settings.main.font = lib.mkForce "Caskaydia Cove Mono:size=24";
|
||||
};
|
||||
programs.ghostty.enable = true;
|
||||
programs.ghostty.settings.font-size = 24;
|
||||
|
||||
stylix = {
|
||||
targets.waybar.enable = false;
|
||||
@@ -44,16 +34,9 @@ in
|
||||
};
|
||||
|
||||
home.pointerCursor = {
|
||||
name = cursorTheme.name;
|
||||
package = cursorTheme.package;
|
||||
size = cursorTheme.size;
|
||||
x11.enable = true;
|
||||
gtk.enable = true;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
inherit cursorTheme;
|
||||
name = "Adwaita";
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
size = 12;
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
hyprpicker
|
||||
swww
|
||||
];
|
||||
|
||||
home.file.".config/hypr/hyprland.conf".text = ''
|
||||
$mainMod=SUPER
|
||||
$menu=rofi -show drun
|
||||
$powerMenu=rofi -show power-menu -modi "power-menu:rofi-power-menu --choices lockscreen/suspend/reboot/shutdown"
|
||||
$switchThemes=rofi -show switch-theme -modes "switch-theme:/etc/nixos/home/pc/common/programs/rofi/scripts/switch-theme.sh"
|
||||
$screenshot=slurp | grim -g - - | wl-copy
|
||||
$terminal=kitty
|
||||
animations {
|
||||
bezier=myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
animation=windows, 1, 7, myBezier
|
||||
animation=windowsOut, 1, 7, default, popin 80%
|
||||
animation=border, 1, 10, default
|
||||
animation=borderangle, 1, 8, default
|
||||
animation=fade, 1, 7, default
|
||||
animation=workspaces, 1, 6, default
|
||||
enabled=true
|
||||
}
|
||||
|
||||
decoration {
|
||||
blur {
|
||||
enabled=yes
|
||||
ignore_opacity=on
|
||||
new_optimizations=on
|
||||
passes=3
|
||||
size=6
|
||||
special=true
|
||||
xray=false
|
||||
}
|
||||
# active_opacity=1.000000
|
||||
# inactive_opacity=1.000000
|
||||
rounding=10
|
||||
shadow {
|
||||
color=rgba(00000099)
|
||||
enabled=true
|
||||
range=4
|
||||
render_power=3
|
||||
}
|
||||
}
|
||||
|
||||
dwindle {
|
||||
preserve_split=true
|
||||
pseudotile=true
|
||||
}
|
||||
|
||||
xwayland {
|
||||
force_zero_scaling=true
|
||||
}
|
||||
|
||||
general {
|
||||
allow_tearing=false
|
||||
border_size=2
|
||||
col.active_border=rgb(${config.stylix.base16Scheme.palette.base0D})
|
||||
col.inactive_border=rgba(595959aa)
|
||||
gaps_in=5
|
||||
gaps_out=10
|
||||
layout=dwindle
|
||||
resize_on_border=false
|
||||
}
|
||||
|
||||
input {
|
||||
touchpad {
|
||||
natural_scroll=true
|
||||
disable_while_typing=0
|
||||
}
|
||||
|
||||
kb_layout=us
|
||||
}
|
||||
|
||||
misc {
|
||||
disable_hyprland_logo=true
|
||||
force_default_wallpaper=0
|
||||
}
|
||||
|
||||
workspace = 1, monitor:HDMI-A-2
|
||||
workspace = 2, monitor:DP-2
|
||||
monitor = DP-2, 2560x1440@180, 0x0, 1#, bitdepth, 10, cm, hdr
|
||||
#monitor = DP-2, 1920x1080@180, 0x0, 1#, bitdepth, 10, cm, hdr
|
||||
monitor = HDMI-A-2, 1920x1080@60, 2560x0, 1
|
||||
|
||||
bind=$mainMod, Q, exec, $terminal
|
||||
bind=$mainMod, C, killactive
|
||||
bind=$mainMod, M, exit
|
||||
bind=$mainMod, V, togglefloating
|
||||
bind=$mainMod, D, exec, $menu
|
||||
bind=$mainMod, H, exec, $switchThemes
|
||||
bind=$mainMod, P, pseudo
|
||||
bind=$mainMod, T, togglesplit
|
||||
bind=$mainMod, S, exec, $screenshot
|
||||
bind=$mainMod SHIFT, P, exec, $powerMenu
|
||||
bind=$mainMod SHIFT, S, exec, $screenshot
|
||||
bind=$mainMod, F, fullscreen
|
||||
bind=$mainMod, left, movefocus, l
|
||||
bind=$mainMod, right, movefocus, r
|
||||
bind=$mainMod, up, movefocus, u
|
||||
bind=$mainMod, down, movefocus, d
|
||||
bind=$mainMod, H, movefocus, l
|
||||
bind=$mainMod, L, movefocus, r
|
||||
bind=$mainMod, K, movefocus, u
|
||||
bind=$mainMod, J, movefocus, d
|
||||
bind=$mainMod SHIFT, H, movewindow, l
|
||||
bind=$mainMod SHIFT, L, movewindow, r
|
||||
bind=$mainMod SHIFT, K, movewindow, u
|
||||
bind=$mainMod SHIFT, J, movewindow, d
|
||||
bind=$mainMod SHIFT, left, movewindow, l
|
||||
bind=$mainMod SHIFT, right, movewindow, r
|
||||
bind=$mainMod SHIFT, up, movewindow, u
|
||||
bind=$mainMod SHIFT, down, movewindow, d
|
||||
bind=$mainMod, 1, workspace, 1
|
||||
bind=$mainMod, 2, workspace, 2
|
||||
bind=$mainMod, 3, workspace, 3
|
||||
bind=$mainMod, 4, workspace, 4
|
||||
bind=$mainMod, 5, workspace, 5
|
||||
bind=$mainMod, 6, workspace, 6
|
||||
bind=$mainMod, 7, workspace, 7
|
||||
bind=$mainMod, 8, workspace, 8
|
||||
bind=$mainMod, 9, workspace, 9
|
||||
bind=$mainMod, 0, workspace, 10
|
||||
bind=$mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind=$mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind=$mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind=$mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind=$mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind=$mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind=$mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind=$mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind=$mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind=$mainMod SHIFT, 0, movetoworkspace, 10
|
||||
bind=$mainMod, mouse_down, workspace, e+1
|
||||
bind=$mainMod, mouse_up, workspace, e-1
|
||||
bindm=$mainMod, mouse:272, movewindow
|
||||
bindm=$mainMod, mouse:273, resizewindow
|
||||
|
||||
env=XCURSOR_SIZE,24
|
||||
env=HYPRCURSOR_SIZE,24
|
||||
|
||||
exec-once=swww-daemon
|
||||
exec=swww img ${config.stylix.image} -t none
|
||||
exec-once=waybar
|
||||
exec=pkill waybar; waybar
|
||||
|
||||
windowrulev2=suppressevent maximize, class:.*
|
||||
#windowrulev2 = opacity 0.9, class:(com.mitchellh.ghostty)
|
||||
|
||||
layerrule = noanim, selection
|
||||
'';
|
||||
}
|
||||
+11
-13
@@ -1,31 +1,29 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
audacity
|
||||
bitwarden-desktop
|
||||
cava
|
||||
cmus
|
||||
fd
|
||||
file
|
||||
ffmpeg
|
||||
fzf
|
||||
jellyfin-desktop
|
||||
krita
|
||||
gimp3-with-plugins
|
||||
grim
|
||||
killall
|
||||
lazygit
|
||||
lmms
|
||||
libresprite
|
||||
man-pages
|
||||
man-pages-posix
|
||||
obs-studio
|
||||
projectm-sdl-cpp
|
||||
python3
|
||||
ripgrep
|
||||
signal-desktop
|
||||
rusty-man
|
||||
slurp
|
||||
tor-browser
|
||||
unzip
|
||||
vial
|
||||
vlc
|
||||
wl-clipboard
|
||||
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
|
||||
libdrm
|
||||
fcft
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
{...}:
|
||||
{
|
||||
imports = [
|
||||
./eww
|
||||
./nvim
|
||||
./rofi
|
||||
./zen
|
||||
|
||||
./btop.nix
|
||||
./carapace.nix
|
||||
./foot.nix
|
||||
./fastfetch.nix
|
||||
./fish.nix
|
||||
./git.nix
|
||||
./hyfetch.nix
|
||||
./mako.nix
|
||||
./tcsh.nix
|
||||
./ncspot.nix
|
||||
./nix-search-tv.nix
|
||||
#./nushell.nix
|
||||
./starship.nix
|
||||
./tmux.nix
|
||||
./vesktop.nix
|
||||
./waybar.nix
|
||||
./yazi.nix
|
||||
./zathura.nix
|
||||
./zen.nix
|
||||
./zoxide.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.eww
|
||||
pkgs.playerctl
|
||||
pkgs.pamixer
|
||||
pkgs.alsa-utils
|
||||
];
|
||||
|
||||
xdg.configFile."eww/eww.yuck".source = ./eww.yuck;
|
||||
xdg.configFile."eww/eww.scss".source =
|
||||
let
|
||||
colors = with config.lib.stylix.colors; {
|
||||
inherit base00 base01 base02 base03 base04 base05 base06 base07 base08 base09 base0A base0B base0C base0D base0E base0F;
|
||||
};
|
||||
in
|
||||
pkgs.replaceVars ./eww.scss colors;
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
$base00: #@base00@;
|
||||
$base01: #@base01@;
|
||||
$base02: #@base02@;
|
||||
$base03: #@base03@;
|
||||
$base04: #@base04@;
|
||||
$base05: #@base05@;
|
||||
$base06: #@base06@;
|
||||
$base07: #@base07@;
|
||||
$base08: #@base08@;
|
||||
$base09: #@base09@;
|
||||
$base0A: #@base0A@;
|
||||
$base0B: #@base0B@;
|
||||
$base0C: #@base0C@;
|
||||
$base0D: #@base0D@;
|
||||
$base0E: #@base0E@;
|
||||
$base0F: #@base0F@;
|
||||
|
||||
* {
|
||||
all: unset; // Unsets everything so you can style everything from scratch
|
||||
}
|
||||
|
||||
// Global Styles
|
||||
.bar {
|
||||
background-color: $base01;
|
||||
color: $base05;
|
||||
padding: 5px;
|
||||
font-size: large;
|
||||
}
|
||||
|
||||
// Styles on classes (see eww.yuck for more information)
|
||||
|
||||
.sidestuff slider {
|
||||
all: unset;
|
||||
color: $base0D;
|
||||
}
|
||||
|
||||
.metric scale trough highlight {
|
||||
all: unset;
|
||||
background-color: $base0D;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.metric scale trough {
|
||||
all: unset;
|
||||
background-color: $base04;
|
||||
border-radius: 50px;
|
||||
min-height: 3px;
|
||||
min-width: 50px;
|
||||
margin-left: 10px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
tooltip.background {
|
||||
background-color: $base01;
|
||||
font-size: large;
|
||||
border: 2px solid $base0D;
|
||||
}
|
||||
|
||||
.label-ram {
|
||||
font-size: large;
|
||||
}
|
||||
|
||||
.workspaces button:hover {
|
||||
color: $base0D;
|
||||
}
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
; https://github.com/elkowar/eww/blob/master/examples/eww-bar/
|
||||
|
||||
(defwidget bar []
|
||||
(centerbox :orientation "h"
|
||||
(workspaces)
|
||||
(time)
|
||||
(sidestuff)))
|
||||
|
||||
(defwidget sidestuff []
|
||||
(box :class "sidestuff" :orientation "h" :space-evenly false :halign "end"
|
||||
(metric :label " "
|
||||
:tooltip "${volume}% volume"
|
||||
:value {volume}
|
||||
:onchange "wpctl set-volume @DEFAULT_SINK@ {}%")
|
||||
(metric :label ""
|
||||
:tooltip "${round(EWW_RAM.used_mem_perc, 0)}% of RAM used"
|
||||
:value {EWW_RAM.used_mem_perc}
|
||||
:onchange "")
|
||||
(metric :label ""
|
||||
:tooltip "${round(EWW_CPU.avg, 0)}% average CPU usage"
|
||||
:value {round((EWW_CPU.avg), 0)}
|
||||
:onchange "")
|
||||
(metric :label ""
|
||||
:tooltip "${round((EWW_BATTERY["BAT0"].capacity + EWW_BATTERY["BAT1"].capacity) / 2, 0)}% battery life"
|
||||
:value {round((EWW_BATTERY["BAT0"].capacity + EWW_BATTERY["BAT1"].capacity) / 2, 0)}
|
||||
:onchange "")))
|
||||
|
||||
(defwidget workspaces []
|
||||
(box :class "workspaces"
|
||||
:orientation "h"
|
||||
:space-evenly true
|
||||
:halign "start"
|
||||
:spacing 10
|
||||
(button :onclick "riverctl set-focused-tags 1" 1)
|
||||
(button :onclick "riverctl set-focused-tags 2" 2)
|
||||
(button :onclick "riverctl set-focused-tags 4" 3)
|
||||
(button :onclick "riverctl set-focused-tags 8" 4)
|
||||
(button :onclick "riverctl set-focused-tags 16" 5)
|
||||
(button :onclick "riverctl set-focused-tags 32" 6)
|
||||
(button :onclick "riverctl set-focused-tags 64" 7)
|
||||
(button :onclick "riverctl set-focused-tags 128" 8)
|
||||
(button :onclick "riverctl set-focused-tags 256" 9)))
|
||||
|
||||
(defwidget metric [?tooltip label value onchange]
|
||||
(box :orientation "h"
|
||||
:tooltip tooltip
|
||||
:class "metric"
|
||||
:space-evenly false
|
||||
(box :class "label" label)
|
||||
(scale :min 0
|
||||
:max 101
|
||||
:active {onchange != ""}
|
||||
:value value
|
||||
:onchange onchange)))
|
||||
|
||||
(defpoll volume :interval "1s"
|
||||
"wpctl get-volume @DEFAULT_SINK@ | awk -F' ' '{print 100 * $2}'")
|
||||
|
||||
(defwidget time []
|
||||
(label :text time-poll))
|
||||
|
||||
(defpoll time-poll :interval "10s"
|
||||
"date '+%H:%M %b %d, %Y'")
|
||||
|
||||
(defwindow bar
|
||||
:monitor 0
|
||||
:exclusive true
|
||||
:focusable "none"
|
||||
:geometry (geometry :x "0%"
|
||||
:y "0%"
|
||||
:width "100%"
|
||||
:height "10px"
|
||||
:anchor "top center")
|
||||
:reserve (struts :side "top" :distance "4%")
|
||||
(bar))
|
||||
|
||||
@@ -4,20 +4,22 @@
|
||||
pkgs.nix-your-shell
|
||||
pkgs.lolcat
|
||||
pkgs.kittysay
|
||||
pkgs.eza
|
||||
];
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
shellInit = ''
|
||||
function fish_prompt
|
||||
if test -z $IN_NIX_SHELL
|
||||
printf '%s%s λ %s' (set_color magenta) $(prompt_pwd) (set_color normal)
|
||||
else
|
||||
printf '%s%s%s [nix-shell %s]%s λ%s ' (set_color magenta) $(prompt_pwd) (set_color yellow) $IN_NIX_SHELL (set_color magenta) (set_color normal)
|
||||
end
|
||||
string join ' ' -- (set_color magenta) $(prompt_pwd) :3 (set_color normal)
|
||||
end
|
||||
|
||||
function fish_greeting
|
||||
echo hii autumn :3\nthe time is $(date +%T) | kittysay | lolcat
|
||||
end
|
||||
|
||||
function ls --description "List directory contents"
|
||||
eza --icons=always $argv
|
||||
end
|
||||
|
||||
function nix-shell --description "Start an interactive shell based on a Nix expression"
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
settings.main.font = lib.mkForce "Caskaydia Cove Mono:size=24";
|
||||
settings.main.font-size-adjustment = 1;
|
||||
settings.main.shell = "tcsh";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.television.enable = true;
|
||||
programs.nix-search-tv = {
|
||||
enable = true;
|
||||
enableTelevisionIntegration = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.nix-your-shell ];
|
||||
|
||||
programs.nushell = {
|
||||
enable = true;
|
||||
plugins = with pkgs.nushellPlugins; [
|
||||
formats
|
||||
polars
|
||||
gstat
|
||||
query
|
||||
];
|
||||
settings = {
|
||||
show_banner = false;
|
||||
edit_mode = "vi";
|
||||
cursor_shape = {
|
||||
emacs = "line";
|
||||
vi_insert = "line";
|
||||
vi_normal = "block";
|
||||
};
|
||||
};
|
||||
shellAliases = {
|
||||
c = "clear";
|
||||
meow = "_meow";
|
||||
|
||||
hf = "nix flake update --flake ${config.home.homeDirectory}/.config/home-manager";
|
||||
hs = "nh home switch ~/.config/home-manager";
|
||||
hz = "z ~/.config/home-manager";
|
||||
|
||||
nsu = "_nsu";
|
||||
ns = "sudo nixos-rebuild switch";
|
||||
|
||||
se = "sudoedit";
|
||||
v = "nvim";
|
||||
};
|
||||
extraConfig = with config.stylix.base16Scheme.palette; ''
|
||||
def _meow () {
|
||||
clear
|
||||
hyfetch
|
||||
}
|
||||
|
||||
def _nsu () {
|
||||
sudo nix-channel --add https://channels.nixos.org/nixos-unstable nixos
|
||||
sudo nixos-rebuild switch --upgrade
|
||||
}
|
||||
|
||||
def _nix_your_shell (command: string, args: list<string>) {
|
||||
if not (which nix-your-shell | is-empty) {
|
||||
let args = ["--"] ++ $args
|
||||
run-external nix-your-shell nu $command ...$args
|
||||
} else {
|
||||
run-external $command ...$args
|
||||
}
|
||||
}
|
||||
|
||||
def --wrapped nix-shell (...args) {
|
||||
_nix_your_shell nix-shell $args
|
||||
}
|
||||
|
||||
def --wrapped nix (...args) {
|
||||
_nix_your_shell nix $args
|
||||
}
|
||||
|
||||
|
||||
let theme = {
|
||||
base00: "#${base00}"
|
||||
base01: "#${base01}"
|
||||
base02: "#${base02}"
|
||||
base03: "#${base03}"
|
||||
base04: "#${base04}"
|
||||
base05: "#${base05}"
|
||||
base06: "#${base06}"
|
||||
base07: "#${base07}"
|
||||
base08: "#${base08}"
|
||||
base09: "#${base09}"
|
||||
base0A: "#${base0A}"
|
||||
base0B: "#${base0B}"
|
||||
base0C: "#${base0C}"
|
||||
base0D: "#${base0D}"
|
||||
base0E: "#${base0E}"
|
||||
base0F: "#${base0F}"
|
||||
}
|
||||
|
||||
let scheme = {
|
||||
recognized_command: $theme.base0D
|
||||
unrecognized_command: $theme.base08
|
||||
constant: $theme.base09
|
||||
punctuation: $theme.base04
|
||||
operator: $theme.base0C
|
||||
string: $theme.base0B
|
||||
virtual_text: $theme.base04
|
||||
variable: { fg: $theme.base0F attr: i }
|
||||
filepath: $theme.base0A
|
||||
}
|
||||
|
||||
$env.config.color_config = {
|
||||
separator: { fg: $theme.base04 attr: b }
|
||||
leading_trailing_space_bg: { fg: $theme.base07 attr: u }
|
||||
header: { fg: $theme.base05 attr: b }
|
||||
row_index: $scheme.virtual_text
|
||||
record: $theme.base05
|
||||
list: $theme.base05
|
||||
hints: $scheme.virtual_text
|
||||
search_result: { fg: $theme.base00 bg: $theme.base0A }
|
||||
shape_closure: $theme.base0C
|
||||
closure: $theme.base0C
|
||||
shape_flag: { fg: $theme.base08 attr: i }
|
||||
shape_matching_brackets: { attr: u }
|
||||
shape_garbage: $theme.base08
|
||||
shape_keyword: $theme.base0E
|
||||
shape_match_pattern: $theme.base0B
|
||||
shape_signature: $theme.base0C
|
||||
shape_table: $scheme.punctuation
|
||||
cell-path: $scheme.punctuation
|
||||
shape_list: $scheme.punctuation
|
||||
shape_record: $scheme.punctuation
|
||||
shape_vardecl: $scheme.variable
|
||||
shape_variable: $scheme.variable
|
||||
empty: { attr: n }
|
||||
filesize: {||
|
||||
if $in < 1kb {
|
||||
$theme.base0C
|
||||
} else if $in < 10kb {
|
||||
$theme.base0B
|
||||
} else if $in < 100kb {
|
||||
$theme.base0A
|
||||
} else if $in < 10mb {
|
||||
$theme.base09
|
||||
} else if $in < 100mb {
|
||||
$theme.base08
|
||||
} else if $in < 1gb {
|
||||
$theme.base08
|
||||
} else {
|
||||
$theme.base0E
|
||||
}
|
||||
}
|
||||
duration: {||
|
||||
if $in < 1day {
|
||||
$theme.base0C
|
||||
} else if $in < 1wk {
|
||||
$theme.base0B
|
||||
} else if $in < 4wk {
|
||||
$theme.base0A
|
||||
} else if $in < 12wk {
|
||||
$theme.base09
|
||||
} else if $in < 24wk {
|
||||
$theme.base08
|
||||
} else if $in < 52wk {
|
||||
$theme.base08
|
||||
} else {
|
||||
$theme.base0E
|
||||
}
|
||||
}
|
||||
date: {|| (date now) - $in |
|
||||
if $in < 1day {
|
||||
$theme.base0C
|
||||
} else if $in < 1wk {
|
||||
$theme.base0B
|
||||
} else if $in < 4wk {
|
||||
$theme.base0A
|
||||
} else if $in < 12wk {
|
||||
$theme.base09
|
||||
} else if $in < 24wk {
|
||||
$theme.base08
|
||||
} else if $in < 52wk {
|
||||
$theme.base08
|
||||
} else {
|
||||
$theme.base0E
|
||||
}
|
||||
}
|
||||
shape_external: $scheme.unrecognized_command
|
||||
shape_internalcall: $scheme.recognized_command
|
||||
shape_external_resolved: $scheme.recognized_command
|
||||
shape_block: $scheme.recognized_command
|
||||
block: $scheme.recognized_command
|
||||
shape_custom: $theme.base0F
|
||||
custom: $theme.base0F
|
||||
background: $theme.base00
|
||||
foreground: $theme.base05
|
||||
cursor: { bg: $theme.base06 fg: $theme.base00 }
|
||||
shape_range: $scheme.operator
|
||||
range: $scheme.operator
|
||||
shape_pipe: $scheme.operator
|
||||
shape_operator: $scheme.operator
|
||||
shape_base08irection: $scheme.operator
|
||||
glob: $scheme.filepath
|
||||
shape_directory: $scheme.filepath
|
||||
shape_filepath: $scheme.filepath
|
||||
shape_glob_interpolation: $scheme.filepath
|
||||
shape_globpattern: $scheme.filepath
|
||||
shape_int: $scheme.constant
|
||||
int: $scheme.constant
|
||||
bool: $scheme.constant
|
||||
float: $scheme.constant
|
||||
nothing: $scheme.constant
|
||||
binary: $scheme.constant
|
||||
shape_nothing: $scheme.constant
|
||||
shape_bool: $scheme.constant
|
||||
shape_float: $scheme.constant
|
||||
shape_binary: $scheme.constant
|
||||
shape_datetime: $scheme.constant
|
||||
shape_literal: $scheme.constant
|
||||
string: $scheme.string
|
||||
shape_string: $scheme.string
|
||||
shape_string_interpolation: $theme.base0F
|
||||
shape_raw_string: $scheme.string
|
||||
shape_externalarg: $scheme.string
|
||||
}
|
||||
$env.config.highlight_resolved_externals = true
|
||||
$env.config.explore = {
|
||||
status_bar_background: { fg: $theme.base05, bg: $theme.base01 },
|
||||
command_bar_text: { fg: $theme.base05 },
|
||||
highlight: { fg: $theme.base00, bg: $theme.base0A },
|
||||
status: {
|
||||
error: $theme.base08,
|
||||
warn: $theme.base0A,
|
||||
info: $theme.base0D,
|
||||
},
|
||||
selected_cell: { bg: $theme.base0D fg: $theme.base00 },
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./lsp.nix
|
||||
./none-ls.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
servers = {
|
||||
asm_lsp.enable = true;
|
||||
clangd = {
|
||||
enable = true;
|
||||
cmd = [
|
||||
"clangd"
|
||||
];
|
||||
};
|
||||
cssls.enable = true;
|
||||
eslint.enable = true;
|
||||
lua_ls = {
|
||||
enable = true;
|
||||
settings.telemetry.enable = false;
|
||||
};
|
||||
hls = {
|
||||
enable = true;
|
||||
installGhc = true;
|
||||
settings.haskell = {
|
||||
formattingProvider = "fourmolu";
|
||||
};
|
||||
};
|
||||
html.enable = true;
|
||||
jsonls.enable = true;
|
||||
mlir_lsp_server.enable = true;
|
||||
nil_ls.enable = true;
|
||||
nixd.enable = true;
|
||||
nushell.enable = true;
|
||||
ocamllsp.enable = true;
|
||||
pyright.enable = true;
|
||||
ts_ls.enable = true;
|
||||
zls.enable = true;
|
||||
};
|
||||
};
|
||||
cmp-emoji = {
|
||||
enable = true;
|
||||
};
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autoEnableSources = true;
|
||||
experimental = {
|
||||
ghost_text = true;
|
||||
};
|
||||
performance = {
|
||||
debounce = 60;
|
||||
fetchingTimeout = 200;
|
||||
};
|
||||
snippet = {
|
||||
expand = "luasnip";
|
||||
};
|
||||
formatting = {
|
||||
fields = [
|
||||
"kind"
|
||||
"abbr"
|
||||
"menu"
|
||||
];
|
||||
};
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "emoji"; }
|
||||
|
||||
{
|
||||
name = "buffer"; # text within current buffer
|
||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||
keywordLength = 3;
|
||||
}
|
||||
|
||||
{
|
||||
name = "path"; # file system paths
|
||||
keywordLength = 3;
|
||||
}
|
||||
|
||||
{
|
||||
name = "luasnip"; # snippets
|
||||
keywordLength = 3;
|
||||
}
|
||||
];
|
||||
|
||||
window = {
|
||||
completion.__raw = "cmp.config.window.bordered()";
|
||||
documentation.__raw = "cmp.config.window.bordered()";
|
||||
};
|
||||
|
||||
mapping = {
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||
"<C-Space>" = "cmp.mapping.complete()";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
"<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
|
||||
};
|
||||
};
|
||||
};
|
||||
cmp-nvim-lsp = {
|
||||
enable = true;
|
||||
}; # lsp
|
||||
cmp-buffer = {
|
||||
enable = true;
|
||||
};
|
||||
cmp-path = {
|
||||
enable = true;
|
||||
}; # file system paths
|
||||
cmp_luasnip = {
|
||||
enable = true;
|
||||
}; # snippets
|
||||
cmp-cmdline = {
|
||||
enable = false;
|
||||
}; # autocomplete for cmdline
|
||||
luasnip = {
|
||||
enable = true;
|
||||
settings = {
|
||||
enable_autosnippets = true;
|
||||
store_selection_keys = "<Tab>";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
lsp-format.enable = true;
|
||||
none-ls = {
|
||||
enable = true;
|
||||
enableLspFormat = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,554 +0,0 @@
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.mouse = ""
|
||||
vim.opt.breakindent = true
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.wildmenu = true
|
||||
vim.opt.undofile = true
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.shell = "@shell@"
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
vim.opt.winborder = "rounded"
|
||||
|
||||
vim.o.list = true
|
||||
vim.o.listchars = "eol:"
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.keymap.set("n", "<leader>n", "<cmd>e .<cr>", {})
|
||||
|
||||
-- Per nixvim generated configuration
|
||||
vim.diagnostic.config({
|
||||
float = { border = "rounded", source = "always" },
|
||||
virtual_lines = false,
|
||||
virtual_text = true,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>q", function()
|
||||
vim.cmd("hori term")
|
||||
vim.cmd("startinsert")
|
||||
end, {})
|
||||
|
||||
vim.keymap.set("t", "<esc><esc>", "", {})
|
||||
|
||||
vim.pack.add({
|
||||
"https://github.com/nvim-treesitter/nvim-treesitter",
|
||||
"https://github.com/hrsh7th/nvim-cmp",
|
||||
"https://github.com/hrsh7th/cmp-nvim-lsp",
|
||||
"https://github.com/L3MON4D3/LuaSnip",
|
||||
"https://github.com/hrsh7th/cmp-emoji",
|
||||
"https://github.com/windwp/nvim-autopairs",
|
||||
"https://github.com/lukas-reineke/lsp-format.nvim",
|
||||
"https://github.com/nvimtools/none-ls.nvim",
|
||||
"https://github.com/nvim-lua/plenary.nvim",
|
||||
"https://github.com/nvim-telescope/telescope.nvim",
|
||||
"https://github.com/ej-shafran/compile-mode.nvim",
|
||||
"https://github.com/m00qek/baleia.nvim",
|
||||
"https://github.com/nvim-lualine/lualine.nvim",
|
||||
"https://github.com/stevearc/oil.nvim",
|
||||
"https://github.com/folke/lazydev.nvim",
|
||||
"https://github.com/RRethy/base16-nvim",
|
||||
})
|
||||
|
||||
require('base16-colorscheme').setup({
|
||||
base00 = '#@base00@',
|
||||
base01 = '#@base01@',
|
||||
base02 = '#@base02@',
|
||||
base03 = '#@base03@',
|
||||
base04 = '#@base04@',
|
||||
base05 = '#@base05@',
|
||||
base06 = '#@base06@',
|
||||
base07 = '#@base07@',
|
||||
base08 = '#@base08@',
|
||||
base09 = '#@base09@',
|
||||
base0A = '#@base0A@',
|
||||
base0B = '#@base0B@',
|
||||
base0C = '#@base0C@',
|
||||
base0D = '#@base0D@',
|
||||
base0E = '#@base0E@',
|
||||
base0F = '#@base0F@',
|
||||
})
|
||||
|
||||
require("lazydev").setup({
|
||||
ft = "lua",
|
||||
})
|
||||
|
||||
require("oil").setup({
|
||||
default_file_explorer = true,
|
||||
columns = {
|
||||
"permissions",
|
||||
"size",
|
||||
"user",
|
||||
"mtime",
|
||||
"icon",
|
||||
},
|
||||
view_options = {
|
||||
show_hidden = true,
|
||||
case_insensitive = true,
|
||||
},
|
||||
})
|
||||
|
||||
vim.g.compile_mode = {
|
||||
default_command = "nix build",
|
||||
recompile_no_fail = true,
|
||||
buffer_name = "*compile*",
|
||||
baleia_setup = true,
|
||||
}
|
||||
vim.keymap.set("n", "<leader>c", "<cmd>Recompile<cr>", { silent = true })
|
||||
|
||||
local file_types = { "rust", "zig", "haskell", "c", "cpp" }
|
||||
require("nvim-treesitter").install(file_types)
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = file_types,
|
||||
callback = function(ev)
|
||||
vim.treesitter.start(ev.buf)
|
||||
end,
|
||||
})
|
||||
|
||||
local telescope = require("telescope.builtin")
|
||||
|
||||
vim.keymap.set("n", "<leader>b", telescope.buffers, {})
|
||||
vim.keymap.set("n", "<leader>f", telescope.find_files, {})
|
||||
vim.keymap.set("n", "<leader>t", telescope.live_grep, {})
|
||||
vim.keymap.set("n", "<leader>m", function()
|
||||
telescope.man_pages({
|
||||
sections = { "2", "3", "4", "5" },
|
||||
})
|
||||
end, {})
|
||||
|
||||
require("nvim-autopairs").setup({})
|
||||
require("null-ls").setup({ on_attach = require("lsp-format").on_attach })
|
||||
require("lsp-format").setup({})
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
local cmp = require("cmp")
|
||||
cmp.setup({
|
||||
autoEnableSources = true,
|
||||
experimental = { ghost_text = true },
|
||||
formatting = { fields = { "kind", "abbr", "menu" } },
|
||||
mapping = {
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<S-Tab>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "s" }),
|
||||
["<Tab>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "s" }),
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end
|
||||
},
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
{ keywordLength = 3, name = "buffer", option = { get_bufnrs = vim.api.nvim_list_bufs } },
|
||||
{ keywordLength = 3, name = "path" },
|
||||
{ name = "lazydev" },
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.inlay_hint.enable(true)
|
||||
local __lspCapabilities = function()
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
|
||||
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
|
||||
|
||||
return capabilities
|
||||
end
|
||||
|
||||
|
||||
local __setup = { capabilities = __lspCapabilities() }
|
||||
|
||||
local __wrapConfig = function(cfg)
|
||||
if cfg == nil then
|
||||
cfg = __setup
|
||||
else
|
||||
cfg = vim.tbl_extend("keep", cfg, __setup)
|
||||
end
|
||||
return cfg
|
||||
end
|
||||
|
||||
vim.lsp.config("clangd", { cmd = { "clangd" }, filetypes = { "c", "cpp" } })
|
||||
vim.lsp.enable("clangd")
|
||||
vim.lsp.config("haskell-language-server",
|
||||
{ cmd = { "haskell-language-server-wrapper", "--lsp" }, filetypes = { "haskell" } })
|
||||
vim.lsp.enable("haskell-language-server")
|
||||
vim.lsp.config("lua_ls", { cmd = { "lua-language-server" }, filetypes = { "lua" } })
|
||||
vim.lsp.enable("lua_ls")
|
||||
vim.lsp.config("nil_ls", { cmd = { "nil" }, filetypes = { "nix" } })
|
||||
vim.lsp.enable("nil_ls")
|
||||
vim.lsp.config("nixd", { cmd = { "nixd" }, filetypes = { "nix" } })
|
||||
vim.lsp.enable("nixd")
|
||||
vim.lsp.config("pyright", { cmd = { "pyright-langserver", "--stdio" }, filetypes = { "python" } })
|
||||
vim.lsp.enable("pyright")
|
||||
vim.lsp.config("rust-analyzer", { cmd = { "rust-analyzer" }, filetypes = { "rust" } })
|
||||
vim.lsp.enable("rust-analyzer")
|
||||
vim.lsp.config("zls", { cmd = { "zls" }, filetypes = { "zig" } })
|
||||
vim.lsp.enable("zls")
|
||||
|
||||
-- -- https://github.com/catppuccin/nvim/blob/main/lua/catppuccin/palettes/mocha.lua
|
||||
-- -- https://github.com/Ronxvier/ymir.nvim/blob/main/lua/ymir/palette.lua
|
||||
-- local colors = {
|
||||
-- red = "#f38ba8",
|
||||
-- orange = "#fab387",
|
||||
-- green = "#a6e3a1",
|
||||
-- yellow = "#f9e2af",
|
||||
-- pink = "#f5c2e7",
|
||||
-- magenta = "#cba6f7",
|
||||
-- cyan = "#94e2d5",
|
||||
--
|
||||
-- bg = "#11111b",
|
||||
-- fg = "#cdd6f4",
|
||||
-- cursorline = "#181825",
|
||||
-- selection = "#313244",
|
||||
-- linenr = "#45475a",
|
||||
-- comment = "#585b70",
|
||||
--
|
||||
-- -- Syntax
|
||||
-- keyword = "#cba6f7",
|
||||
-- Function = "#cba6f7",
|
||||
-- string = "#f9e2af",
|
||||
-- constant = "#cba6f7",
|
||||
-- type = "#94e2d5",
|
||||
-- number = "#fab387",
|
||||
-- boolean = "#fab387",
|
||||
-- operator = "#cdd6f4",
|
||||
-- variable = "#cdd6f4",
|
||||
--
|
||||
-- -- TODO
|
||||
-- -- UI
|
||||
-- cursor = "#f5a97f",
|
||||
-- visual = "#2e3c55",
|
||||
-- search = "#f5c2e7",
|
||||
-- statusline = "#1e293b",
|
||||
-- menu_bg = "#1a2535",
|
||||
-- menu_sel = "#3b4252",
|
||||
-- fold = "#3e4a5a",
|
||||
-- split = "#334155",
|
||||
--
|
||||
-- -- TODO
|
||||
-- -- Diagnostics
|
||||
-- diag_error = "#f38ba8",
|
||||
-- diag_warn = "#fab387",
|
||||
-- diag_info = "#89dceb",
|
||||
-- diag_hint = "#b4befe",
|
||||
-- }
|
||||
--
|
||||
-- -- https://github.com/Ronxvier/ymir.nvim/blob/main/lua/ymir/groups.lua
|
||||
-- local groups = {
|
||||
-- Normal = { fg = colors.fg, bg = colors.bg },
|
||||
-- NormalFloat = { fg = colors.fg, bg = colors.bg },
|
||||
-- Comment = { fg = colors.comment, italic = true },
|
||||
-- Constant = { fg = colors.constant },
|
||||
-- String = { fg = colors.string },
|
||||
-- Character = { fg = colors.string },
|
||||
-- Number = { fg = colors.number },
|
||||
-- Boolean = { fg = colors.boolean },
|
||||
-- Float = { fg = colors.number },
|
||||
-- FloatBorder = { fg = colors.number },
|
||||
-- Operator = { fg = colors.operator },
|
||||
-- Keyword = { fg = colors.keyword },
|
||||
-- Keywords = { fg = colors.keyword },
|
||||
-- Identifier = { fg = colors.variable },
|
||||
-- Function = { fg = colors.Function },
|
||||
-- Statement = { fg = colors.keyword },
|
||||
-- Conditional = { fg = colors.keyword },
|
||||
-- Repeat = { fg = colors.keyword },
|
||||
-- Label = { fg = colors.keyword },
|
||||
-- Exception = { fg = colors.keyword },
|
||||
-- PreProc = { fg = colors.keyword },
|
||||
-- Include = { fg = colors.keyword },
|
||||
-- Define = { fg = colors.keyword },
|
||||
-- Title = { fg = colors.magenta },
|
||||
-- Macro = { fg = colors.keyword },
|
||||
-- PreCondit = { fg = colors.yellow },
|
||||
-- Type = { fg = colors.type, italic = true },
|
||||
-- StorageClass = { fg = colors.type, italic = true },
|
||||
-- Structure = { fg = colors.type, italic = true },
|
||||
-- TypeDef = { fg = colors.type, italic = true },
|
||||
-- Special = { fg = colors.keyword, italic = true },
|
||||
-- SpecialComment = { fg = colors.comment, italic = true },
|
||||
-- Error = { fg = colors.red },
|
||||
-- Todo = { fg = colors.yellow, bold = true, italic = true },
|
||||
-- Underlined = { fg = colors.cyan, underline = true },
|
||||
--
|
||||
-- Cursor = { fg = colors.cursor },
|
||||
-- CursorLineNr = { fg = colors.fg, bold = true },
|
||||
--
|
||||
-- SignColumn = { bg = colors.bg },
|
||||
--
|
||||
-- Conceal = { fg = colors.comment },
|
||||
-- -- CursorColumn = { bg = colors.selection},
|
||||
-- CursorLine = { bg = colors.selection },
|
||||
-- ColorColumn = { bg = colors.selection },
|
||||
--
|
||||
-- StatusLine = { fg = colors.statusline, bg = colors.black },
|
||||
-- StatusLineNC = { fg = colors.comment },
|
||||
-- StatusLineTerm = { fg = colors.fg, bg = colors.black },
|
||||
-- StatusLineTermNC = { fg = colors.comment },
|
||||
--
|
||||
-- Directory = { fg = colors.cyan },
|
||||
-- DiffAdd = { fg = colors.bg, bg = colors.green },
|
||||
-- DiffChange = { fg = colors.orange },
|
||||
-- DiffDelete = { fg = colors.red },
|
||||
-- DiffText = { fg = colors.comment },
|
||||
--
|
||||
-- ErrorMsg = { fg = colors.red },
|
||||
-- VertSplit = { fg = colors.fg },
|
||||
-- WinSeparator = { fg = colors.fg },
|
||||
-- Folded = { fg = colors.comment },
|
||||
-- FoldColumn = {},
|
||||
-- Search = { fg = colors.fg, bg = colors.selection },
|
||||
-- IncSearch = { fg = colors.fg, bg = colors.selection },
|
||||
-- LineNr = { fg = colors.comment },
|
||||
-- MatchParen = { fg = colors.cyan, underline = true },
|
||||
-- NonText = { fg = colors.comment },
|
||||
-- Pmenu = { fg = colors.fg, bg = colors.bg },
|
||||
-- PmenuSel = { fg = colors.bg, bg = colors.fg },
|
||||
-- PmenuSbar = { bg = colors.bg },
|
||||
-- PmenuThumb = { bg = colors.bg },
|
||||
--
|
||||
-- Question = { fg = colors.magenta },
|
||||
-- QuickFixLine = { fg = colors.bg, bg = colors.yellow },
|
||||
-- SpecialKey = { fg = colors.comment },
|
||||
--
|
||||
-- SpellBad = { fg = colors.red, underline = true },
|
||||
-- SpellCap = { fg = colors.yellow },
|
||||
-- SpellLocal = { fg = colors.yellow },
|
||||
-- SpellRare = { fg = colors.yellow },
|
||||
--
|
||||
-- TabLine = { fg = colors.comment },
|
||||
-- TabLineSel = { fg = colors.fg },
|
||||
-- TabLineFill = { bg = colors.bg },
|
||||
-- Terminal = { fg = colors.fg, bg = colors.black },
|
||||
-- Visual = { bg = colors.visual },
|
||||
-- VisualNOS = { fg = colors.visual },
|
||||
-- WarningMsg = { fg = colors.yellow },
|
||||
-- WildMenu = { fg = colors.black, bg = colors.white },
|
||||
--
|
||||
-- -- TreeSitter
|
||||
-- ["@comment"] = { fg = colors.comment, italic = true },
|
||||
-- ["@error"] = { fg = colors.red },
|
||||
-- ["@punctuation.delimiter"] = { fg = colors.fg },
|
||||
-- ["@punctuation.bracket"] = { fg = colors.fg },
|
||||
-- ["@punctuation.special"] = { fg = colors.cyan },
|
||||
--
|
||||
-- ["@constant"] = { fg = colors.constant },
|
||||
-- ["@constant.builtin"] = { fg = colors.constant },
|
||||
-- ["@symbol"] = { fg = colors.operator },
|
||||
--
|
||||
-- ["@constant.macro"] = { fg = colors.keyword },
|
||||
-- ["@string.regex"] = { fg = colors.string },
|
||||
-- ["@string"] = { fg = colors.string },
|
||||
-- ["@string.escape"] = { fg = colors.green },
|
||||
-- ["@character"] = { fg = colors.string },
|
||||
-- ["@number"] = { fg = colors.number },
|
||||
-- ["@boolean"] = { fg = colors.boolean },
|
||||
-- ["@float"] = { fg = colors.number },
|
||||
-- ["@annotation"] = { fg = colors.yellow },
|
||||
-- ["@attribute"] = { fg = colors.cyan },
|
||||
-- ["@namespace"] = { fg = colors.cyan },
|
||||
--
|
||||
-- ["@function.builtin"] = { fg = colors.Function },
|
||||
-- ["@function"] = { fg = colors.Function },
|
||||
-- ["@function.macro"] = { fg = colors.Function },
|
||||
-- ["@parameter"] = { fg = colors.number },
|
||||
-- ["@parameter.reference"] = { fg = colors.number },
|
||||
-- ["@method"] = { fg = colors.number },
|
||||
-- ["@field"] = { fg = colors.number },
|
||||
-- ["@property"] = { fg = colors.type },
|
||||
-- ["@constructor"] = { fg = colors.cyan },
|
||||
--
|
||||
-- ["@conditional"] = { fg = colors.pink },
|
||||
-- ["@repeat"] = { fg = colors.pink },
|
||||
-- ["@label"] = { fg = colors.cyan },
|
||||
--
|
||||
-- ["@keyword"] = { fg = colors.keyword },
|
||||
-- ["@keyword.function"] = { fg = colors.Function },
|
||||
-- ["@keyword.function.ruby"] = { fg = colors.Function },
|
||||
-- --["@keyword.operator"] = { fg = colors.pink },
|
||||
-- --["@operator"] = { fg = colors.pink },
|
||||
-- ["@exception"] = { fg = colors.magenta },
|
||||
-- ["@type"] = { fg = colors.bright_cyan },
|
||||
-- ["@type.builtin"] = { fg = colors.cyan, italic = true },
|
||||
-- ["@type.qualifier"] = { fg = colors.pink },
|
||||
-- ["@structure"] = { fg = colors.magenta },
|
||||
-- ["@include"] = { fg = colors.pink },
|
||||
--
|
||||
-- ["@variable"] = { fg = colors.variable },
|
||||
-- ["@variable.builtin"] = { fg = colors.variable },
|
||||
--
|
||||
-- ["@text"] = { fg = colors.number },
|
||||
-- ["@text.strong"] = { fg = colors.number, bold = true }, -- bold
|
||||
-- ["@text.emphasis"] = { fg = colors.yellow, italic = true }, -- italic
|
||||
-- ["@text.underline"] = { fg = colors.number },
|
||||
-- ["@text.title"] = { fg = colors.pink, bold = true }, -- title
|
||||
-- ["@text.literal"] = { fg = colors.number }, -- inline code
|
||||
-- ["@text.uri"] = { fg = colors.yellow, italic = true, underline = true }, -- urls
|
||||
-- ["@text.reference"] = { fg = colors.number, bold = true },
|
||||
--
|
||||
-- ["@tag"] = { fg = colors.cyan },
|
||||
-- ["@tag.attribute"] = { fg = colors.number },
|
||||
-- ["@tag.delimiter"] = { fg = colors.pink },
|
||||
--
|
||||
-- -- Semantic
|
||||
-- ["@class"] = { fg = colors.cyan },
|
||||
-- ["@struct"] = { fg = colors.cyan },
|
||||
-- ["@enum"] = { fg = colors.cyan },
|
||||
-- ["@enumMember"] = { fg = colors.magenta },
|
||||
-- ["@event"] = { fg = colors.cyan },
|
||||
-- ["@interface"] = { fg = colors.cyan },
|
||||
-- ["@modifier"] = { fg = colors.cyan },
|
||||
-- ["@regexp"] = { fg = colors.yellow },
|
||||
-- ["@typeParameter"] = { fg = colors.cyan },
|
||||
-- ["@decorator"] = { fg = colors.cyan },
|
||||
--
|
||||
-- -- LSP Semantic (0.9+)
|
||||
-- ["@lsp.type.class"] = { fg = colors.type },
|
||||
-- ["@lsp.type.enum"] = { fg = colors.type },
|
||||
-- ["@lsp.type.decorator"] = { fg = colors.number },
|
||||
-- ["@lsp.type.enumMember"] = { fg = colors.type },
|
||||
-- ["@lsp.type.function"] = { fg = colors.Function },
|
||||
-- ["@lsp.type.interface"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.macro"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.method"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.namespace"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.parameter"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.property"] = { fg = colors.keyword },
|
||||
-- ["@lsp.type.struct"] = { fg = colors.type },
|
||||
-- ["@lsp.type.type"] = { fg = colors.type },
|
||||
-- ["@lsp.type.variable"] = { fg = colors.variable },
|
||||
--
|
||||
-- -- HTML
|
||||
-- htmlArg = { fg = colors.orange },
|
||||
-- htmlBold = { fg = colors.yellow, bold = true },
|
||||
-- htmlEndTag = { fg = colors.cyan },
|
||||
-- htmlH1 = { fg = colors.pink },
|
||||
-- htmlH2 = { fg = colors.pink },
|
||||
-- htmlH3 = { fg = colors.pink },
|
||||
-- htmlH4 = { fg = colors.pink },
|
||||
-- htmlH5 = { fg = colors.pink },
|
||||
-- htmlH6 = { fg = colors.pink },
|
||||
-- htmlItalic = { fg = colors.magenta, italic = true },
|
||||
-- htmlLink = { fg = colors.magenta, underline = true },
|
||||
-- htmlSpecialChar = { fg = colors.yellow },
|
||||
-- htmlSpecialTagName = { fg = colors.cyan },
|
||||
-- htmlTag = { fg = colors.cyan },
|
||||
-- htmlTagN = { fg = colors.cyan },
|
||||
-- htmlTagName = { fg = colors.cyan },
|
||||
-- htmlTitle = { fg = colors.white },
|
||||
-- }
|
||||
--
|
||||
-- for group, setting in pairs(groups) do
|
||||
-- vim.api.nvim_set_hl(0, group, setting)
|
||||
-- end
|
||||
|
||||
-- nixvim stuff
|
||||
do
|
||||
local __nixvim_autogroups = { nixvim_binds_LspAttach = { clear = true }, nixvim_lsp_on_attach = { clear = false } }
|
||||
|
||||
for group_name, options in pairs(__nixvim_autogroups) do
|
||||
vim.api.nvim_create_augroup(group_name, options)
|
||||
end
|
||||
end
|
||||
do
|
||||
local __nixvim_autocommands = {
|
||||
{
|
||||
callback = function(event)
|
||||
do
|
||||
-- client and bufnr are supplied to the builtin `on_attach` callback,
|
||||
-- so make them available in scope for our global `onAttach` impl
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
local bufnr = event.buf
|
||||
require("lsp-format").on_attach(client, bufnr)
|
||||
end
|
||||
end,
|
||||
desc = "Run LSP onAttach",
|
||||
event = "LspAttach",
|
||||
group = "nixvim_lsp_on_attach",
|
||||
},
|
||||
{
|
||||
callback = function(args)
|
||||
do
|
||||
local __nixvim_binds = {}
|
||||
|
||||
for i, map in ipairs(__nixvim_binds) do
|
||||
local options = vim.tbl_extend("keep", map.options or {}, { buffer = args.buf })
|
||||
vim.keymap.set(map.mode, map.key, map.action, options)
|
||||
end
|
||||
end
|
||||
end,
|
||||
desc = "Load keymaps for LspAttach",
|
||||
event = "LspAttach",
|
||||
group = "nixvim_binds_LspAttach",
|
||||
},
|
||||
{ command = ":set guicursor=a:ver90-blinkon0", event = { "VimLeave" } },
|
||||
}
|
||||
|
||||
for _, autocmd in ipairs(__nixvim_autocommands) do
|
||||
vim.api.nvim_create_autocmd(autocmd.event, {
|
||||
group = autocmd.group,
|
||||
pattern = autocmd.pattern,
|
||||
buffer = autocmd.buffer,
|
||||
desc = autocmd.desc,
|
||||
callback = autocmd.callback,
|
||||
command = autocmd.command,
|
||||
once = autocmd.once,
|
||||
nested = autocmd.nested,
|
||||
})
|
||||
end
|
||||
end
|
||||
-- }}
|
||||
|
||||
-- https://github.com/nvim-lualine/lualine.nvim/blob/master/examples/bubbles.lua
|
||||
-- local bubbles_theme = {
|
||||
-- normal = {
|
||||
-- a = { fg = colors.bg, bg = colors.magenta },
|
||||
-- b = { fg = colors.bg, bg = colors.magenta },
|
||||
-- c = { fg = colors.bg, bg = colors.bg },
|
||||
-- },
|
||||
--
|
||||
-- insert = { a = { fg = colors.bg, bg = colors.green } },
|
||||
-- visual = { a = { fg = colors.bg, bg = colors.cyan } },
|
||||
-- replace = { a = { fg = colors.bg, bg = colors.red } },
|
||||
--
|
||||
-- inactive = {
|
||||
-- a = { fg = colors.fg, bg = colors.bg },
|
||||
-- b = { fg = colors.fg, bg = colors.bg },
|
||||
-- c = { fg = colors.fg },
|
||||
-- },
|
||||
-- }
|
||||
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
-- theme = bubbles_theme,
|
||||
component_separators = '',
|
||||
section_separators = { left = '', right = '' },
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { { 'mode', separator = { left = '' }, right_padding = 2 } },
|
||||
lualine_b = { 'filename', 'branch' },
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
lualine_y = { 'filetype', 'progress' },
|
||||
lualine_z = {
|
||||
{ 'location', separator = { right = '' }, left_padding = 2 },
|
||||
},
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = { 'filename' },
|
||||
lualine_b = {},
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
lualine_y = {},
|
||||
lualine_z = { 'location' },
|
||||
},
|
||||
tabline = {},
|
||||
extensions = {},
|
||||
}
|
||||
@@ -1,19 +1,18 @@
|
||||
{ config, pkgs, inputs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
programs.neovim =
|
||||
let
|
||||
# colors = config.stylix.base16Scheme.palette;
|
||||
colors = with config.lib.stylix.colors; {
|
||||
inherit base00 base01 base02 base03 base04 base05 base06 base07 base08 base09 base0A base0B base0C base0D base0E base0F;
|
||||
};
|
||||
in {
|
||||
imports = [
|
||||
./cmp
|
||||
./plugins
|
||||
|
||||
./keymaps.nix
|
||||
./options.nix
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
initLua = builtins.readFile (
|
||||
pkgs.replaceVars ./config.lua ({
|
||||
shell = "tcsh";
|
||||
} // colors)
|
||||
);
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
colorschemes.catppuccin.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim = {
|
||||
globals.mapleader = " ";
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>n";
|
||||
action = "<cmd>NvimTreeFindFileToggle<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
"t"
|
||||
];
|
||||
key = "<c-\\>";
|
||||
action = "<cmd>ToggleTerm<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
key = "<c-l>";
|
||||
action = "<cmd>BufferLineCycleNext<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
key = "<c-h>";
|
||||
action = "<cmd>BufferLineCyclePrev<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
key = "<c-j>";
|
||||
action = "<cmd>BufferLineGoToBuffer 1<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = [
|
||||
"n"
|
||||
"i"
|
||||
"v"
|
||||
];
|
||||
key = "<c-k>";
|
||||
action = "<cmd>BufferLineGoToBuffer -1<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader><leader>";
|
||||
action = "<cmd>Yazi<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>a";
|
||||
action = "<cmd>AerialToggle<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "{";
|
||||
action = "<cmd>AerialPrev<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "}";
|
||||
action = "<cmd>AerialNext<cr>";
|
||||
}
|
||||
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>c";
|
||||
action = ":hori term ";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim = {
|
||||
autoCmd = [
|
||||
{
|
||||
event = [ "VimLeave" ];
|
||||
command = ":set guicursor=a:ver90-blinkon0";
|
||||
}
|
||||
];
|
||||
diagnostic.settings = {
|
||||
virtual_lines = {
|
||||
current_line = true;
|
||||
};
|
||||
float = {
|
||||
border = "rounded";
|
||||
source = "always";
|
||||
};
|
||||
};
|
||||
opts = {
|
||||
shell = "nu";
|
||||
|
||||
fillchars = "eob: ";
|
||||
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
|
||||
tabstop = 4;
|
||||
softtabstop = 4;
|
||||
showtabline = 4;
|
||||
shiftwidth = 4;
|
||||
expandtab = true;
|
||||
smartindent = true;
|
||||
breakindent = true;
|
||||
|
||||
hlsearch = true;
|
||||
incsearch = true;
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
|
||||
mouse = "a";
|
||||
|
||||
updatetime = 50;
|
||||
|
||||
swapfile = false;
|
||||
backup = false;
|
||||
undofile = true;
|
||||
|
||||
scrolloff = 10;
|
||||
|
||||
cursorline = true;
|
||||
|
||||
wildmenu = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.codesnap = {
|
||||
enable = true;
|
||||
settings = {
|
||||
has_line_number = true;
|
||||
bg_theme = "grape";
|
||||
watermark = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./codesnap.nix
|
||||
./emmet.nix
|
||||
./rustaceanvim.nix
|
||||
./telescope.nix
|
||||
./toggleterm.nix
|
||||
./treesitter.nix
|
||||
];
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
aerial.enable = true;
|
||||
bufferline.enable = true;
|
||||
colorizer.enable = true;
|
||||
comment.enable = true;
|
||||
crates.enable = true;
|
||||
fidget.enable = true;
|
||||
lazygit.enable = true;
|
||||
lsp-lines.enable = true;
|
||||
lualine.enable = true;
|
||||
nvim-tree.enable = true;
|
||||
nvim-autopairs.enable = true;
|
||||
quickmath.enable = true;
|
||||
rainbow.enable = true;
|
||||
render-markdown.enable = true;
|
||||
treesj.enable = true;
|
||||
ts-autotag.enable = true;
|
||||
visual-multi.enable = true;
|
||||
web-devicons.enable = true;
|
||||
yazi.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.emmet = {
|
||||
enable = true;
|
||||
settings.leader = "<C-Y>";
|
||||
settings.mode = "a";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.rustaceanvim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
tools.enable_clippy = true;
|
||||
server = {
|
||||
default_settings = {
|
||||
inlayHints = {
|
||||
lifetimeElisionHints = {
|
||||
enable = "always";
|
||||
};
|
||||
};
|
||||
rust-analyzer = {
|
||||
cargo = {
|
||||
allFeatures = true;
|
||||
};
|
||||
check = {
|
||||
command = "clippy";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.telescope = {
|
||||
enable = true;
|
||||
extensions = {
|
||||
# file-browser.enable = true;
|
||||
fzf-native.enable = true;
|
||||
# media-files.enable = true;
|
||||
};
|
||||
settings = {
|
||||
pickers.colorscheme.enable_preview = true;
|
||||
|
||||
defaults = {
|
||||
layout_config = {
|
||||
horizontal = {
|
||||
prompt_position = "bottom";
|
||||
};
|
||||
};
|
||||
sorting_strategy = "descending";
|
||||
};
|
||||
};
|
||||
keymaps = {
|
||||
# "<leader><space>" = {
|
||||
# action = "find_files";
|
||||
# options.desc = "Find Project Files";
|
||||
# };
|
||||
"<leader>f" = {
|
||||
action = "live_grep";
|
||||
options.desc = "Find Text";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.toggleterm = {
|
||||
enable = true;
|
||||
settings = {
|
||||
direction = "horizontal";
|
||||
float_opts = {
|
||||
border = "curved";
|
||||
};
|
||||
shell = "nu";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.treesitter = {
|
||||
enable = true;
|
||||
settings = {
|
||||
auto_install = true;
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,47 +1,27 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.libnotify ];
|
||||
|
||||
xdg.configFile."rofi/config.rasi".text = ''
|
||||
configuration{
|
||||
modi: "run";
|
||||
modi: "run,drun,window";
|
||||
lines: 5;
|
||||
cycle: false;
|
||||
font: "CaskaydiaCove Nerd Font 14";
|
||||
show-icons: false;
|
||||
font: "${config.stylix.fonts.serif.name} 14";
|
||||
show-icons: true;
|
||||
icon-theme: "Papirus-dark";
|
||||
terminal: "foot";
|
||||
run-display-format: "{name}";
|
||||
drun-display-format: "{icon} {name}";
|
||||
location: 0;
|
||||
disable-history: true;
|
||||
hide-scrollbar: true;
|
||||
display-drun: " Apps ";
|
||||
display-run: " Run ";
|
||||
display-window: " Window ";
|
||||
/* display-Network: " Network"; */
|
||||
sidebar-mode: true;
|
||||
sorting-method: "fzf";
|
||||
}
|
||||
|
||||
@theme "theme"
|
||||
'';
|
||||
|
||||
# xdg.configFile."rofi/config.rasi".text = ''
|
||||
# configuration{
|
||||
# modi: "run,drun,window";
|
||||
# lines: 5;
|
||||
# cycle: false;
|
||||
# font: "${config.stylix.fonts.serif.name} 14";
|
||||
# show-icons: true;
|
||||
# icon-theme: "Papirus-dark";
|
||||
# terminal: "foot";
|
||||
# drun-display-format: "{icon} {name}";
|
||||
# location: 0;
|
||||
# disable-history: true;
|
||||
# hide-scrollbar: true;
|
||||
# display-drun: " Apps ";
|
||||
# display-run: " Run ";
|
||||
# display-window: " Window ";
|
||||
# /* display-Network: " Network"; */
|
||||
# sidebar-mode: true;
|
||||
# sorting-method: "fzf";
|
||||
# }
|
||||
#
|
||||
# @theme "theme"'';
|
||||
@theme "theme"'';
|
||||
}
|
||||
|
||||
@@ -8,6 +8,5 @@
|
||||
home.packages = [
|
||||
pkgs.rofi-power-menu
|
||||
pkgs.rofi
|
||||
pkgs.rofimoji
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
xdg.configFile."rofi/theme.rasi".text = with config.lib.stylix.colors; ''
|
||||
xdg.configFile."rofi/theme.rasi".text = with config.stylix.base16Scheme.palette; ''
|
||||
* {
|
||||
bg-col: #${base00};
|
||||
bg-col-light: #${base01};
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{ ... }:
|
||||
{
|
||||
programs.starship = {
|
||||
#enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.tcsh ];
|
||||
home.file.".cshrc".text = ''
|
||||
set noclobber
|
||||
set color
|
||||
set autolist
|
||||
set history = 10000
|
||||
set savehist = (10000 merge)
|
||||
set e="`echo x | tr x '\033'`"
|
||||
set prompt = "%{\e[35m%}[%h] %~ :3%{\e[0m%} "
|
||||
|
||||
alias ls 'ls --color=auto'
|
||||
alias l 'ls -alh --color=auto'
|
||||
|
||||
|
||||
'';
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
home.file.".config/vesktop/themes/base16.css".text =
|
||||
with config.lib.stylix.colors;
|
||||
with config.stylix.base16Scheme.palette;
|
||||
with config.stylix.fonts;
|
||||
''
|
||||
@import url('https://refact0r.github.io/midnight-discord/build/midnight.css');
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
home.file.".config/waybar/config".text = ''
|
||||
{
|
||||
"position": "top",
|
||||
"spacing": 4,
|
||||
"modules-left": ["custom/icon", "dwl/tags", "tray"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": ["pulseaudio", "cpu", "memory", "temperature", "battery"],
|
||||
"custom/icon": {
|
||||
"format": " ",
|
||||
"tooltip": false
|
||||
},
|
||||
"tray": {
|
||||
"spacing": 10
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%Y/%m/%d - %A - %R}",
|
||||
"tooltip": false
|
||||
},
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": " {}%"
|
||||
},
|
||||
"temperature": {
|
||||
"thermal-zone": 2,
|
||||
"critical-threshold": 80,
|
||||
"format-critical": "{icon} {temperatureC}°C",
|
||||
"format": "{icon} {temperatureC}°C",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{icon} {time}",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"pulseaudio": {
|
||||
"scroll-step": 5, // %, can be a float
|
||||
"format": "{icon} {volume}% {format_source}",
|
||||
"format-bluetooth": " {icon} {volume}% {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": " {volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click-right": "pavucontrol",
|
||||
},
|
||||
}
|
||||
'';
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = ''
|
||||
* {
|
||||
font-family: "${config.stylix.fonts.serif.name}";
|
||||
font-size: 16px;
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
margin-top: 6px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#custom-icon,
|
||||
#tray,
|
||||
#clock,
|
||||
#pulseaudio,
|
||||
#cpu,
|
||||
#memory,
|
||||
#temperature,
|
||||
#battery {
|
||||
margin-top: 6px;
|
||||
margin-left: 8px;
|
||||
padding-left: 10px;
|
||||
margin-bottom: 0px;
|
||||
padding-right: 10px;
|
||||
color: #${config.stylix.base16Scheme.palette.base05};
|
||||
background: #${config.stylix.base16Scheme.palette.base00};
|
||||
border: 2px solid #${config.stylix.base16Scheme.palette.base0D};
|
||||
}
|
||||
|
||||
#custom-icon {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#memory {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #${config.stylix.base16Scheme.palette.base08};
|
||||
}
|
||||
}
|
||||
|
||||
#tags {
|
||||
margin-top: 6px;
|
||||
margin-left: 8px;
|
||||
padding-left: 10px;
|
||||
margin-bottom: 0px;
|
||||
padding-right: 10px;
|
||||
border: 2px solid #${config.stylix.base16Scheme.palette.base0D};
|
||||
}
|
||||
|
||||
#tags button.occupied {
|
||||
color: #${config.stylix.base16Scheme.palette.base0B};
|
||||
background: #${config.stylix.base16Scheme.palette.base00};
|
||||
}
|
||||
|
||||
#tags button.focused {
|
||||
color: #${config.stylix.base16Scheme.palette.base0D};
|
||||
background: #${config.stylix.base16Scheme.palette.base00};
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ pkgs.yash ];
|
||||
xdg.configFile."yash/rc".text =
|
||||
"
|
||||
. --autoload --no-alias initialization/common
|
||||
YASH_PS1='\\fm\${PWD} λ \\fD'
|
||||
YASH_PS1R=''
|
||||
bindkey --emacs '\\^L' clear-and-redraw-all
|
||||
bindkey --vi-insert '\\^L' clear-and-redraw-all
|
||||
bindkey --vi-command '\\^L' clear-and-redraw-all
|
||||
";
|
||||
}
|
||||
@@ -2,6 +2,5 @@
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "y";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = with config.lib.stylix.colors; {
|
||||
options = with config.stylix.base16Scheme.palette; {
|
||||
font = "${config.stylix.fonts.serif.name} 14";
|
||||
|
||||
default-fg = "#${base05}";
|
||||
|
||||
@@ -15,7 +15,7 @@ let
|
||||
};
|
||||
replaceWithStylixColours =
|
||||
textFile:
|
||||
with config.lib.stylix.colors;
|
||||
with config.stylix.base16Scheme.palette;
|
||||
builtins.replaceStrings
|
||||
[
|
||||
"1e1e2e"
|
||||
@@ -65,12 +65,10 @@ let
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
};
|
||||
|
||||
profileName = "6dypj11h.Default Profile";
|
||||
in
|
||||
{
|
||||
home.file.".zen/${profileName}/chrome/userChrome.css".text = userChromeText;
|
||||
home.file.".zen/${profileName}/chrome/userContent.css".text = userContentText;
|
||||
home.file.".zen/default/chrome/userChrome.css".text = userChromeText;
|
||||
home.file.".zen/default/chrome/userContent.css".text = userContentText;
|
||||
programs.zen-browser = {
|
||||
enable = true;
|
||||
policies = {
|
||||
@@ -114,15 +112,6 @@ in
|
||||
|
||||
# uBlock Origin:
|
||||
"uBlock0@raymondhill.net"
|
||||
|
||||
# Shinigami Eyes
|
||||
"shinigamieyes@shinigamieyes"
|
||||
|
||||
# Hide shorts for Youtube
|
||||
"{88ebde3a-4581-4c6b-8019-2a05a9e3e938}"
|
||||
|
||||
# Vimium
|
||||
"{d7742d87-e61d-4b78-b8a1-b469842139fa}"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
betterfox = pkgs.fetchFromGitHub {
|
||||
owner = "yokoffing";
|
||||
repo = "Betterfox";
|
||||
rev = "116.1";
|
||||
hash = "sha256-Ai8Szbrk/4FhGhS4r5gA2DqjALFRfQKo2a/TwWCIA6g=";
|
||||
};
|
||||
|
||||
catppuccinUserChrome = pkgs.fetchFromGitHub {
|
||||
owner = "catppuccin";
|
||||
repo = "zen-browser";
|
||||
rev = "0893393f721facb884365a318111c4a7fce96b45";
|
||||
hash = "sha256-+Nf7TUairZBnhYCFVBqiQW9QodV/xWSOnH6X9o6S7rM=";
|
||||
};
|
||||
replaceWithStylixColours =
|
||||
textFile:
|
||||
with config.lib.stylix.colors;
|
||||
builtins.replaceStrings
|
||||
[
|
||||
"1e1e2e"
|
||||
"181825"
|
||||
"313244"
|
||||
"45475a"
|
||||
"585b70"
|
||||
"cdd6f4"
|
||||
"f5e0dc"
|
||||
"b4befe"
|
||||
"f38ba8"
|
||||
"fab387"
|
||||
"f9e2af"
|
||||
"a6e3a1"
|
||||
"94e2d5"
|
||||
"89b4fa"
|
||||
"cba6f7"
|
||||
"f2cdcd"
|
||||
"rgb(204, 190, 246)"
|
||||
]
|
||||
[
|
||||
base00
|
||||
base01
|
||||
base02
|
||||
base03
|
||||
base04
|
||||
base05
|
||||
base06
|
||||
base07
|
||||
base08
|
||||
base09
|
||||
base0A
|
||||
base0B
|
||||
base0C
|
||||
base0D
|
||||
base0E
|
||||
base0F
|
||||
"#${base0E}"
|
||||
]
|
||||
(builtins.readFile textFile);
|
||||
|
||||
#userChromeText = replaceWithStylixColours "${catppuccinUserChrome}/themes/Mocha/Mauve/userChrome.css";
|
||||
userChromeText = builtins.readFile (
|
||||
with config.lib.stylix.colors;
|
||||
pkgs.replaceVars ./userChrome.css {
|
||||
inherit
|
||||
base00
|
||||
base01
|
||||
base02
|
||||
# base03
|
||||
# base04
|
||||
base05
|
||||
base06
|
||||
# base07
|
||||
base08
|
||||
base09
|
||||
base0A
|
||||
base0B
|
||||
base0C
|
||||
base0D
|
||||
base0E
|
||||
# base0F
|
||||
;
|
||||
}
|
||||
);
|
||||
userContentText = replaceWithStylixColours "${catppuccinUserChrome}/themes/Mocha/Mauve/userContent.css";
|
||||
|
||||
installExtension = name: {
|
||||
inherit name;
|
||||
value = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
};
|
||||
|
||||
profileName = "tvqbzcy7.Default Profile";
|
||||
in
|
||||
{
|
||||
home.file.".zen/${profileName}/chrome/userChrome.css".text = userChromeText;
|
||||
home.file.".zen/${profileName}/chrome/userContent.css".text = userContentText;
|
||||
programs.zen-browser = {
|
||||
enable = true;
|
||||
policies = {
|
||||
DisableTelemtry = true;
|
||||
DisableFirefoxStudies = true;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
DisablePocket = true;
|
||||
DisableFirefoxAccounts = true;
|
||||
DisableAccounts = true;
|
||||
DisableFirefoxScreenshots = true;
|
||||
OverrideFirstRunPage = "";
|
||||
OverridePostUpdatePage = "";
|
||||
DontCheckDefaultBrowser = true;
|
||||
DisplayBookmarksToolbar = "never";
|
||||
DisplayMenuBar = "default-off";
|
||||
SearchBar = "unified";
|
||||
ExtensionSettings = builtins.listToAttrs (
|
||||
builtins.map (name: installExtension name) [
|
||||
# BitWarden
|
||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}"
|
||||
|
||||
# Catppuccin Mocha Mauve
|
||||
"{76aabc99-c1a8-4c1e-832b-d4f2941d5a7a}"
|
||||
|
||||
# Dark Reader
|
||||
"addon@darkreader.org"
|
||||
|
||||
# Language Tool
|
||||
"languagetool-webextension@languagetool.org"
|
||||
|
||||
# Return dislikes to YouTube
|
||||
"{762f9885-5a13-4abd-9c77-433dcd38b8fd}"
|
||||
|
||||
# SponsorBlocker
|
||||
"sponsorBlocker@ajay.app"
|
||||
|
||||
# uBlock Origin:
|
||||
"uBlock0@raymondhill.net"
|
||||
|
||||
# Shinigami Eyes
|
||||
"shinigamieyes@shinigamieyes"
|
||||
|
||||
# Hide shorts for Youtube
|
||||
"{88ebde3a-4581-4c6b-8019-2a05a9e3e938}"
|
||||
|
||||
# Vimium
|
||||
"{d7742d87-e61d-4b78-b8a1-b469842139fa}"
|
||||
]
|
||||
);
|
||||
};
|
||||
|
||||
profiles.default = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
extraConfig = builtins.concatStringsSep "\n" [
|
||||
(builtins.readFile "${betterfox}/Securefox.js")
|
||||
(builtins.readFile "${betterfox}/Fastfox.js")
|
||||
(builtins.readFile "${betterfox}/Peskyfox.js")
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,128 +0,0 @@
|
||||
/* https://github.com/catppuccin/zen-browser/blob/main/themes/Mocha/Pink/userChrome.css */
|
||||
|
||||
:root {
|
||||
--zen-colors-primary: #@base02@ !important;
|
||||
--zen-primary-color: #@base0D@ !important;
|
||||
--zen-colors-secondary: #@base02@ !important;
|
||||
--zen-colors-tertiary: #@base01@ !important;
|
||||
--zen-colors-border: #base0D# !important;
|
||||
--toolbarbutton-icon-fill: #@base0D@ !important;
|
||||
--lwt-text-color: #@base05@ !important;
|
||||
--toolbar-field-color: #@base05@ !important;
|
||||
--tab-selected-textcolor: #@base06@ !important;
|
||||
--toolbar-field-focus-color: #@base05@ !important;
|
||||
--toolbar-color: #@base05@ !important;
|
||||
--newtab-text-primary-color: #@base05@ !important;
|
||||
--arrowpanel-color: #@base05@ !important;
|
||||
--arrowpanel-background: #@base01@ !important;
|
||||
--sidebar-text-color: #@base05@ !important;
|
||||
--lwt-sidebar-text-color: #@base05@ !important;
|
||||
--lwt-sidebar-background-color: #@base00@ !important;
|
||||
--toolbar-bgcolor: #@base02@ !important;
|
||||
--newtab-background-color: #@base01@ !important;
|
||||
--zen-themed-toolbar-bg: #@base01@ !important;
|
||||
--zen-main-browser-background: #@base01@ !important;
|
||||
--toolbox-bgcolor-inactive: #@base01@ !important;
|
||||
}
|
||||
|
||||
#permissions-granted-icon {
|
||||
color: #@base01@ !important;
|
||||
}
|
||||
|
||||
.sidebar-placesTree {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
|
||||
#zen-workspaces-button {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
|
||||
#TabsToolbar {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
|
||||
.urlbar-background {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
|
||||
.content-shortcuts {
|
||||
background-color: #@base01@ !important;
|
||||
border-color: #@base0D@ !important;
|
||||
}
|
||||
|
||||
.urlbarView-url {
|
||||
color: #@base0D@ !important;
|
||||
}
|
||||
|
||||
#zenEditBookmarkPanelFaviconContainer {
|
||||
background: #@base00@ !important;
|
||||
}
|
||||
|
||||
#zen-media-controls-toolbar {
|
||||
& #zen-media-progress-bar {
|
||||
&::-moz-range-track {
|
||||
background: #@base02@ !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
toolbar .toolbarbutton-1 {
|
||||
&:not([disabled]) {
|
||||
&:is([open], [checked])
|
||||
> :is(
|
||||
.toolbarbutton-icon,
|
||||
.toolbarbutton-text,
|
||||
.toolbarbutton-badge-stack
|
||||
) {
|
||||
fill: #@base00@;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.identity-color-blue {
|
||||
--identity-tab-color: #@base0D@ !important;
|
||||
--identity-icon-color: #@base0D@ !important;
|
||||
}
|
||||
|
||||
.identity-color-turquoise {
|
||||
--identity-tab-color: #@base0C@ !important;
|
||||
--identity-icon-color: #@base0C@ !important;
|
||||
}
|
||||
|
||||
.identity-color-green {
|
||||
--identity-tab-color: #@base0B@ !important;
|
||||
--identity-icon-color: #@base0B@ !important;
|
||||
}
|
||||
|
||||
.identity-color-yellow {
|
||||
--identity-tab-color: #@base0A@ !important;
|
||||
--identity-icon-color: #@base0A@ !important;
|
||||
}
|
||||
|
||||
.identity-color-orange {
|
||||
--identity-tab-color: #@base09@ !important;
|
||||
--identity-icon-color: #@base09@ !important;
|
||||
}
|
||||
|
||||
.identity-color-red {
|
||||
--identity-tab-color: #@base08@ !important;
|
||||
--identity-icon-color: #@base08@ !important;
|
||||
}
|
||||
|
||||
.identity-color-pink {
|
||||
--identity-tab-color: #@base0D@ !important;
|
||||
--identity-icon-color: #@base0D@ !important;
|
||||
}
|
||||
|
||||
.identity-color-purple {
|
||||
--identity-tab-color: #@base0E@ !important;
|
||||
--identity-icon-color: #@base0E@ !important;
|
||||
}
|
||||
|
||||
hbox#titlebar {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
|
||||
#zen-appcontent-navbar-container {
|
||||
background-color: #@base01@ !important;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{...}:
|
||||
{
|
||||
programs.zoxide = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
config,
|
||||
hostName,
|
||||
lib,
|
||||
pkgs,
|
||||
wallpaper,
|
||||
...
|
||||
}:
|
||||
let
|
||||
wawa = pkgs.callPackage ./wawa.nix { };
|
||||
in
|
||||
{
|
||||
home.packages = [ pkgs.river-bsp-layout ];
|
||||
|
||||
xdg.configFile."river/init" = {
|
||||
source = pkgs.replaceVars ./init.sh {
|
||||
inherit wallpaper;
|
||||
inherit hostName;
|
||||
inherit wawa;
|
||||
inherit (config.lib.stylix.colors) base0D base02;
|
||||
cursorName = config.home.pointerCursor.name;
|
||||
cursorSize = config.home.pointerCursor.size;
|
||||
};
|
||||
executable = true;
|
||||
};
|
||||
|
||||
home.activation.reinitRiver =
|
||||
with config.lib.stylix.colors;
|
||||
lib.hm.dag.entryAnywhere ''
|
||||
${pkgs.river-classic}/bin/riverctl border-color-focused 0x${base0D}
|
||||
${pkgs.river-classic}/bin/riverctl border-color-unfocused 0x${base02}
|
||||
${wawa}/bin/wawa fill ${wallpaper} &
|
||||
'';
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# https://codeberg.org/river/river-classic/src/branch/main/example/init
|
||||
|
||||
@wawa@/bin/wawa fill @wallpaper@ &
|
||||
|
||||
riverctl map normal Super Q spawn foot
|
||||
riverctl map normal Super B spawn zen-beta
|
||||
|
||||
riverctl map normal Super D spawn "rofi -show run"
|
||||
riverctl map normal Super+Shift P spawn "rofi -show pm -modi pm:rofi-power-menu"
|
||||
riverctl map normal Super+Shift S spawn "gscreenshot -c -s"
|
||||
|
||||
riverctl map normal Super C close
|
||||
riverctl map normal Super+Shift M exit
|
||||
|
||||
riverctl map normal Super Up focus-view up
|
||||
riverctl map normal Super Right focus-view right
|
||||
riverctl map normal Super Left focus-view left
|
||||
riverctl map normal Super Down focus-view down
|
||||
|
||||
riverctl map normal Super k focus-view up
|
||||
riverctl map normal Super l focus-view right
|
||||
riverctl map normal Super h focus-view left
|
||||
riverctl map normal Super j focus-view down
|
||||
|
||||
riverctl map normal Super+Control Up focus-output up
|
||||
riverctl map normal Super+Control Right focus-output right
|
||||
riverctl map normal Super+Control Left focus-output left
|
||||
riverctl map normal Super+Control Down focus-output down
|
||||
|
||||
riverctl map normal Super+Control k focus-output up
|
||||
riverctl map normal Super+Control l focus-output right
|
||||
riverctl map normal Super+Control h focus-output left
|
||||
riverctl map normal Super+Control j focus-output down
|
||||
|
||||
riverctl map normal Super+Shift Up swap up
|
||||
riverctl map normal Super+Shift Right swap right
|
||||
riverctl map normal Super+Shift Left swap left
|
||||
riverctl map normal Super+Shift Down swap down
|
||||
|
||||
riverctl map normal Super+Shift k swap up
|
||||
riverctl map normal Super+Shift l swap right
|
||||
riverctl map normal Super+Shift h swap left
|
||||
riverctl map normal Super+Shift j swap down
|
||||
|
||||
riverctl map normal Super+Shift+Control Up send-to-output up
|
||||
riverctl map normal Super+Shift+Control Right send-to-output right
|
||||
riverctl map normal Super+Shift+Control Left send-to-output left
|
||||
riverctl map normal Super+Shift+Control Down send-to-output down
|
||||
|
||||
riverctl map normal Super+Shift+Control k send-to-output up
|
||||
riverctl map normal Super+Shift+Control l send-to-output right
|
||||
riverctl map normal Super+Shift+Control h send-to-output left
|
||||
riverctl map normal Super+Shift+Control j send-to-output down
|
||||
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
riverctl map normal Super $i set-focused-tags $tags
|
||||
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||
done
|
||||
|
||||
# focus all tags at once
|
||||
riverctl map normal Super A set-focused-tags 511
|
||||
|
||||
riverctl map normal Super F toggle-fullscreen
|
||||
|
||||
riverctl focus-follows-cursor normal
|
||||
riverctl set-cursor-warp on-focus-change
|
||||
|
||||
riverctl border-color-focused 0x@base0D@
|
||||
riverctl border-color-unfocused 0x@base02@
|
||||
riverctl border-width 2
|
||||
|
||||
riverctl xcursor-theme @cursorName@ @cursorSize@
|
||||
|
||||
riverctl set-repeat 30 300
|
||||
|
||||
riverctl default-layout bsp-layout
|
||||
river-bsp-layout --inner-gap 0 --outer-gap 0 --split-perc 0.5 &
|
||||
|
||||
riverctl rule-add ssd
|
||||
riverctl rule-add -app-id "vesktop" output HDMI-A-2
|
||||
|
||||
wlr-randr --output DP-2 --mode 2560x1440@180Hz
|
||||
|
||||
export XDG_CURRENT_DESKTOP=river
|
||||
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river
|
||||
systemctl --user restart xdg-desktop-portal
|
||||
|
||||
if [ "@hostName@" = "february" ]; then
|
||||
riverctl keyboard-layout -variant colemak us
|
||||
else
|
||||
vesktop &
|
||||
fi
|
||||
|
||||
eww daemon
|
||||
eww open bar
|
||||
@@ -1,28 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = "wawa";
|
||||
version = "1.0";
|
||||
src = pkgs.fetchFromCodeberg {
|
||||
owner = "sewn";
|
||||
repo = "wawa";
|
||||
rev = "988c5d10a1535b0243a0191f71d522e9abeea2de";
|
||||
hash = "sha256-nu8BjALjrlcm0AnBcRZxMjn+soozAU58nvqLuiN3UHk=";
|
||||
};
|
||||
buildInputs = with pkgs; [
|
||||
pkg-config
|
||||
wayland
|
||||
wayland-protocols
|
||||
wayland-scanner
|
||||
];
|
||||
makeFlags = [
|
||||
"DESTDIR=$(out)"
|
||||
"PREFIX="
|
||||
];
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
|
||||
sed -i '15s/-Wall/-Wall -Wno-incompatible-pointer-types -D_GNU_SOURCE/' Makefile
|
||||
|
||||
runHook postPatch
|
||||
'';
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
hostName,
|
||||
pkgs,
|
||||
@@ -15,31 +13,9 @@
|
||||
inputs.base16.nixosModule
|
||||
|
||||
./stylix.nix
|
||||
./river.nix
|
||||
./dwl/dwl.nix
|
||||
];
|
||||
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
device = "nodev";
|
||||
useOSProber = true;
|
||||
};
|
||||
|
||||
documentation.man = {
|
||||
enable = true;
|
||||
cache = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."current-system-packages".text =
|
||||
let
|
||||
packages = map (p: "${p.name}") config.environment.systemPackages;
|
||||
sortedUnique = builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages);
|
||||
formatted = builtins.concatStringsSep "\n" sortedUnique;
|
||||
in
|
||||
formatted;
|
||||
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.tmp.cleanOnBoot = true;
|
||||
|
||||
@@ -62,81 +38,44 @@
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||
'';
|
||||
|
||||
security.polkit = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
// https://github.com/frasertajima/tailscale_shortcuts/blob/0d1f3992890114c5ea6dfb972fcc782325681e3d/V2_CAUTION/reboot_polkit.md?plain=1#L33
|
||||
polkit.addRule(function(action, subject) {
|
||||
if (subject.isInGroup("wheel") &&
|
||||
(action.id == "org.freedesktop.login1.reboot" ||
|
||||
action.id == "org.freedesktop.login1.suspend" ||
|
||||
action.id == "org.freedesktop.login1.power-off" ||
|
||||
action.id == "org.freedesktop.login1.shutdown")) {
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
'';
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
inherit hostName;
|
||||
wallpaper = config.stylix.image;
|
||||
};
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
users = {
|
||||
${userName} = import (../../.. + "/home/pc/${hostName}/home.nix");
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."current-home-manager-packages".text =
|
||||
let
|
||||
packages = map (p: "${p.name}") config.home-manager.users.${userName}.home.packages;
|
||||
sortedUnique = builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages);
|
||||
formatted = builtins.concatStringsSep "\n" sortedUnique;
|
||||
in
|
||||
formatted;
|
||||
|
||||
services.gnome.glib-networking.enable = true;
|
||||
|
||||
services.displayManager.lemurs = {
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# services.displayManager.sddm = {
|
||||
# enable = true;
|
||||
# theme = "catppuccin-mocha-mauve";
|
||||
# wayland.enable = true;
|
||||
# package = pkgs.kdePackages.sddm;
|
||||
# };
|
||||
|
||||
services.displayManager.ly = {
|
||||
enable = true;
|
||||
settings.environment_switcher.include_tty_shell = true;
|
||||
};
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.sway = {
|
||||
default = [ "gtk" ];
|
||||
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
|
||||
"org.freedesktop.impl.portal.ScreenCast" = [ "wlr" ];
|
||||
"org.freedesktop.impl.portal.ScreenShot" = [ "wlr" ];
|
||||
"org.freedesktop.impl.portal.Inhibit" = [ ];
|
||||
};
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-wlr
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
wlr = {
|
||||
enable = true;
|
||||
settings.screencast = {
|
||||
max_fps = 180;
|
||||
chooser_type = "simple";
|
||||
chooser_cmd = "${pkgs.slurp}/bin/slurp -f 'Monitor: %o' -or";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.blueman.enable = true;
|
||||
|
||||
services.printing.enable = true;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.pulseaudio.enable = false;
|
||||
@@ -151,87 +90,37 @@
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
|
||||
# programs.fish.enable = true;
|
||||
programs.fish.enable = true;
|
||||
|
||||
users.users.${userName} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"seat"
|
||||
"audio"
|
||||
];
|
||||
packages = [ ];
|
||||
shell = pkgs.tcsh;
|
||||
shell = pkgs.fish;
|
||||
};
|
||||
environment.shells = [ pkgs.tcsh ];
|
||||
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
environment.etc."csh.cshrc" = {
|
||||
enable = true;
|
||||
text =
|
||||
# https://github.com/NixOS/nixpkgs/blob/736c1381347ac3cbb2031159f4df254f49a619fd/nixos/modules/config/shells-environment.nix
|
||||
let
|
||||
cfg = config.environment;
|
||||
|
||||
absoluteVariables = lib.mapAttrs (n: lib.toList) cfg.variables;
|
||||
|
||||
suffixedVariables = lib.flip lib.mapAttrs cfg.profileRelativeEnvVars (
|
||||
envVar: listSuffixes:
|
||||
lib.concatMap (profile: map (suffix: "${profile}${suffix}") listSuffixes) cfg.profiles
|
||||
);
|
||||
|
||||
allVariables = lib.zipAttrsWith (n: lib.concatLists) [
|
||||
absoluteVariables
|
||||
suffixedVariables
|
||||
];
|
||||
|
||||
exportVariables = lib.mapAttrsToList (
|
||||
n: v: ''set ${n} = "${lib.concatStringsSep ":" v}"''
|
||||
) allVariables;
|
||||
|
||||
exportedEnvVars = lib.concatStringsSep "\n" exportVariables;
|
||||
in
|
||||
''
|
||||
set XDG_CONFIG_HOME = /home/autumn/.config;
|
||||
set XDG_DATA_HOME = /home/autumn/.local/share;
|
||||
set XDG_CACHE_HOME = /home/autumn/.local/cache;
|
||||
set XDG_STATE_HOME = /home/autumn/.local/state;
|
||||
|
||||
# DO NOT EDIT -- this file has been generated automatically.
|
||||
|
||||
# Prevent this file from being sourced by child shells.
|
||||
set __NIXOS_SET_ENVIRONMENT_DONE = 1
|
||||
|
||||
${exportedEnvVars}
|
||||
|
||||
# removed extraInit ; keep that in mind !!
|
||||
|
||||
${lib.optionalString cfg.homeBinInPath ''
|
||||
# ~/bin if it exists overrides other bin directories.
|
||||
set PATH = "$HOME/bin:$PATH"
|
||||
''}
|
||||
|
||||
${lib.optionalString cfg.localBinInPath ''
|
||||
set PATH = "$HOME/.local/bin:$PATH"
|
||||
''}
|
||||
'';
|
||||
};
|
||||
programs.dconf.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
tcsh
|
||||
|
||||
cloudflared
|
||||
gparted
|
||||
networkmanagerapplet
|
||||
nh
|
||||
pavucontrol
|
||||
(pkgs.catppuccin-sddm.override {
|
||||
flavor = "mocha";
|
||||
font = "CaskaydiaCove Nerd Font";
|
||||
fontSize = "12";
|
||||
})
|
||||
wget
|
||||
slurp
|
||||
];
|
||||
|
||||
fonts = {
|
||||
@@ -254,13 +143,9 @@
|
||||
|
||||
environment.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
SUDO_EDITOR = "nvim";
|
||||
BROWSER = "zen";
|
||||
SHELL = "tcsh";
|
||||
TERM = "foot";
|
||||
|
||||
XDG_CURRENT_DESKTOP = "river";
|
||||
LIBSEAT_BACKEND = "seatd";
|
||||
SUDO_EDITOR = "nvim";
|
||||
SHELL = "nu";
|
||||
};
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
#define BASE_00 "@base00@"
|
||||
#define BASE_01 "@base01@"
|
||||
#define BASE_02 "@base02@"
|
||||
#define BASE_03 "@base03@"
|
||||
#define BASE_04 "@base04@"
|
||||
#define BASE_05 "@base05@"
|
||||
#define BASE_06 "@base06@"
|
||||
#define BASE_07 "@base07@"
|
||||
#define BASE_08 "@base08@"
|
||||
#define BASE_09 "@base09@"
|
||||
#define BASE_0A "@base0A@"
|
||||
#define BASE_0B "@base0B@"
|
||||
#define BASE_0C "@base0C@"
|
||||
#define BASE_0D "@base0D@"
|
||||
#define BASE_0E "@base0E@"
|
||||
#define BASE_0F "@base0F@"
|
||||
|
||||
#define WALLPAPER "@wallpaper@"
|
||||
|
||||
/* Taken from https://github.com/jt0w/.dotfiles/blob/a6db8ad08ce834bb8ba9d15b999281d6635f5169/modules/nixos/dwl/config.def.h */
|
||||
#define HEX(c) \
|
||||
((c) >= '0' && (c) <= '9' ? (c) - '0' \
|
||||
: (c) >= 'a' && (c) <= 'f' ? (c) - 'a' + 10 \
|
||||
: (c) >= 'A' && (c) <= 'F' ? (c) - 'A' + 10 \
|
||||
: 0)
|
||||
|
||||
#define HEXBYTE(s, i) ((HEX((s)[i]) << 4) | HEX((s)[(i) + 1]))
|
||||
|
||||
#define RGB_HEX_TO_RGBA(s) \
|
||||
((uint32_t)((HEXBYTE(s, 0) << 24) | (HEXBYTE(s, 2) << 16) | \
|
||||
(HEXBYTE(s, 4) << 8) | 0xFF))
|
||||
|
||||
/* Taken from https://github.com/djpohly/dwl/issues/466 */
|
||||
#define COLOR(hex) \
|
||||
{((hex >> 24) & 0xFF) / 255.0f, ((hex >> 16) & 0xFF) / 255.0f, \
|
||||
((hex >> 8) & 0xFF) / 255.0f, (hex & 0xFF) / 255.0f}
|
||||
|
||||
/* appearance */
|
||||
static const int sloppyfocus = 1; /* focus follows mouse */
|
||||
static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */
|
||||
static const unsigned int borderpx = 2; /* border pixel of windows */
|
||||
|
||||
static const float rootcolor[] = COLOR(RGB_HEX_TO_RGBA(BASE_00));
|
||||
static const float bordercolor[] = COLOR(RGB_HEX_TO_RGBA(BASE_02));
|
||||
static const float focuscolor[] = COLOR(RGB_HEX_TO_RGBA(BASE_0D));
|
||||
static const float urgentcolor[] = COLOR(RGB_HEX_TO_RGBA(BASE_08));
|
||||
|
||||
// gaps patch
|
||||
static const int smartgaps = 0; /* 1 means no outer gap when there is only one window */
|
||||
static int gaps = 1; /* 1 means gaps between windows are added */
|
||||
static const unsigned int gappx = 10; /* gap pixel between windows */
|
||||
|
||||
/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
|
||||
static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */
|
||||
|
||||
enum Direction { DIR_LEFT, DIR_RIGHT, DIR_UP, DIR_DOWN };
|
||||
|
||||
static const float resize_factor = 0.0002f; /* Resize multiplier for mouse resizing, depends on mouse sensivity. */
|
||||
static const uint32_t resize_interval_ms = 16; /* Resize interval depends on framerate and screen refresh rate. */
|
||||
|
||||
/* tagging - TAGCOUNT must be no greater than 31 */
|
||||
#define TAGCOUNT (9)
|
||||
|
||||
/* logging */
|
||||
static int log_level = WLR_ERROR;
|
||||
|
||||
/* NOTE: ALWAYS keep a rule declared even if you don't use rules (e.g leave at least one example) */
|
||||
static const Rule rules[] = {
|
||||
/* app_id title tags mask isfloating monitor */
|
||||
/* examples: */
|
||||
{ "mpv", NULL, 0, 1, 0 },
|
||||
};
|
||||
|
||||
/* layout(s) */
|
||||
static const Layout layouts[] = {
|
||||
/* symbol arrange function */
|
||||
{ "[]=", tile },
|
||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
||||
{ "[M]", monocle },
|
||||
};
|
||||
|
||||
/* monitors */
|
||||
/* (x=-1, y=-1) is reserved as an "autoconfigure" monitor position indicator
|
||||
* WARNING: negative values other than (-1, -1) cause problems with Xwayland clients
|
||||
* https://gitlab.freedesktop.org/xorg/xserver/-/issues/899
|
||||
*/
|
||||
/* NOTE: ALWAYS add a fallback rule, even if you are completely sure it won't be used */
|
||||
static const MonitorRule monrules[] = {
|
||||
/* name mfact nmaster scale layout rotate/reflect x y */
|
||||
/* example of a HiDPI laptop monitor:
|
||||
{ "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
|
||||
*/
|
||||
/* defaults */
|
||||
|
||||
// https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/monitorconfig/monitorconfig.patch
|
||||
{ "DP-2", 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1, 2560, 1440, 180.0f, 0, 1},
|
||||
{ "HDMI-A-2", 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1, 1920, 1080, 60.0f, 0, 1},
|
||||
};
|
||||
|
||||
// https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/autostart/autostart.patch
|
||||
static const char *const autostart[] = {
|
||||
"wlr-randr", "--output", "DP-2", "--mode", "2560x1440@180Hz", NULL,
|
||||
"swww-daemon", NULL,
|
||||
"swww", "img", WALLPAPER, "-t", "none", NULL,
|
||||
"waybar", NULL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
/* keyboard */
|
||||
static const struct xkb_rule_names xkb_rules = {
|
||||
/* can specify fields: rules, model, layout, variant, options */
|
||||
/* example:
|
||||
.options = "ctrl:nocaps",
|
||||
*/
|
||||
.layout = "us",
|
||||
};
|
||||
|
||||
static const int repeat_rate = 25;
|
||||
static const int repeat_delay = 600;
|
||||
|
||||
/* Trackpad */
|
||||
static const int tap_to_click = 1;
|
||||
static const int tap_and_drag = 1;
|
||||
static const int drag_lock = 1;
|
||||
static const int natural_scrolling = 0;
|
||||
static const int disable_while_typing = 1;
|
||||
static const int left_handed = 0;
|
||||
static const int middle_button_emulation = 0;
|
||||
/* You can choose between:
|
||||
LIBINPUT_CONFIG_SCROLL_NO_SCROLL
|
||||
LIBINPUT_CONFIG_SCROLL_2FG
|
||||
LIBINPUT_CONFIG_SCROLL_EDGE
|
||||
LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN
|
||||
*/
|
||||
static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG;
|
||||
|
||||
/* You can choose between:
|
||||
LIBINPUT_CONFIG_CLICK_METHOD_NONE
|
||||
LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS
|
||||
LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER
|
||||
*/
|
||||
static const enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS;
|
||||
|
||||
/* You can choose between:
|
||||
LIBINPUT_CONFIG_SEND_EVENTS_ENABLED
|
||||
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED
|
||||
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE
|
||||
*/
|
||||
static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED;
|
||||
|
||||
/* You can choose between:
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT
|
||||
LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE
|
||||
*/
|
||||
static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT;
|
||||
static const double accel_speed = 1.0;
|
||||
|
||||
/* You can choose between:
|
||||
LIBINPUT_CONFIG_TAP_MAP_LRM -- 1/2/3 finger tap maps to left/right/middle
|
||||
LIBINPUT_CONFIG_TAP_MAP_LMR -- 1/2/3 finger tap maps to left/middle/right
|
||||
*/
|
||||
static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM;
|
||||
|
||||
/* If you want to use the windows key for MODKEY, use WLR_MODIFIER_LOGO */
|
||||
#define MODKEY WLR_MODIFIER_LOGO
|
||||
|
||||
#define TAGKEYS(KEY,SKEY,TAG) \
|
||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
||||
{ MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \
|
||||
{ MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} }
|
||||
|
||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
||||
|
||||
/* commands */
|
||||
static const char *termcmd[] = { "ghostty", NULL };
|
||||
static const char *menucmd[] = { "rofi", "-show", "drun", NULL };
|
||||
static const char *powrcmd[] = { "rofi", "-show", "pm", "-modi", "pm:rofi-power-menu", "--choices", "suspend/reboot/shutdown", NULL };
|
||||
static const char *scshcmd[] = { "gscreenshot", "-c", "-s", NULL };
|
||||
static const char *brsrcmd[] = { "zen-beta", NULL };
|
||||
|
||||
static const Key keys[] = {
|
||||
/* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */
|
||||
/* modifier key function argument */
|
||||
{ MODKEY, XKB_KEY_d, spawn, {.v = menucmd} },
|
||||
{ MODKEY, XKB_KEY_q, spawn, {.v = termcmd} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_P, spawn, {.v = powrcmd} },
|
||||
{ MODKEY, XKB_KEY_s, spawn, {.v = scshcmd} },
|
||||
{ MODKEY, XKB_KEY_w, spawn, {.v = brsrcmd} },
|
||||
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Up, swapclients, {.i = DIR_UP} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Down, swapclients, {.i = DIR_DOWN} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Right, swapclients, {.i = DIR_RIGHT} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Left, swapclients, {.i = DIR_LEFT} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_k, swapclients, {.i = DIR_UP} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_j, swapclients, {.i = DIR_DOWN} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_h, swapclients, {.i = DIR_RIGHT} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_l, swapclients, {.i = DIR_LEFT} },
|
||||
|
||||
{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Left, focusmon, {.i = WLR_DIRECTION_LEFT} },
|
||||
{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_Right, focusmon, {.i = WLR_DIRECTION_RIGHT} },
|
||||
{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_h, focusmon, {.i = WLR_DIRECTION_LEFT} },
|
||||
{ MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_l, focusmon, {.i = WLR_DIRECTION_RIGHT} },
|
||||
|
||||
{ MODKEY, XKB_KEY_Left, focusdir, {.ui = 0} },
|
||||
{ MODKEY, XKB_KEY_Right, focusdir, {.ui = 1} },
|
||||
{ MODKEY, XKB_KEY_Up, focusdir, {.ui = 2} },
|
||||
{ MODKEY, XKB_KEY_Down, focusdir, {.ui = 3} },
|
||||
{ MODKEY, XKB_KEY_h, focusdir, {.ui = 0} },
|
||||
{ MODKEY, XKB_KEY_l, focusdir, {.ui = 1} },
|
||||
{ MODKEY, XKB_KEY_k, focusdir, {.ui = 2} },
|
||||
{ MODKEY, XKB_KEY_j, focusdir, {.ui = 3} },
|
||||
|
||||
{ MODKEY, XKB_KEY_Return, zoom, {0} },
|
||||
{ MODKEY, XKB_KEY_c, killclient, {0} },
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_v, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_f, togglefullscreen, {0} },
|
||||
TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0),
|
||||
TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1),
|
||||
TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2),
|
||||
TAGKEYS( XKB_KEY_4, XKB_KEY_dollar, 3),
|
||||
TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4),
|
||||
TAGKEYS( XKB_KEY_6, XKB_KEY_asciicircum, 5),
|
||||
TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6),
|
||||
TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7),
|
||||
TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8),
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_M, quit, {0} },
|
||||
|
||||
/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */
|
||||
{ WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} },
|
||||
/* Ctrl-Alt-Fx is used to switch to another VT, if you don't know what a VT is
|
||||
* do not remove them.
|
||||
*/
|
||||
#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} }
|
||||
CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6),
|
||||
CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12),
|
||||
};
|
||||
|
||||
static const Button buttons[] = {
|
||||
{ MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} },
|
||||
{ MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} },
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs.gscreenshot
|
||||
pkgs.wlr-randr
|
||||
];
|
||||
programs.dwl = {
|
||||
enable = true;
|
||||
package =
|
||||
(pkgs.dwl.override {
|
||||
configH = pkgs.replaceVars ./config.h {
|
||||
base00 = config.lib.stylix.colors.base00;
|
||||
base01 = config.lib.stylix.colors.base01;
|
||||
base02 = config.lib.stylix.colors.base02;
|
||||
base03 = config.lib.stylix.colors.base03;
|
||||
base04 = config.lib.stylix.colors.base04;
|
||||
base05 = config.lib.stylix.colors.base05;
|
||||
base06 = config.lib.stylix.colors.base06;
|
||||
base07 = config.lib.stylix.colors.base07;
|
||||
base08 = config.lib.stylix.colors.base08;
|
||||
base09 = config.lib.stylix.colors.base09;
|
||||
base0A = config.lib.stylix.colors.base0A;
|
||||
base0B = config.lib.stylix.colors.base0B;
|
||||
base0C = config.lib.stylix.colors.base0C;
|
||||
base0D = config.lib.stylix.colors.base0D;
|
||||
base0E = config.lib.stylix.colors.base0E;
|
||||
base0F = config.lib.stylix.colors.base0F;
|
||||
|
||||
wallpaper = config.stylix.image;
|
||||
};
|
||||
}).overrideAttrs
|
||||
(oldAttrs: {
|
||||
buildInputs = oldAttrs.buildInputs or [ ] ++ [
|
||||
pkgs.libdrm
|
||||
pkgs.fcft
|
||||
];
|
||||
patches = oldAttrs.patches or [ ] ++ [
|
||||
./patches/autostart-0.7.patch
|
||||
./patches/btrtile-v0.7-gaps.patch
|
||||
./patches/focusdir.patch
|
||||
./patches/gaps.patch
|
||||
./patches/ipc.patch
|
||||
./patches/monitorconfig.patch
|
||||
];
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
From 787f7252d63945996f009828aff3c44afd0f7781 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?=
|
||||
<leohdz172@proton.me>
|
||||
Date: Sat, 8 Jul 2023 17:11:36 -0600
|
||||
Subject: [PATCH] port autostart patch from dwm
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
https://dwm.suckless.org/patches/cool_autostart/
|
||||
Signed-off-by: Leonardo Hernández Hernández <leohdz172@proton.me>
|
||||
---
|
||||
config.def.h | 7 +++++++
|
||||
dwl.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++-----
|
||||
2 files changed, 61 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 22d2171..8dc6502 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -20,6 +20,13 @@ static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You ca
|
||||
/* logging */
|
||||
static int log_level = WLR_ERROR;
|
||||
|
||||
+/* Autostart */
|
||||
+static const char *const autostart[] = {
|
||||
+ "wbg", "/path/to/your/image", NULL,
|
||||
+ NULL /* terminate */
|
||||
+};
|
||||
+
|
||||
+
|
||||
/* NOTE: ALWAYS keep a rule declared even if you don't use rules (e.g leave at least one example) */
|
||||
static const Rule rules[] = {
|
||||
/* app_id title tags mask isfloating monitor */
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index 5bf995e..e8b8727 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -249,6 +249,7 @@ static void arrange(Monitor *m);
|
||||
static void arrangelayer(Monitor *m, struct wl_list *list,
|
||||
struct wlr_box *usable_area, int exclusive);
|
||||
static void arrangelayers(Monitor *m);
|
||||
+static void autostartexec(void);
|
||||
static void axisnotify(struct wl_listener *listener, void *data);
|
||||
static void buttonpress(struct wl_listener *listener, void *data);
|
||||
static void chvt(const Arg *arg);
|
||||
@@ -432,6 +433,9 @@ static xcb_atom_t netatom[NetLast];
|
||||
/* attempt to encapsulate suck into one file */
|
||||
#include "client.h"
|
||||
|
||||
+static pid_t *autostart_pids;
|
||||
+static size_t autostart_len;
|
||||
+
|
||||
/* function implementations */
|
||||
void
|
||||
applybounds(Client *c, struct wlr_box *bbox)
|
||||
@@ -580,6 +584,27 @@ arrangelayers(Monitor *m)
|
||||
}
|
||||
}
|
||||
|
||||
+void
|
||||
+autostartexec(void) {
|
||||
+ const char *const *p;
|
||||
+ size_t i = 0;
|
||||
+
|
||||
+ /* count entries */
|
||||
+ for (p = autostart; *p; autostart_len++, p++)
|
||||
+ while (*++p);
|
||||
+
|
||||
+ autostart_pids = calloc(autostart_len, sizeof(pid_t));
|
||||
+ for (p = autostart; *p; i++, p++) {
|
||||
+ if ((autostart_pids[i] = fork()) == 0) {
|
||||
+ setsid();
|
||||
+ execvp(*p, (char *const *)p);
|
||||
+ die("dwl: execvp %s:", *p);
|
||||
+ }
|
||||
+ /* skip arguments */
|
||||
+ while (*++p);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void
|
||||
axisnotify(struct wl_listener *listener, void *data)
|
||||
{
|
||||
@@ -676,11 +701,21 @@ checkidleinhibitor(struct wlr_surface *exclude)
|
||||
void
|
||||
cleanup(void)
|
||||
{
|
||||
+ size_t i;
|
||||
#ifdef XWAYLAND
|
||||
wlr_xwayland_destroy(xwayland);
|
||||
xwayland = NULL;
|
||||
#endif
|
||||
wl_display_destroy_clients(dpy);
|
||||
+
|
||||
+ /* kill child processes */
|
||||
+ for (i = 0; i < autostart_len; i++) {
|
||||
+ if (0 < autostart_pids[i]) {
|
||||
+ kill(autostart_pids[i], SIGTERM);
|
||||
+ waitpid(autostart_pids[i], NULL, 0);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (child_pid > 0) {
|
||||
kill(-child_pid, SIGTERM);
|
||||
waitpid(child_pid, NULL, 0);
|
||||
@@ -1497,18 +1532,31 @@ void
|
||||
handlesig(int signo)
|
||||
{
|
||||
if (signo == SIGCHLD) {
|
||||
-#ifdef XWAYLAND
|
||||
siginfo_t in;
|
||||
/* wlroots expects to reap the XWayland process itself, so we
|
||||
* use WNOWAIT to keep the child waitable until we know it's not
|
||||
* XWayland.
|
||||
*/
|
||||
while (!waitid(P_ALL, 0, &in, WEXITED|WNOHANG|WNOWAIT) && in.si_pid
|
||||
- && (!xwayland || in.si_pid != xwayland->server->pid))
|
||||
- waitpid(in.si_pid, NULL, 0);
|
||||
-#else
|
||||
- while (waitpid(-1, NULL, WNOHANG) > 0);
|
||||
+#ifdef XWAYLAND
|
||||
+ && (!xwayland || in.si_pid != xwayland->server->pid)
|
||||
#endif
|
||||
+ ) {
|
||||
+ pid_t *p, *lim;
|
||||
+ waitpid(in.si_pid, NULL, 0);
|
||||
+ if (in.si_pid == child_pid)
|
||||
+ child_pid = -1;
|
||||
+ if (!(p = autostart_pids))
|
||||
+ continue;
|
||||
+ lim = &p[autostart_len];
|
||||
+
|
||||
+ for (; p < lim; p++) {
|
||||
+ if (*p == in.si_pid) {
|
||||
+ *p = -1;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
} else if (signo == SIGINT || signo == SIGTERM) {
|
||||
quit(NULL);
|
||||
}
|
||||
@@ -2224,6 +2272,7 @@ run(char *startup_cmd)
|
||||
die("startup: backend_start");
|
||||
|
||||
/* Now that the socket exists and the backend is started, run the startup command */
|
||||
+ autostartexec();
|
||||
if (startup_cmd) {
|
||||
int piperw[2];
|
||||
if (pipe(piperw) < 0)
|
||||
--
|
||||
2.45.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,90 @@
|
||||
From a0e71a687b7fcaebdaf1da80c09bf5563bff46b1 Mon Sep 17 00:00:00 2001
|
||||
From: ldev <ldev@ldev.eu.org>
|
||||
Date: Mon, 12 Feb 2024 21:50:24 +0100
|
||||
Subject: [PATCH] focusdir
|
||||
|
||||
---
|
||||
config.def.h | 4 ++++
|
||||
dwl.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 49 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 9009517..2a1a82e 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -124,6 +124,10 @@ static const Key keys[] = {
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} },
|
||||
{ MODKEY, XKB_KEY_j, focusstack, {.i = +1} },
|
||||
{ MODKEY, XKB_KEY_k, focusstack, {.i = -1} },
|
||||
+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_h, focusdir, {.ui = 0} },
|
||||
+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_l, focusdir, {.ui = 1} },
|
||||
+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_k, focusdir, {.ui = 2} },
|
||||
+ { MODKEY|WLR_MODIFIER_CTRL, XKB_KEY_j, focusdir, {.ui = 3} },
|
||||
{ MODKEY, XKB_KEY_i, incnmaster, {.i = +1} },
|
||||
{ MODKEY, XKB_KEY_d, incnmaster, {.i = -1} },
|
||||
{ MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index bf02a6d..64d5de7 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -268,6 +269,7 @@ static Monitor *dirtomon(enum wlr_direction dir);
|
||||
static void focusclient(Client *c, int lift);
|
||||
static void focusmon(const Arg *arg);
|
||||
static void focusstack(const Arg *arg);
|
||||
+static void focusdir(const Arg *arg);
|
||||
static Client *focustop(Monitor *m);
|
||||
static void fullscreennotify(struct wl_listener *listener, void *data);
|
||||
static void handlesig(int signo);
|
||||
@@ -1271,6 +1273,49 @@ focusstack(const Arg *arg)
|
||||
focusclient(c, 1);
|
||||
}
|
||||
|
||||
+void focusdir(const Arg *arg)
|
||||
+{
|
||||
+ /* Focus the left, right, up, down client relative to the current focused client on selmon */
|
||||
+ Client *c, *sel = focustop(selmon);
|
||||
+ if (!sel || sel->isfullscreen)
|
||||
+ return;
|
||||
+
|
||||
+ int dist=INT_MAX;
|
||||
+ Client *newsel = NULL;
|
||||
+ int newdist=INT_MAX;
|
||||
+ wl_list_for_each(c, &clients, link) {
|
||||
+ if (!VISIBLEON(c, selmon))
|
||||
+ continue; /* skip non visible windows */
|
||||
+
|
||||
+ if (arg->ui == 0 && sel->geom.x <= c->geom.x) {
|
||||
+ /* Client isn't on our left */
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (arg->ui == 1 && sel->geom.x >= c->geom.x) {
|
||||
+ /* Client isn't on our right */
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (arg->ui == 2 && sel->geom.y <= c->geom.y) {
|
||||
+ /* Client isn't above us */
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (arg->ui == 3 && sel->geom.y >= c->geom.y) {
|
||||
+ /* Client isn't below us */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ dist=abs(sel->geom.x-c->geom.x)+abs(sel->geom.y-c->geom.y);
|
||||
+ if (dist < newdist){
|
||||
+ newdist = dist;
|
||||
+ newsel=c;
|
||||
+ }
|
||||
+ }
|
||||
+ if (newsel != NULL){
|
||||
+ focusclient(newsel, 1);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* We probably should change the name of this, it sounds like
|
||||
* will focus the topmost client of this mon, when actually will
|
||||
* only return that client */
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
From 50e3dd4746b6cb719efb9f8213b94ac52a5320d9 Mon Sep 17 00:00:00 2001
|
||||
From: peesock <kcormn@gmail.com>
|
||||
Date: Mon, 24 Jun 2024 20:06:42 -0700
|
||||
Subject: [PATCH] gaps!
|
||||
|
||||
Co-authored-by: sewn <sewn@disroot.org>
|
||||
Co-authored-by: serenevoid <ajuph9224@gmail.com>
|
||||
---
|
||||
config.def.h | 4 ++++
|
||||
dwl.c | 34 ++++++++++++++++++++++++++--------
|
||||
2 files changed, 30 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 22d2171..b388b4e 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -6,6 +6,9 @@
|
||||
/* appearance */
|
||||
static const int sloppyfocus = 1; /* focus follows mouse */
|
||||
static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */
|
||||
+static const int smartgaps = 0; /* 1 means no outer gap when there is only one window */
|
||||
+static int gaps = 1; /* 1 means gaps between windows are added */
|
||||
+static const unsigned int gappx = 10; /* gap pixel between windows */
|
||||
static const unsigned int borderpx = 1; /* border pixel of windows */
|
||||
static const float rootcolor[] = COLOR(0x222222ff);
|
||||
static const float bordercolor[] = COLOR(0x444444ff);
|
||||
@@ -135,6 +138,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} },
|
||||
{ MODKEY, XKB_KEY_Return, zoom, {0} },
|
||||
{ MODKEY, XKB_KEY_Tab, view, {0} },
|
||||
+ { MODKEY, XKB_KEY_g, togglegaps, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_C, killclient, {0} },
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index dc0437e..dc851df 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -199,6 +199,7 @@ struct Monitor {
|
||||
struct wlr_box w; /* window area, layout-relative */
|
||||
struct wl_list layers[4]; /* LayerSurface.link */
|
||||
const Layout *lt[2];
|
||||
+ int gaps;
|
||||
unsigned int seltags;
|
||||
unsigned int sellt;
|
||||
uint32_t tagset[2];
|
||||
@@ -336,6 +337,7 @@ static void tagmon(const Arg *arg);
|
||||
static void tile(Monitor *m);
|
||||
static void togglefloating(const Arg *arg);
|
||||
static void togglefullscreen(const Arg *arg);
|
||||
+static void togglegaps(const Arg *arg);
|
||||
static void toggletag(const Arg *arg);
|
||||
static void toggleview(const Arg *arg);
|
||||
static void unlocksession(struct wl_listener *listener, void *data);
|
||||
@@ -949,6 +951,8 @@ createmon(struct wl_listener *listener, void *data)
|
||||
|
||||
wlr_output_state_init(&state);
|
||||
/* Initialize monitor state using configured rules */
|
||||
+ m->gaps = gaps;
|
||||
+
|
||||
m->tagset[0] = m->tagset[1] = 1;
|
||||
for (r = monrules; r < END(monrules); r++) {
|
||||
if (!r->name || strstr(wlr_output->name, r->name)) {
|
||||
@@ -2638,7 +2642,7 @@ tagmon(const Arg *arg)
|
||||
void
|
||||
tile(Monitor *m)
|
||||
{
|
||||
- unsigned int mw, my, ty;
|
||||
+ unsigned int h, r, e = m->gaps, mw, my, ty;
|
||||
int i, n = 0;
|
||||
Client *c;
|
||||
|
||||
@@ -2647,23 +2651,30 @@ tile(Monitor *m)
|
||||
n++;
|
||||
if (n == 0)
|
||||
return;
|
||||
+ if (smartgaps == n)
|
||||
+ e = 0;
|
||||
|
||||
if (n > m->nmaster)
|
||||
- mw = m->nmaster ? (int)roundf(m->w.width * m->mfact) : 0;
|
||||
+ mw = m->nmaster ? (int)roundf((m->w.width + gappx*e) * m->mfact) : 0;
|
||||
else
|
||||
mw = m->w.width;
|
||||
- i = my = ty = 0;
|
||||
+ i = 0;
|
||||
+ my = ty = gappx*e;
|
||||
wl_list_for_each(c, &clients, link) {
|
||||
if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen)
|
||||
continue;
|
||||
if (i < m->nmaster) {
|
||||
- resize(c, (struct wlr_box){.x = m->w.x, .y = m->w.y + my, .width = mw,
|
||||
- .height = (m->w.height - my) / (MIN(n, m->nmaster) - i)}, 0);
|
||||
- my += c->geom.height;
|
||||
+ r = MIN(n, m->nmaster) - i;
|
||||
+ h = (m->w.height - my - gappx*e - gappx*e * (r - 1)) / r;
|
||||
+ resize(c, (struct wlr_box){.x = m->w.x + gappx*e, .y = m->w.y + my,
|
||||
+ .width = mw - 2*gappx*e, .height = h}, 0);
|
||||
+ my += c->geom.height + gappx*e;
|
||||
} else {
|
||||
+ r = n - i;
|
||||
+ h = (m->w.height - ty - gappx*e - gappx*e * (r - 1)) / r;
|
||||
resize(c, (struct wlr_box){.x = m->w.x + mw, .y = m->w.y + ty,
|
||||
- .width = m->w.width - mw, .height = (m->w.height - ty) / (n - i)}, 0);
|
||||
- ty += c->geom.height;
|
||||
+ .width = m->w.width - mw - gappx*e, .height = h}, 0);
|
||||
+ ty += c->geom.height + gappx*e;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
@@ -2686,6 +2697,13 @@ togglefullscreen(const Arg *arg)
|
||||
setfullscreen(sel, !sel->isfullscreen);
|
||||
}
|
||||
|
||||
+void
|
||||
+togglegaps(const Arg *arg)
|
||||
+{
|
||||
+ selmon->gaps = !selmon->gaps;
|
||||
+ arrange(selmon);
|
||||
+}
|
||||
+
|
||||
void
|
||||
toggletag(const Arg *arg)
|
||||
{
|
||||
--
|
||||
2.45.2
|
||||
|
||||
@@ -0,0 +1,601 @@
|
||||
From 6c6d655b68770ce82a24fde9b58c4d97b672553a Mon Sep 17 00:00:00 2001
|
||||
From: choc <notchoc@proton.me>
|
||||
Date: Mon, 23 Oct 2023 10:35:17 +0800
|
||||
Subject: [PATCH] implement dwl-ipc-unstable-v2
|
||||
https://codeberg.org/dwl/dwl-patches/wiki/ipc
|
||||
|
||||
---
|
||||
Makefile | 14 +-
|
||||
config.def.h | 1 +
|
||||
dwl.c | 261 ++++++++++++++++++++++++++----
|
||||
protocols/dwl-ipc-unstable-v2.xml | 181 +++++++++++++++++++++
|
||||
4 files changed, 419 insertions(+), 38 deletions(-)
|
||||
create mode 100644 protocols/dwl-ipc-unstable-v2.xml
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 3358bae..28ed034 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -17,12 +17,14 @@ DWLCFLAGS = `$(PKG_CONFIG) --cflags $(PKGS)` $(DWLCPPFLAGS) $(DWLDEVCFLAGS) $(CF
|
||||
LDLIBS = `$(PKG_CONFIG) --libs $(PKGS)` -lm $(LIBS)
|
||||
|
||||
all: dwl
|
||||
-dwl: dwl.o util.o
|
||||
- $(CC) dwl.o util.o $(DWLCFLAGS) $(LDFLAGS) $(LDLIBS) -o $@
|
||||
+dwl: dwl.o util.o dwl-ipc-unstable-v2-protocol.o
|
||||
+ $(CC) dwl.o util.o dwl-ipc-unstable-v2-protocol.o $(DWLCFLAGS) $(LDFLAGS) $(LDLIBS) -o $@
|
||||
dwl.o: dwl.c client.h config.h config.mk cursor-shape-v1-protocol.h \
|
||||
pointer-constraints-unstable-v1-protocol.h wlr-layer-shell-unstable-v1-protocol.h \
|
||||
- wlr-output-power-management-unstable-v1-protocol.h xdg-shell-protocol.h
|
||||
+ wlr-output-power-management-unstable-v1-protocol.h xdg-shell-protocol.h \
|
||||
+ dwl-ipc-unstable-v2-protocol.h
|
||||
util.o: util.c util.h
|
||||
+dwl-ipc-unstable-v2-protocol.o: dwl-ipc-unstable-v2-protocol.c dwl-ipc-unstable-v2-protocol.h
|
||||
|
||||
# wayland-scanner is a tool which generates C headers and rigging for Wayland
|
||||
# protocols, which are specified in XML. wlroots requires you to rig these up
|
||||
@@ -45,6 +47,12 @@ wlr-output-power-management-unstable-v1-protocol.h:
|
||||
xdg-shell-protocol.h:
|
||||
$(WAYLAND_SCANNER) server-header \
|
||||
$(WAYLAND_PROTOCOLS)/stable/xdg-shell/xdg-shell.xml $@
|
||||
+dwl-ipc-unstable-v2-protocol.h:
|
||||
+ $(WAYLAND_SCANNER) server-header \
|
||||
+ protocols/dwl-ipc-unstable-v2.xml $@
|
||||
+dwl-ipc-unstable-v2-protocol.c:
|
||||
+ $(WAYLAND_SCANNER) private-code \
|
||||
+ protocols/dwl-ipc-unstable-v2.xml $@
|
||||
|
||||
config.h:
|
||||
cp config.def.h $@
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 22d2171..1593033 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -127,6 +127,7 @@ static const Key keys[] = {
|
||||
/* modifier key function argument */
|
||||
{ MODKEY, XKB_KEY_p, spawn, {.v = menucmd} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} },
|
||||
+ { MODKEY, XKB_KEY_b, togglebar, {0} },
|
||||
{ MODKEY, XKB_KEY_j, focusstack, {.i = +1} },
|
||||
{ MODKEY, XKB_KEY_k, focusstack, {.i = -1} },
|
||||
{ MODKEY, XKB_KEY_i, incnmaster, {.i = +1} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index a2711f6..d9b8bae 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -67,6 +67,7 @@
|
||||
#include <xcb/xcb_icccm.h>
|
||||
#endif
|
||||
|
||||
+#include "dwl-ipc-unstable-v2-protocol.h"
|
||||
#include "util.h"
|
||||
|
||||
/* macros */
|
||||
@@ -143,6 +144,12 @@ typedef struct {
|
||||
uint32_t resize; /* configure serial of a pending resize */
|
||||
} Client;
|
||||
|
||||
+typedef struct {
|
||||
+ struct wl_list link;
|
||||
+ struct wl_resource *resource;
|
||||
+ Monitor *mon;
|
||||
+} DwlIpcOutput;
|
||||
+
|
||||
typedef struct {
|
||||
uint32_t mod;
|
||||
xkb_keysym_t keysym;
|
||||
@@ -188,6 +195,7 @@ typedef struct {
|
||||
|
||||
struct Monitor {
|
||||
struct wl_list link;
|
||||
+ struct wl_list dwl_ipc_outputs;
|
||||
struct wlr_output *wlr_output;
|
||||
struct wlr_scene_output *scene_output;
|
||||
struct wlr_scene_rect *fullscreen_bg; /* See createmon() for info */
|
||||
@@ -285,6 +293,17 @@ static void destroysessionlock(struct wl_listener *listener, void *data);
|
||||
static void destroysessionmgr(struct wl_listener *listener, void *data);
|
||||
static void destroykeyboardgroup(struct wl_listener *listener, void *data);
|
||||
static Monitor *dirtomon(enum wlr_direction dir);
|
||||
+static void dwl_ipc_manager_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id);
|
||||
+static void dwl_ipc_manager_destroy(struct wl_resource *resource);
|
||||
+static void dwl_ipc_manager_get_output(struct wl_client *client, struct wl_resource *resource, uint32_t id, struct wl_resource *output);
|
||||
+static void dwl_ipc_manager_release(struct wl_client *client, struct wl_resource *resource);
|
||||
+static void dwl_ipc_output_destroy(struct wl_resource *resource);
|
||||
+static void dwl_ipc_output_printstatus(Monitor *monitor);
|
||||
+static void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output);
|
||||
+static void dwl_ipc_output_set_client_tags(struct wl_client *client, struct wl_resource *resource, uint32_t and_tags, uint32_t xor_tags);
|
||||
+static void dwl_ipc_output_set_layout(struct wl_client *client, struct wl_resource *resource, uint32_t index);
|
||||
+static void dwl_ipc_output_set_tags(struct wl_client *client, struct wl_resource *resource, uint32_t tagmask, uint32_t toggle_tagset);
|
||||
+static void dwl_ipc_output_release(struct wl_client *client, struct wl_resource *resource);
|
||||
static void focusclient(Client *c, int lift);
|
||||
static void focusmon(const Arg *arg);
|
||||
static void focusstack(const Arg *arg);
|
||||
@@ -338,6 +357,7 @@ static void startdrag(struct wl_listener *listener, void *data);
|
||||
static void tag(const Arg *arg);
|
||||
static void tagmon(const Arg *arg);
|
||||
static void tile(Monitor *m);
|
||||
+static void togglebar(const Arg *arg);
|
||||
static void togglefloating(const Arg *arg);
|
||||
static void togglefullscreen(const Arg *arg);
|
||||
static void toggletag(const Arg *arg);
|
||||
@@ -413,6 +433,9 @@ static struct wlr_box sgeom;
|
||||
static struct wl_list mons;
|
||||
static Monitor *selmon;
|
||||
|
||||
+static struct zdwl_ipc_manager_v2_interface dwl_manager_implementation = {.release = dwl_ipc_manager_release, .get_output = dwl_ipc_manager_get_output};
|
||||
+static struct zdwl_ipc_output_v2_interface dwl_output_implementation = {.release = dwl_ipc_output_release, .set_tags = dwl_ipc_output_set_tags, .set_layout = dwl_ipc_output_set_layout, .set_client_tags = dwl_ipc_output_set_client_tags};
|
||||
+
|
||||
#ifdef XWAYLAND
|
||||
static void activatex11(struct wl_listener *listener, void *data);
|
||||
static void associatex11(struct wl_listener *listener, void *data);
|
||||
@@ -706,6 +729,10 @@ cleanupmon(struct wl_listener *listener, void *data)
|
||||
LayerSurface *l, *tmp;
|
||||
size_t i;
|
||||
|
||||
+ DwlIpcOutput *ipc_output, *ipc_output_tmp;
|
||||
+ wl_list_for_each_safe(ipc_output, ipc_output_tmp, &m->dwl_ipc_outputs, link)
|
||||
+ wl_resource_destroy(ipc_output->resource);
|
||||
+
|
||||
/* m->layers[i] are intentionally not unlinked */
|
||||
for (i = 0; i < LENGTH(m->layers); i++) {
|
||||
wl_list_for_each_safe(l, tmp, &m->layers[i], link)
|
||||
@@ -986,6 +1013,8 @@ createmon(struct wl_listener *listener, void *data)
|
||||
m = wlr_output->data = ecalloc(1, sizeof(*m));
|
||||
m->wlr_output = wlr_output;
|
||||
|
||||
+ wl_list_init(&m->dwl_ipc_outputs);
|
||||
+
|
||||
for (i = 0; i < LENGTH(m->layers); i++)
|
||||
wl_list_init(&m->layers[i]);
|
||||
|
||||
@@ -1336,6 +1365,192 @@ dirtomon(enum wlr_direction dir)
|
||||
return selmon;
|
||||
}
|
||||
|
||||
+void
|
||||
+dwl_ipc_manager_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
|
||||
+{
|
||||
+ struct wl_resource *manager_resource = wl_resource_create(client, &zdwl_ipc_manager_v2_interface, version, id);
|
||||
+ if (!manager_resource) {
|
||||
+ wl_client_post_no_memory(client);
|
||||
+ return;
|
||||
+ }
|
||||
+ wl_resource_set_implementation(manager_resource, &dwl_manager_implementation, NULL, dwl_ipc_manager_destroy);
|
||||
+
|
||||
+ zdwl_ipc_manager_v2_send_tags(manager_resource, TAGCOUNT);
|
||||
+
|
||||
+ for (unsigned int i = 0; i < LENGTH(layouts); i++)
|
||||
+ zdwl_ipc_manager_v2_send_layout(manager_resource, layouts[i].symbol);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_manager_destroy(struct wl_resource *resource)
|
||||
+{
|
||||
+ /* No state to destroy */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_manager_get_output(struct wl_client *client, struct wl_resource *resource, uint32_t id, struct wl_resource *output)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ Monitor *monitor = wlr_output_from_resource(output)->data;
|
||||
+ struct wl_resource *output_resource = wl_resource_create(client, &zdwl_ipc_output_v2_interface, wl_resource_get_version(resource), id);
|
||||
+ if (!output_resource)
|
||||
+ return;
|
||||
+
|
||||
+ ipc_output = ecalloc(1, sizeof(*ipc_output));
|
||||
+ ipc_output->resource = output_resource;
|
||||
+ ipc_output->mon = monitor;
|
||||
+ wl_resource_set_implementation(output_resource, &dwl_output_implementation, ipc_output, dwl_ipc_output_destroy);
|
||||
+ wl_list_insert(&monitor->dwl_ipc_outputs, &ipc_output->link);
|
||||
+ dwl_ipc_output_printstatus_to(ipc_output);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_manager_release(struct wl_client *client, struct wl_resource *resource)
|
||||
+{
|
||||
+ wl_resource_destroy(resource);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+dwl_ipc_output_destroy(struct wl_resource *resource)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output = wl_resource_get_user_data(resource);
|
||||
+ wl_list_remove(&ipc_output->link);
|
||||
+ free(ipc_output);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_printstatus(Monitor *monitor)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ wl_list_for_each(ipc_output, &monitor->dwl_ipc_outputs, link)
|
||||
+ dwl_ipc_output_printstatus_to(ipc_output);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output)
|
||||
+{
|
||||
+ Monitor *monitor = ipc_output->mon;
|
||||
+ Client *c, *focused;
|
||||
+ int tagmask, state, numclients, focused_client, tag;
|
||||
+ const char *title, *appid;
|
||||
+ focused = focustop(monitor);
|
||||
+ zdwl_ipc_output_v2_send_active(ipc_output->resource, monitor == selmon);
|
||||
+
|
||||
+ for (tag = 0 ; tag < TAGCOUNT; tag++) {
|
||||
+ numclients = state = focused_client = 0;
|
||||
+ tagmask = 1 << tag;
|
||||
+ if ((tagmask & monitor->tagset[monitor->seltags]) != 0)
|
||||
+ state |= ZDWL_IPC_OUTPUT_V2_TAG_STATE_ACTIVE;
|
||||
+
|
||||
+ wl_list_for_each(c, &clients, link) {
|
||||
+ if (c->mon != monitor)
|
||||
+ continue;
|
||||
+ if (!(c->tags & tagmask))
|
||||
+ continue;
|
||||
+ if (c == focused)
|
||||
+ focused_client = 1;
|
||||
+ if (c->isurgent)
|
||||
+ state |= ZDWL_IPC_OUTPUT_V2_TAG_STATE_URGENT;
|
||||
+
|
||||
+ numclients++;
|
||||
+ }
|
||||
+ zdwl_ipc_output_v2_send_tag(ipc_output->resource, tag, state, numclients, focused_client);
|
||||
+ }
|
||||
+ title = focused ? client_get_title(focused) : "";
|
||||
+ appid = focused ? client_get_appid(focused) : "";
|
||||
+
|
||||
+ zdwl_ipc_output_v2_send_layout(ipc_output->resource, monitor->lt[monitor->sellt] - layouts);
|
||||
+ zdwl_ipc_output_v2_send_title(ipc_output->resource, title);
|
||||
+ zdwl_ipc_output_v2_send_appid(ipc_output->resource, appid);
|
||||
+ zdwl_ipc_output_v2_send_layout_symbol(ipc_output->resource, monitor->ltsymbol);
|
||||
+ if (wl_resource_get_version(ipc_output->resource) >= ZDWL_IPC_OUTPUT_V2_FULLSCREEN_SINCE_VERSION) {
|
||||
+ zdwl_ipc_output_v2_send_fullscreen(ipc_output->resource, focused ? focused->isfullscreen : 0);
|
||||
+ }
|
||||
+ if (wl_resource_get_version(ipc_output->resource) >= ZDWL_IPC_OUTPUT_V2_FLOATING_SINCE_VERSION) {
|
||||
+ zdwl_ipc_output_v2_send_floating(ipc_output->resource, focused ? focused->isfloating : 0);
|
||||
+ }
|
||||
+ zdwl_ipc_output_v2_send_frame(ipc_output->resource);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_set_client_tags(struct wl_client *client, struct wl_resource *resource, uint32_t and_tags, uint32_t xor_tags)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ Monitor *monitor;
|
||||
+ Client *selected_client;
|
||||
+ unsigned int newtags = 0;
|
||||
+
|
||||
+ ipc_output = wl_resource_get_user_data(resource);
|
||||
+ if (!ipc_output)
|
||||
+ return;
|
||||
+
|
||||
+ monitor = ipc_output->mon;
|
||||
+ selected_client = focustop(monitor);
|
||||
+ if (!selected_client)
|
||||
+ return;
|
||||
+
|
||||
+ newtags = (selected_client->tags & and_tags) ^ xor_tags;
|
||||
+ if (!newtags)
|
||||
+ return;
|
||||
+
|
||||
+ selected_client->tags = newtags;
|
||||
+ if (selmon == monitor)
|
||||
+ focusclient(focustop(monitor), 1);
|
||||
+ arrange(selmon);
|
||||
+ printstatus();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_set_layout(struct wl_client *client, struct wl_resource *resource, uint32_t index)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ Monitor *monitor;
|
||||
+
|
||||
+ ipc_output = wl_resource_get_user_data(resource);
|
||||
+ if (!ipc_output)
|
||||
+ return;
|
||||
+
|
||||
+ monitor = ipc_output->mon;
|
||||
+ if (index >= LENGTH(layouts))
|
||||
+ return;
|
||||
+ if (index != monitor->lt[monitor->sellt] - layouts)
|
||||
+ monitor->sellt ^= 1;
|
||||
+
|
||||
+ monitor->lt[monitor->sellt] = &layouts[index];
|
||||
+ arrange(monitor);
|
||||
+ printstatus();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_set_tags(struct wl_client *client, struct wl_resource *resource, uint32_t tagmask, uint32_t toggle_tagset)
|
||||
+{
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ Monitor *monitor;
|
||||
+ unsigned int newtags = tagmask & TAGMASK;
|
||||
+
|
||||
+ ipc_output = wl_resource_get_user_data(resource);
|
||||
+ if (!ipc_output)
|
||||
+ return;
|
||||
+ monitor = ipc_output->mon;
|
||||
+
|
||||
+ if (!newtags || newtags == monitor->tagset[monitor->seltags])
|
||||
+ return;
|
||||
+ if (toggle_tagset)
|
||||
+ monitor->seltags ^= 1;
|
||||
+
|
||||
+ monitor->tagset[monitor->seltags] = newtags;
|
||||
+ if (selmon == monitor)
|
||||
+ focusclient(focustop(monitor), 1);
|
||||
+ arrange(monitor);
|
||||
+ printstatus();
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+dwl_ipc_output_release(struct wl_client *client, struct wl_resource *resource)
|
||||
+{
|
||||
+ wl_resource_destroy(resource);
|
||||
+}
|
||||
+
|
||||
void
|
||||
focusclient(Client *c, int lift)
|
||||
{
|
||||
@@ -2036,41 +2251,8 @@ void
|
||||
printstatus(void)
|
||||
{
|
||||
Monitor *m = NULL;
|
||||
- Client *c;
|
||||
- uint32_t occ, urg, sel;
|
||||
- const char *appid, *title;
|
||||
-
|
||||
- wl_list_for_each(m, &mons, link) {
|
||||
- occ = urg = 0;
|
||||
- wl_list_for_each(c, &clients, link) {
|
||||
- if (c->mon != m)
|
||||
- continue;
|
||||
- occ |= c->tags;
|
||||
- if (c->isurgent)
|
||||
- urg |= c->tags;
|
||||
- }
|
||||
- if ((c = focustop(m))) {
|
||||
- title = client_get_title(c);
|
||||
- appid = client_get_appid(c);
|
||||
- printf("%s title %s\n", m->wlr_output->name, title ? title : broken);
|
||||
- printf("%s appid %s\n", m->wlr_output->name, appid ? appid : broken);
|
||||
- printf("%s fullscreen %d\n", m->wlr_output->name, c->isfullscreen);
|
||||
- printf("%s floating %d\n", m->wlr_output->name, c->isfloating);
|
||||
- sel = c->tags;
|
||||
- } else {
|
||||
- printf("%s title \n", m->wlr_output->name);
|
||||
- printf("%s appid \n", m->wlr_output->name);
|
||||
- printf("%s fullscreen \n", m->wlr_output->name);
|
||||
- printf("%s floating \n", m->wlr_output->name);
|
||||
- sel = 0;
|
||||
- }
|
||||
-
|
||||
- printf("%s selmon %u\n", m->wlr_output->name, m == selmon);
|
||||
- printf("%s tags %"PRIu32" %"PRIu32" %"PRIu32" %"PRIu32"\n",
|
||||
- m->wlr_output->name, occ, m->tagset[m->seltags], sel, urg);
|
||||
- printf("%s layout %s\n", m->wlr_output->name, m->ltsymbol);
|
||||
- }
|
||||
- fflush(stdout);
|
||||
+ wl_list_for_each(m, &mons, link)
|
||||
+ dwl_ipc_output_printstatus(m);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2625,6 +2807,8 @@ setup(void)
|
||||
LISTEN_STATIC(&output_mgr->events.apply, outputmgrapply);
|
||||
LISTEN_STATIC(&output_mgr->events.test, outputmgrtest);
|
||||
|
||||
+ wl_global_create(dpy, &zdwl_ipc_manager_v2_interface, 2, NULL, dwl_ipc_manager_bind);
|
||||
+
|
||||
/* Make sure XWayland clients don't connect to the parent X server,
|
||||
* e.g when running in the x11 backend or the wayland backend and the
|
||||
* compositor has Xwayland support */
|
||||
@@ -2722,6 +2906,13 @@ tile(Monitor *m)
|
||||
}
|
||||
}
|
||||
|
||||
+void
|
||||
+togglebar(const Arg *arg) {
|
||||
+ DwlIpcOutput *ipc_output;
|
||||
+ wl_list_for_each(ipc_output, &selmon->dwl_ipc_outputs, link)
|
||||
+ zdwl_ipc_output_v2_send_toggle_visibility(ipc_output->resource);
|
||||
+}
|
||||
+
|
||||
void
|
||||
togglefloating(const Arg *arg)
|
||||
{
|
||||
diff --git a/protocols/dwl-ipc-unstable-v2.xml b/protocols/dwl-ipc-unstable-v2.xml
|
||||
new file mode 100644
|
||||
index 0000000..0a6e7e5
|
||||
--- /dev/null
|
||||
+++ b/protocols/dwl-ipc-unstable-v2.xml
|
||||
@@ -0,0 +1,181 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!--
|
||||
+This is largely ripped from somebar's ipc patchset; just with some personal modifications.
|
||||
+I would probably just submit raphi's patchset but I don't think that would be polite.
|
||||
+-->
|
||||
+<protocol name="dwl_ipc_unstable_v2">
|
||||
+ <description summary="inter-proccess-communication about dwl's state">
|
||||
+ This protocol allows clients to update and get updates from dwl.
|
||||
+
|
||||
+ Warning! The protocol described in this file is experimental and
|
||||
+ backward incompatible changes may be made. Backward compatible
|
||||
+ changes may be added together with the corresponding interface
|
||||
+ version bump.
|
||||
+ Backward incompatible changes are done by bumping the version
|
||||
+ number in the protocol and interface names and resetting the
|
||||
+ interface version. Once the protocol is to be declared stable,
|
||||
+ the 'z' prefix and the version number in the protocol and
|
||||
+ interface names are removed and the interface version number is
|
||||
+ reset.
|
||||
+ </description>
|
||||
+
|
||||
+ <interface name="zdwl_ipc_manager_v2" version="2">
|
||||
+ <description summary="manage dwl state">
|
||||
+ This interface is exposed as a global in wl_registry.
|
||||
+
|
||||
+ Clients can use this interface to get a dwl_ipc_output.
|
||||
+ After binding the client will recieve the dwl_ipc_manager.tags and dwl_ipc_manager.layout events.
|
||||
+ The dwl_ipc_manager.tags and dwl_ipc_manager.layout events expose tags and layouts to the client.
|
||||
+ </description>
|
||||
+
|
||||
+ <request name="release" type="destructor">
|
||||
+ <description summary="release dwl_ipc_manager">
|
||||
+ Indicates that the client will not the dwl_ipc_manager object anymore.
|
||||
+ Objects created through this instance are not affected.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="get_output">
|
||||
+ <description summary="get a dwl_ipc_outout for a wl_output">
|
||||
+ Get a dwl_ipc_outout for the specified wl_output.
|
||||
+ </description>
|
||||
+ <arg name="id" type="new_id" interface="zdwl_ipc_output_v2"/>
|
||||
+ <arg name="output" type="object" interface="wl_output"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <event name="tags">
|
||||
+ <description summary="Announces tag amount">
|
||||
+ This event is sent after binding.
|
||||
+ A roundtrip after binding guarantees the client recieved all tags.
|
||||
+ </description>
|
||||
+ <arg name="amount" type="uint"/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="layout">
|
||||
+ <description summary="Announces a layout">
|
||||
+ This event is sent after binding.
|
||||
+ A roundtrip after binding guarantees the client recieved all layouts.
|
||||
+ </description>
|
||||
+ <arg name="name" type="string"/>
|
||||
+ </event>
|
||||
+ </interface>
|
||||
+
|
||||
+ <interface name="zdwl_ipc_output_v2" version="2">
|
||||
+ <description summary="control dwl output">
|
||||
+ Observe and control a dwl output.
|
||||
+
|
||||
+ Events are double-buffered:
|
||||
+ Clients should cache events and redraw when a dwl_ipc_output.frame event is sent.
|
||||
+
|
||||
+ Request are not double-buffered:
|
||||
+ The compositor will update immediately upon request.
|
||||
+ </description>
|
||||
+
|
||||
+ <enum name="tag_state">
|
||||
+ <entry name="none" value="0" summary="no state"/>
|
||||
+ <entry name="active" value="1" summary="tag is active"/>
|
||||
+ <entry name="urgent" value="2" summary="tag has at least one urgent client"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="release" type="destructor">
|
||||
+ <description summary="release dwl_ipc_outout">
|
||||
+ Indicates to that the client no longer needs this dwl_ipc_output.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <event name="toggle_visibility">
|
||||
+ <description summary="Toggle client visibilty">
|
||||
+ Indicates the client should hide or show themselves.
|
||||
+ If the client is visible then hide, if hidden then show.
|
||||
+ </description>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="active">
|
||||
+ <description summary="Update the selected output.">
|
||||
+ Indicates if the output is active. Zero is invalid, nonzero is valid.
|
||||
+ </description>
|
||||
+ <arg name="active" type="uint"/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="tag">
|
||||
+ <description summary="Update the state of a tag.">
|
||||
+ Indicates that a tag has been updated.
|
||||
+ </description>
|
||||
+ <arg name="tag" type="uint" summary="Index of the tag"/>
|
||||
+ <arg name="state" type="uint" enum="tag_state" summary="The state of the tag."/>
|
||||
+ <arg name="clients" type="uint" summary="The number of clients in the tag."/>
|
||||
+ <arg name="focused" type="uint" summary="If there is a focused client. Nonzero being valid, zero being invalid."/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="layout">
|
||||
+ <description summary="Update the layout.">
|
||||
+ Indicates a new layout is selected.
|
||||
+ </description>
|
||||
+ <arg name="layout" type="uint" summary="Index of the layout."/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="title">
|
||||
+ <description summary="Update the title.">
|
||||
+ Indicates the title has changed.
|
||||
+ </description>
|
||||
+ <arg name="title" type="string" summary="The new title name."/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="appid" since="1">
|
||||
+ <description summary="Update the appid.">
|
||||
+ Indicates the appid has changed.
|
||||
+ </description>
|
||||
+ <arg name="appid" type="string" summary="The new appid."/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="layout_symbol" since="1">
|
||||
+ <description summary="Update the current layout symbol">
|
||||
+ Indicates the layout has changed. Since layout symbols are dynamic.
|
||||
+ As opposed to the zdwl_ipc_manager.layout event, this should take precendence when displaying.
|
||||
+ You can ignore the zdwl_ipc_output.layout event.
|
||||
+ </description>
|
||||
+ <arg name="layout" type="string" summary="The new layout"/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="frame">
|
||||
+ <description summary="The update sequence is done.">
|
||||
+ Indicates that a sequence of status updates have finished and the client should redraw.
|
||||
+ </description>
|
||||
+ </event>
|
||||
+
|
||||
+ <request name="set_tags">
|
||||
+ <description summary="Set the active tags of this output"/>
|
||||
+ <arg name="tagmask" type="uint" summary="bitmask of the tags that should be set."/>
|
||||
+ <arg name="toggle_tagset" type="uint" summary="toggle the selected tagset, zero for invalid, nonzero for valid."/>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="set_client_tags">
|
||||
+ <description summary="Set the tags of the focused client.">
|
||||
+ The tags are updated as follows:
|
||||
+ new_tags = (current_tags AND and_tags) XOR xor_tags
|
||||
+ </description>
|
||||
+ <arg name="and_tags" type="uint"/>
|
||||
+ <arg name="xor_tags" type="uint"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="set_layout">
|
||||
+ <description summary="Set the layout of this output"/>
|
||||
+ <arg name="index" type="uint" summary="index of a layout recieved by dwl_ipc_manager.layout"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <!-- Version 2 -->
|
||||
+ <event name="fullscreen" since="2">
|
||||
+ <description summary="Update fullscreen status">
|
||||
+ Indicates if the selected client on this output is fullscreen.
|
||||
+ </description>
|
||||
+ <arg name="is_fullscreen" type="uint" summary="If the selected client is fullscreen. Nonzero is valid, zero invalid"/>
|
||||
+ </event>
|
||||
+
|
||||
+ <event name="floating" since="2">
|
||||
+ <description summary="Update the floating status">
|
||||
+ Indicates if the selected client on this output is floating.
|
||||
+ </description>
|
||||
+ <arg name="is_floating" type="uint" summary="If the selected client is floating. Nonzero is valid, zero invalid"/>
|
||||
+ </event>
|
||||
+ </interface>
|
||||
+</protocol>
|
||||
--
|
||||
2.51.2
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
From 73f70cd9d817a307030f360f6c8a2500046b8b76 Mon Sep 17 00:00:00 2001
|
||||
From: Palanix <palanixyt@gmail.com>
|
||||
Date: Mon, 4 Apr 2022 16:08:29 +0200
|
||||
Subject: [PATCH] Updated patch now allowing setting x and y
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Co-authored-by: Leonardo Hernández Hernández <leohdz172@proton.me>
|
||||
---
|
||||
config.def.h | 11 +++++++----
|
||||
dwl.c | 25 +++++++++++++++++++------
|
||||
2 files changed, 26 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 8f498d2..4ccacd2 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -38,12 +38,15 @@ static const Layout layouts[] = {
|
||||
/* monitors */
|
||||
/* NOTE: ALWAYS add a fallback rule, even if you are completely sure it won't be used */
|
||||
static const MonitorRule monrules[] = {
|
||||
- /* name mfact nmaster scale layout rotate/reflect x y */
|
||||
- /* example of a HiDPI laptop monitor:
|
||||
- { "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
|
||||
+ /* name mfact nmaster scale layout rotate/reflect x y resx resy rate mode adaptive*/
|
||||
+ /* example of a HiDPI laptop monitor at 120Hz:
|
||||
+ { "eDP-1", 0.5f, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0, 0, 0, 120.000f, 1, 1},
|
||||
+ * mode let's the user decide on how dwl should implement the modes:
|
||||
+ * -1 Sets a custom mode following the users choice
|
||||
+ * All other number's set the mode at the index n, 0 is the standard mode; see wlr-randr
|
||||
*/
|
||||
/* defaults */
|
||||
- { NULL, 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
|
||||
+ { NULL, 0.55f, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1, 0, 0, 0.0f, 0 ,1},
|
||||
};
|
||||
|
||||
/* keyboard */
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index 52bfbc8..9609b6d 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -215,6 +215,11 @@ typedef struct {
|
||||
const Layout *lt;
|
||||
enum wl_output_transform rr;
|
||||
int x, y;
|
||||
+ int resx;
|
||||
+ int resy;
|
||||
+ float rate;
|
||||
+ int mode;
|
||||
+ int adaptive;
|
||||
} MonitorRule;
|
||||
|
||||
typedef struct {
|
||||
@@ -865,6 +870,7 @@ createmon(struct wl_listener *listener, void *data)
|
||||
/* This event is raised by the backend when a new output (aka a display or
|
||||
* monitor) becomes available. */
|
||||
struct wlr_output *wlr_output = data;
|
||||
+ struct wlr_output_mode *mode = wl_container_of(wlr_output->modes.next, mode, link);
|
||||
const MonitorRule *r;
|
||||
size_t i;
|
||||
struct wlr_output_state state;
|
||||
@@ -893,16 +899,23 @@ createmon(struct wl_listener *listener, void *data)
|
||||
strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, LENGTH(m->ltsymbol));
|
||||
wlr_output_state_set_scale(&state, r->scale);
|
||||
wlr_output_state_set_transform(&state, r->rr);
|
||||
+
|
||||
+ wlr_output_state_set_adaptive_sync_enabled(&state, r->adaptive);
|
||||
+
|
||||
+ if(r->mode == -1)
|
||||
+ wlr_output_state_set_custom_mode(&state, r->resx, r->resy,
|
||||
+ (int) (r->rate > 0 ? r->rate * 1000 : 0));
|
||||
+ else if (!wl_list_empty(&wlr_output->modes)) {
|
||||
+ for (int j = 0; j < r->mode; j++) {
|
||||
+ mode = wl_container_of(mode->link.next, mode, link);
|
||||
+ }
|
||||
+ wlr_output_state_set_mode(&state, mode);
|
||||
+ }
|
||||
+
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- /* The mode is a tuple of (width, height, refresh rate), and each
|
||||
- * monitor supports only a specific set of modes. We just pick the
|
||||
- * monitor's preferred mode; a more sophisticated compositor would let
|
||||
- * the user configure it. */
|
||||
- wlr_output_state_set_mode(&state, wlr_output_preferred_mode(wlr_output));
|
||||
-
|
||||
/* Set up event listeners */
|
||||
LISTEN(&wlr_output->events.frame, &m->frame, rendermon);
|
||||
LISTEN(&wlr_output->events.destroy, &m->destroy, cleanupmon);
|
||||
--
|
||||
2.45.1
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
From 5c75c67fe49e5ab89e4a61dfb2fe74c768477b90 Mon Sep 17 00:00:00 2001
|
||||
From: wochap <gean.marroquin@gmail.com>
|
||||
Date: Fri, 5 Jul 2024 11:13:53 -0500
|
||||
Subject: [PATCH] implement relative-muse-resize
|
||||
|
||||
---
|
||||
dwl.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 59 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index dc0437e..ebf9ef1 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -401,7 +401,8 @@ static struct wlr_seat *seat;
|
||||
static KeyboardGroup *kb_group;
|
||||
static unsigned int cursor_mode;
|
||||
static Client *grabc;
|
||||
-static int grabcx, grabcy; /* client-relative */
|
||||
+static Client initial_grabc;
|
||||
+static int grabcx, grabcy, grabx, graby, grabcenterx, grabcentery; /* client-relative */
|
||||
|
||||
static struct wlr_output_layout *output_layout;
|
||||
static struct wlr_box sgeom;
|
||||
@@ -1821,8 +1822,27 @@ motionnotify(uint32_t time, struct wlr_input_device *device, double dx, double d
|
||||
.width = grabc->geom.width, .height = grabc->geom.height}, 1);
|
||||
return;
|
||||
} else if (cursor_mode == CurResize) {
|
||||
- resize(grabc, (struct wlr_box){.x = grabc->geom.x, .y = grabc->geom.y,
|
||||
- .width = (int)round(cursor->x) - grabc->geom.x, .height = (int)round(cursor->y) - grabc->geom.y}, 1);
|
||||
+ if (grabcenterx < grabx) {
|
||||
+ if (grabcentery < graby) {
|
||||
+ /* bottom-right */
|
||||
+ resize(grabc, (struct wlr_box){.x = initial_grabc.geom.x, .y = initial_grabc.geom.y,
|
||||
+ .width = (int)round(cursor->x) - initial_grabc.geom.x, .height = (int)round(cursor->y) - initial_grabc.geom.y}, 1);
|
||||
+ } else {
|
||||
+ /* top-right */
|
||||
+ resize(grabc, (struct wlr_box){.x = initial_grabc.geom.x, .y = (int)round(cursor->y),
|
||||
+ .width = (int)round(cursor->x) - initial_grabc.geom.x, .height = initial_grabc.geom.y + initial_grabc.geom.height - (int)round(cursor->y)}, 1);
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (grabcentery < graby) {
|
||||
+ /* bottom-left */
|
||||
+ resize(grabc, (struct wlr_box){.x = (int)round(cursor->x), .y = initial_grabc.geom.y,
|
||||
+ .width = initial_grabc.geom.x + initial_grabc.geom.width - (int)round(cursor->x), .height = (int)round(cursor->y) - initial_grabc.geom.y}, 1);
|
||||
+ } else {
|
||||
+ /* top-left */
|
||||
+ resize(grabc, (struct wlr_box){.x = (int)round(cursor->x), .y = (int)round(cursor->y),
|
||||
+ .width = initial_grabc.geom.x + initial_grabc.geom.width - (int)round(cursor->x), .height = initial_grabc.geom.y + initial_grabc.geom.height - (int)round(cursor->y)}, 1);
|
||||
+ }
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1870,10 +1890,42 @@ moveresize(const Arg *arg)
|
||||
case CurResize:
|
||||
/* Doesn't work for X11 output - the next absolute motion event
|
||||
* returns the cursor to where it started */
|
||||
- wlr_cursor_warp_closest(cursor, NULL,
|
||||
- grabc->geom.x + grabc->geom.width,
|
||||
- grabc->geom.y + grabc->geom.height);
|
||||
- wlr_cursor_set_xcursor(cursor, cursor_mgr, "se-resize");
|
||||
+ initial_grabc = *grabc;
|
||||
+ grabx = (int)round(cursor->x);
|
||||
+ graby = (int)round(cursor->y);
|
||||
+ grabcx = (int)round(cursor->x) - grabc->geom.x;
|
||||
+ grabcy = (int)round(cursor->y) - grabc->geom.y;
|
||||
+ grabcenterx = grabc->geom.width / 2 + grabc->geom.x;
|
||||
+ grabcentery = grabc->geom.height / 2 + grabc->geom.y;
|
||||
+ if (grabcenterx < grabx) {
|
||||
+ if (grabcentery < graby) {
|
||||
+ /* bottom-right */
|
||||
+ wlr_cursor_warp_closest(cursor, NULL,
|
||||
+ grabc->geom.x + grabc->geom.width,
|
||||
+ grabc->geom.y + grabc->geom.height);
|
||||
+ wlr_cursor_set_xcursor(cursor, cursor_mgr, "se-resize");
|
||||
+ } else {
|
||||
+ /* top-right */
|
||||
+ wlr_cursor_warp_closest(cursor, NULL,
|
||||
+ grabc->geom.x + grabc->geom.width,
|
||||
+ grabc->geom.y);
|
||||
+ wlr_cursor_set_xcursor(cursor, cursor_mgr, "ne-resize");
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (grabcentery < graby) {
|
||||
+ /* bottom-left */
|
||||
+ wlr_cursor_warp_closest(cursor, NULL,
|
||||
+ grabc->geom.x,
|
||||
+ grabc->geom.y + grabc->geom.height);
|
||||
+ wlr_cursor_set_xcursor(cursor, cursor_mgr, "sw-resize");
|
||||
+ } else {
|
||||
+ /* top-left */
|
||||
+ wlr_cursor_warp_closest(cursor, NULL,
|
||||
+ grabc->geom.x,
|
||||
+ grabc->geom.y);
|
||||
+ wlr_cursor_set_xcursor(cursor, cursor_mgr, "nw-resize");
|
||||
+ }
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.45.1
|
||||
@@ -1,13 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
gscreenshot
|
||||
wlr-randr
|
||||
awww
|
||||
];
|
||||
|
||||
programs.river-classic = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
}
|
||||
+57
-41
@@ -6,22 +6,22 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
makeScheme =
|
||||
scheme:
|
||||
(builtins.fromJSON (
|
||||
builtins.readFile "${
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = "fromYAML";
|
||||
phases = "buildPhase";
|
||||
buildPhase = ''
|
||||
mkdir -p $out/
|
||||
FILE=${pkgs.base16-schemes}/share/themes/${scheme}.yaml
|
||||
FILEBASENAME="$(basename $FILE .yaml).json"
|
||||
cat $FILE | ${pkgs.yaml2json}/bin/yaml2json | sed s/#//g > $out/$FILEBASENAME
|
||||
'';
|
||||
}
|
||||
}/${scheme}.json"
|
||||
)).palette;
|
||||
jsonSchemes = pkgs.stdenv.mkDerivation {
|
||||
name = "fromYAML";
|
||||
phases = "buildPhase";
|
||||
buildPhase = ''
|
||||
mkdir -p $out/
|
||||
#for FILE in ${pkgs.base16-schemes}/share/themes/*; do
|
||||
FILE=${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml
|
||||
FILEBASENAME="$(basename $FILE .yaml).json"
|
||||
cat $FILE | ${pkgs.yaml2json}/bin/yaml2json | sed s/#//g > $out/$FILEBASENAME
|
||||
#done
|
||||
ls -l $out/
|
||||
'';
|
||||
};
|
||||
|
||||
json2Palette =
|
||||
jsonScheme: (builtins.fromJSON (builtins.readFile "${jsonSchemes}/${jsonScheme}.json")).palette;
|
||||
|
||||
font = {
|
||||
package = pkgs.nerd-fonts.caskaydia-cove;
|
||||
@@ -33,12 +33,10 @@ let
|
||||
name = "DejaVu Sans Mono";
|
||||
};
|
||||
|
||||
|
||||
|
||||
makeTheme =
|
||||
scheme: polarity:
|
||||
jsonScheme: polarity:
|
||||
let
|
||||
palette = makeScheme scheme;
|
||||
palette = json2Palette jsonScheme;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
@@ -70,32 +68,43 @@ let
|
||||
"${wallpaper}/share/wallpapers/nixos-wallpaper.png";
|
||||
};
|
||||
|
||||
palette = {
|
||||
base00 = "1C2023";
|
||||
base01 = "393F45";
|
||||
base02 = "565E65";
|
||||
base03 = "747C84";
|
||||
base04 = "ADB3BA";
|
||||
base05 = "C7CCD1";
|
||||
base06 = "DFE2E5";
|
||||
base07 = "F3F4F5";
|
||||
base08 = "C7AE95";
|
||||
base09 = "C7C795";
|
||||
base0A = "AEC795";
|
||||
base0B = "95C7AE";
|
||||
base0C = "95AEC7";
|
||||
base0D = "AE95C7";
|
||||
base0E = "C795AE";
|
||||
base0F = "C79595";
|
||||
};
|
||||
in
|
||||
{
|
||||
# stylix = makeTheme "ashen" "dark";
|
||||
#stylix = makeTheme "catppuccin-mocha" "dark";
|
||||
|
||||
stylix = {
|
||||
#specialisation = {
|
||||
# catppuccin-mocha.configuration.stylix = lib.mkForce (makeTheme "catppuccin-mocha" "dark");
|
||||
# catppuccin-latte.configuration.stylix = lib.mkForce (makeTheme "catppuccin-latte" "light");
|
||||
# gruvbox-dark-hard.configuration.stylix = lib.mkForce (makeTheme "gruvbox-dark-hard" "dark");
|
||||
# heetch.configuration.stylix = lib.mkForce (makeTheme "heetch" "dark");
|
||||
#};
|
||||
|
||||
stylix =
|
||||
let
|
||||
palette = {
|
||||
base00 = "11111a"; # #11111a
|
||||
base01 = "181825"; # #181825
|
||||
base02 = "313244"; # #313244
|
||||
base03 = "45475a"; # #45475a
|
||||
base04 = "585b70"; # #585b70
|
||||
base05 = "cdd6f4"; # #cdd6f4
|
||||
base06 = "f5e0dc"; # #f5e0dc
|
||||
base07 = "b4befe"; # #b4befe
|
||||
base08 = "f38ba8"; # #f38ba8
|
||||
base09 = "fab387"; # #fab387
|
||||
base0A = "f9e2af"; # #f9e2af
|
||||
base0B = "a6e3a1"; # #a6e3a1
|
||||
base0C = "94e2d5"; # #94e2d5
|
||||
base0D = "f5c2e7"; # #f5c2e7
|
||||
base0E = "cba6f7"; # #cba6f7
|
||||
base0F = "f2cdcd"; # #f2cdcd
|
||||
};
|
||||
polarity = "dark";
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
base16Scheme.palette = palette;
|
||||
polarity = "dark";
|
||||
inherit polarity;
|
||||
fonts = {
|
||||
emoji = emojiFont;
|
||||
monospace = font;
|
||||
@@ -121,4 +130,11 @@ in
|
||||
in
|
||||
"${wallpaper}/share/wallpapers/nixos-wallpaper.png";
|
||||
};
|
||||
|
||||
#security.sudo.extraConfig = ''
|
||||
# ${userName} ALL = (root) NOPASSWD: /nix/var/nix/profiles/system/specialisation/catppuccin-mocha/bin/switch-to-configuration
|
||||
# ${userName} ALL = (root) NOPASSWD: /nix/var/nix/profiles/system/specialisation/catppuccin-latte/bin/switch-to-configuration
|
||||
# ${userName} ALL = (root) NOPASSWD: /nix/var/nix/profiles/system/specialisation/gruvbox-dark-hard/bin/switch-to-configuration
|
||||
# ${userName} ALL = (root) NOPASSWD: /nix/var/nix/profiles/system/specialisation/heetch/bin/switch-to-configuration
|
||||
#'';
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/1870ec35-8313-40a7-a264-0ef5576c6317";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/9403-4D2A";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -4,4 +4,11 @@
|
||||
./hardware-configuration.nix
|
||||
../common/configuration.nix
|
||||
];
|
||||
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
device = "nodev";
|
||||
useOSProber = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,18 +14,26 @@
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-label/NIXROOT";
|
||||
{ device = "/dev/disk/by-uuid/90aaba2e-42f2-4b98-8df6-bd4a72f6d688";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-label/NIXBOOT";
|
||||
{ device = "/dev/disk/by-uuid/F8E0-7E32";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp10s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp18s0f4u1.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 469 KiB After Width: | Height: | Size: 190 KiB |
Reference in New Issue
Block a user