Compare commits
412 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f9ab7268d2 | |||
| 9e49f7f433 | |||
| 6621b7aa7b | |||
| bd5f8eec2b | |||
| 11b4f2410d | |||
| 4c0fe82453 | |||
| 830165aab8 | |||
| 93e5181cb6 | |||
| 7d5a24c7f8 | |||
| 882063c6c6 | |||
| 7fe00a1375 | |||
| 6d0963827b | |||
| 74bef0c5cd | |||
| 684ee6f23d | |||
| 3135e1cec4 | |||
| be4b66fdd2 | |||
| 8b66ff719b | |||
| edfa915586 | |||
| 3980c8ae88 | |||
| 348d2b46e6 | |||
| a4f41a0371 | |||
| 7cd5b88c45 | |||
| bf3e18d17c | |||
| 7af0cfd06d | |||
| 6628c4d589 | |||
| 260ca708a8 | |||
| ef7c3d23a3 | |||
| c2cb932c66 | |||
| 21b805741f | |||
| 44fa744312 | |||
| 445f70a5ec | |||
| eb9d3f2d16 | |||
| 66f6ae06d7 | |||
| 08868fc241 | |||
| 811011d6d6 | |||
| 7df49ad646 | |||
| 2caa21482f | |||
| 573231b99a | |||
| 04190ab15c | |||
| 63832528f2 | |||
| 18a687f114 | |||
| e0edcb77e1 | |||
| 9795d54dd4 | |||
| fd28c24d7a | |||
| e05f9d387e | |||
| 0ad80cf7a1 | |||
| c4639d88c5 | |||
| e4e90059e3 | |||
| 07879586b4 | |||
| 2d3ec51eb1 | |||
| 88eaa7a242 | |||
| 5faef18601 | |||
| c9d7932bda | |||
| 7ebc2f366b | |||
| 69b3d42f9a | |||
| 587266c904 | |||
| ded05e23fc | |||
| 07d33b60dc | |||
| cd647e7d7b | |||
| facce75d9f | |||
| ab6eb6db5b | |||
| a036da9b76 | |||
| b796260c7e | |||
| 4a23455792 | |||
| bbe6ef38b7 | |||
| 3b7ed586c6 | |||
| f9c11e0dc0 | |||
| 5e093d351b | |||
| 2c88a52d5a | |||
| b55c662a1b | |||
| 73b5b2c9f6 | |||
| f155563ca0 | |||
| 9b615f3825 | |||
| 56a829cdb3 | |||
| d7c275f6e9 | |||
| 420d4f173c | |||
| ec424cd6d8 | |||
| fc765ee94f | |||
| b86646816b | |||
| 12dbe7536f | |||
| 1bbac664e7 | |||
| e5a5189158 | |||
| fa0e502472 | |||
| 562d1f30e4 | |||
| b86499aec5 | |||
| 1fdfb9f62a | |||
| 2b6a99b191 | |||
| 454673329f | |||
| a4e661d6ad | |||
| dc38c2d88a | |||
| c267da0953 | |||
| c5e76b1a44 | |||
| 335d41cf19 | |||
| 4360edef9e | |||
| fde813460a | |||
| 7a6e450c8f | |||
| 59656b7dc8 | |||
| f18f33c9c3 | |||
| 10c6f094f6 | |||
| a6fdaf9a27 | |||
| 1b8e5032f9 | |||
| aaef1dccb2 | |||
| 21a61f528b | |||
| 7ab78044b7 | |||
| 28e9c06ea8 | |||
| 960ac31702 | |||
| f6b1976809 | |||
| f6156cad67 | |||
| 88b4ff68a6 | |||
| a4e2cf06e9 | |||
| 67fa3f06ed | |||
| 20930ea6c2 | |||
| deb4749489 | |||
| 96b228aadc | |||
| 2dc8180d1b | |||
| dd1213c5b7 | |||
| 47bd23b3dd | |||
| 25bba64185 | |||
| ffdb003aa2 | |||
| d3c0b74ab5 | |||
| c9b98978fa | |||
| 7cec25fdb9 | |||
| 446cfea7dd | |||
| 3fd62d4525 | |||
| 69253992df | |||
| 35845cac3a | |||
| 33c6170c15 | |||
| dd36c2711a | |||
| e9c69c2cc1 | |||
| 30fbcec7f5 | |||
| c0f21fa798 | |||
| cb61d6ad3d | |||
| 7588100a62 | |||
| 5ce6b68252 | |||
| 5a6cdb3171 | |||
| dcf30faa51 | |||
| 3096697e35 | |||
| cdce0628ab | |||
| 1c82b5eafe | |||
| 216011d9f6 | |||
| 73a837925b | |||
| 47258d9e4d | |||
| 8ae075d84c | |||
| 6e4fe781ab | |||
| dfbdf1cd87 | |||
| f947721819 | |||
| c3fdb180ff | |||
| e1b503b43b | |||
| a46fa6344d | |||
| 2ab60c6047 | |||
| 2a3c6ae6a9 | |||
| 0181c007fe | |||
| 83cdb81173 | |||
| 2580cf8aa5 | |||
| de8e083e92 | |||
| 49460feb44 | |||
| 4768918d0d | |||
| a534ad610f | |||
| 4015222d6a | |||
| b23774d0a2 | |||
| 58c1860ecf | |||
| 302c5e11b2 | |||
| 757d9e523d | |||
| 673d824c26 | |||
| 8355d35aaf | |||
| 1601f4b622 | |||
| ee5165b068 | |||
| 76138fc342 | |||
| 2f1b33d070 | |||
| bde12c7a04 | |||
| 658d489fd5 | |||
| 95f95e208d | |||
| b5eb134f69 | |||
| 6264269817 | |||
| 8151c56cc4 | |||
| 3a75206afb | |||
| b5a542a37c | |||
| bd2465d356 | |||
| e5bc8801a4 | |||
| c97a5887df | |||
| ec55ac55b2 | |||
| 65f04a69ae | |||
| ad40c37d1e | |||
| 4f3fe9be8b | |||
| 6f3c0e8f6c | |||
| 481fb8c6c4 | |||
| 94f5d8ba01 | |||
| ea18baa039 | |||
| 1653fe3eb2 | |||
| 162321eb28 | |||
| d947870a55 | |||
| 6550d6e871 | |||
| 352f2d923b | |||
| e10deb6ae5 | |||
| 90123ac18d | |||
| 1bd3096d53 | |||
| ca68b1de73 | |||
| f8386beb6c | |||
| b9f125e76a | |||
| 3717ecc642 | |||
| 377cd79704 | |||
| fea33ada52 | |||
| a4cf2833bc | |||
| 8491971427 | |||
| b4f4b67a8b | |||
| f59110c87e | |||
| 3dd4f2783e | |||
| d8657c7eeb | |||
| 3c4ed456cf | |||
| 551302a00e | |||
| 9aaffe2677 | |||
| 11cee2638a | |||
| e35dc3d28e | |||
| b686cf7751 | |||
| 7fd7cfac70 | |||
| 2023828364 | |||
| 2d8ba9f7ea | |||
| bc70242a99 | |||
| 0eabcc4fc1 | |||
| 1e301b958e | |||
| 4a4f66c08e | |||
| e33dbea82e | |||
| 50813851cb | |||
| b3c502fdf3 | |||
| 3587a7042d | |||
| cfc2f01e57 | |||
| ebef97f84b | |||
| 3740928c70 | |||
| 435742f29c | |||
| 0ebe999f92 | |||
| 005c744cb6 | |||
| a2b4b0d8ea | |||
| e8c6cb073f | |||
| 17b01cbf1c | |||
| 6d5cd6d78e | |||
| c48d1543a4 | |||
| ac41162a6e | |||
| 74f26f5997 | |||
| 0a1acae08a | |||
| 54f2f1e8f9 | |||
| a25d41100a | |||
| 381830a767 | |||
| d1c11014de | |||
| b41a820dcc | |||
| 38ba3a2fdb | |||
| 998f4905b0 | |||
| 9cc45e426d | |||
| 7053adc718 | |||
| 8d6af2f936 | |||
| f4788f863e | |||
| 2ba8639dfd | |||
| a609216012 | |||
| b6911bc045 | |||
| 09fbbec45e | |||
| b697c89aae | |||
| 0e0b8a40c7 | |||
| 555fea04b4 | |||
| fee08ad3d2 | |||
| b3e0e3e76f | |||
| 4dee2bf44f | |||
| f23d023551 | |||
| 61ac2f71d5 | |||
| ca9e487111 | |||
| f8e327d46d | |||
| 835a7fdad3 | |||
| 6034a9797c | |||
| c204eed76e | |||
| 0abf1447af | |||
| 73ece504c9 | |||
| 30f2178b6f | |||
| 5b0a8b3c49 | |||
| da0db9551c | |||
| f1b1dcdd9e | |||
| b3bcc0f058 | |||
| 2b1bc85514 | |||
| 6517af5889 | |||
| 43f8d827f6 | |||
| f7d3c7a7c4 | |||
| 7f7cbe74f7 | |||
| e3c5d8c166 | |||
| 8957622879 | |||
| 657fde7545 | |||
| f757369821 | |||
| e623b83d68 | |||
| 2b8d4a1dce | |||
| e6103c3153 | |||
| 6b0a342cdd | |||
| 280a2da2db | |||
| 363d470386 | |||
| f715f08831 | |||
| c4e0681c33 | |||
| a3121c0ce0 | |||
| 6af25e5453 | |||
| fd8da098ed | |||
| e83c8ded35 | |||
| 229b0041a6 | |||
| 128e6a04c2 | |||
| a92159168c | |||
| 1fb2d40aa8 | |||
| 7ec496be3d | |||
| 35a794a648 | |||
| b8dfddd2e8 | |||
| 4a49aba2ba | |||
| d1bffc3952 | |||
| 8b2e901680 | |||
| a5db5cc54d | |||
| efede58a6d | |||
| 7df80623d5 | |||
| 028df1fd35 | |||
| 12e64d34e6 | |||
| ba7174224c | |||
| c794974b20 | |||
| d9fdab315c | |||
| b3d37d7b20 | |||
| 88076292de | |||
| 25c0a328e6 | |||
| ab855f18ea | |||
| b7659157fa | |||
| 608df0bd38 | |||
| 1871ca6ef6 | |||
| d7eed2ecf6 | |||
| 789e6786cc | |||
| 8e9bfe9522 | |||
| 0c99dfefbb | |||
| c16cedf981 | |||
| 4f0c6d3e46 | |||
| 752a6ad1de | |||
| 802c2aa6bf | |||
| 2a6b5bc2c7 | |||
| e986b99ce7 | |||
| c17dabdbd8 | |||
| 0ab12aabff | |||
| 30ecca57ba | |||
| cd734937c0 | |||
| 477b592b06 | |||
| fda9681b84 | |||
| 694042f027 | |||
| 7e77b1acd4 | |||
| 6b765f1b54 | |||
| 97d65f2f7e | |||
| 9186f2cc28 | |||
| 6ae2221007 | |||
| e862ce8f9b | |||
| 6dbe009076 | |||
| 598abbf308 | |||
| 17ccf2ba8c | |||
| ca5b15b377 | |||
| a11926ee85 | |||
| f19b7ab674 | |||
| 306e540a67 | |||
| 5185edce48 | |||
| b3f9882c7e | |||
| ee7b59c521 | |||
| 113a15cd69 | |||
| 2ea4f6631c | |||
| e21cf63216 | |||
| f31387ab12 | |||
| 4ec339c53b | |||
| eb70a6dd52 | |||
| a9aef32984 | |||
| 58d575ebeb | |||
| be57946347 | |||
| 63c2f887db | |||
| 36222bdb63 | |||
| de69800662 | |||
| f2a1604009 | |||
| dfec0bc5da | |||
| 45ce1678d1 | |||
| 5022c31815 | |||
| 2534d83bdd | |||
| 3e7917aee3 | |||
| 530a7c9777 | |||
| a3b195da1f | |||
| fa1a376d85 | |||
| 25d034d7dc | |||
| a0572f8a95 | |||
| 6e32ac5ceb | |||
| 5278908420 | |||
| 6044c4e063 | |||
| d0532495e0 | |||
| 3339960062 | |||
| 77854b1c69 | |||
| b1ca82da64 | |||
| 72bc56a934 | |||
| aac77be6ec | |||
| 6404fbd36d | |||
| f442452a2e | |||
| 35f515e828 | |||
| 3215644a87 | |||
| 05198ddeab | |||
| 67402c3e54 | |||
| 78abaed26f | |||
| 64a56ea346 | |||
| 453bc1f249 | |||
| 7fc61d7d27 | |||
| d9edf3f389 | |||
| 4a29a676b5 | |||
| 6a61e05ae7 | |||
| ce1301af38 | |||
| dd3caf07d2 | |||
| c62421cfb6 | |||
| d4026e1559 | |||
| 53346c17ea | |||
| 52356a4a87 | |||
| c603389ebc | |||
| 2d8e528b6f | |||
| 87dea595d3 | |||
| 9629dd0ba0 | |||
| 9a722c915a | |||
| 65e7e86739 | |||
| 1b0dcd2863 | |||
| c1e4ef47f3 |
@@ -0,0 +1,7 @@
|
|||||||
|
keys:
|
||||||
|
- &user_kenji age1dhmt5tdyxd9zam542zkr9hq4tku7lzmf6j057sjtepk80deky5fqemczs5
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *user_kenji
|
||||||
@@ -1,6 +1,58 @@
|
|||||||
# Getting Started
|
# HakaseOS
|
||||||
|
HakaseOS is an opinionated NixOS configuration heavily inspired by OmarchyOS.
|
||||||
|
|
||||||
`nixos-rebuild switch --flake LOCATION#HOST_NAME`
|
## Features
|
||||||
`home-manager switch --flake LOCATION#HOST_NAME`
|
* Vim keybindings
|
||||||
|
* TUI applications
|
||||||
|
* Simple Setup
|
||||||
|
* Pre-configured Firefox
|
||||||
|
|
||||||
Change `LOCATION` and `HOST_NAME`.
|
## How to Use SOPS
|
||||||
|
SOPS is an important aspect of this operating system. Learning to use it is important for security and modularity. It is impertinent that you do not lose the `private key`, as it is irrecoverable.
|
||||||
|
|
||||||
|
To get started, follow the instructions below.
|
||||||
|
1. Create a folder.
|
||||||
|
```sh
|
||||||
|
mkdir -p ~/.config/sops/age
|
||||||
|
```
|
||||||
|
2. Generate a private key using `age`
|
||||||
|
```sh
|
||||||
|
nix-shell -p age --run "age-keygen -o ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
**OR**
|
||||||
|
Use `ssh-to-age` to convert `id_ed22519` to `age`.
|
||||||
|
```sh
|
||||||
|
nix-shell -p ssh-to-age --run "ssh-to-age -private-key -i ~/.ssh/id_ed25519 > ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
There are other ways of generating a private key. Refer to [sops-nix](https://github.com/Mic92/sops-nix).
|
||||||
|
3. Get a **public key**.
|
||||||
|
```sh
|
||||||
|
nix-shell -p age --run "age-keygen -y ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
4. On the same directory as `flake.nix`, create `.sops.yaml` and paste the following below.
|
||||||
|
```yaml
|
||||||
|
# This example uses YAML anchors which allows reuse of multiple keys
|
||||||
|
# without having to repeat yourself.
|
||||||
|
# Also see https://github.com/Mic92/dotfiles/blob/d6114726d859df36ccaa32891c4963ae5717ef7f/nixos/.sops.yaml
|
||||||
|
# for a more complex example.
|
||||||
|
keys:
|
||||||
|
- &admin_alice 2504791468b153b8a3963cc97ba53d1919c5dfd4
|
||||||
|
- &admin_bob age12zlz6lvcdk6eqaewfylg35w0syh58sm7gh53q5vvn7hd7c6nngyseftjxl
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- pgp:
|
||||||
|
- *admin_alice
|
||||||
|
age:
|
||||||
|
- *admin_bob
|
||||||
|
|
||||||
|
```
|
||||||
|
Replace as according to your needs.
|
||||||
|
5. Create a sops `.yaml` file.
|
||||||
|
```sh
|
||||||
|
nix-shell -p sops --run "sops secrets/example.yaml"
|
||||||
|
```
|
||||||
|
NOTE: If you add a new host to your `.sops.yaml`, you will need to update the keys for all secrets.
|
||||||
|
```sh
|
||||||
|
nix-shell -p sops --run "sops updatekeys secrets/example.yaml"
|
||||||
|
```
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
languagePacks = ["en-US"];
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
hakase = {
|
||||||
|
search.force = true;
|
||||||
|
isDefault = true;
|
||||||
|
search.default = "ddg";
|
||||||
|
|
||||||
|
# Full declarative mode enabled.
|
||||||
|
# Note: Manual bookmarks added in the UI will be overwritten on next rebuild.
|
||||||
|
bookmarks = {
|
||||||
|
force = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
name = "Toolbar Bookmarks";
|
||||||
|
toolbar = true;
|
||||||
|
bookmarks = myConfig.firefox.bookmarks;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# --- Privacy & Hardening ---
|
||||||
|
"browser.contentblocking.category" = "strict";
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.resistFingerprinting" = true; # Note: Spoofs timezone and caps FPS to 60
|
||||||
|
"geo.enabled" = false;
|
||||||
|
"media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks
|
||||||
|
"network.dns.disablePrefetch" = true;
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
|
||||||
|
# --- NixOS / Hyprland Integration ---
|
||||||
|
"widget.use-xdg-desktop-portal.file-picker" = 1; # Use native file picker
|
||||||
|
|
||||||
|
# --- UI & Behavior ---
|
||||||
|
"browser.compactmode.show" = true;
|
||||||
|
"browser.tabs.closeWindowWithLastTab" = false;
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
"extensions.screenshots.disabled" = true;
|
||||||
|
"browser.topsites.contile.enabled" = false;
|
||||||
|
"browser.formfill.enable" = false;
|
||||||
|
"browser.search.suggest.enabled" = false;
|
||||||
|
"browser.search.suggest.enabled.private" = false;
|
||||||
|
"browser.urlbar.suggest.searches" = false;
|
||||||
|
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
|
||||||
|
# --- Homepage & Navigation ---
|
||||||
|
"browser.startup.homepage" = "https://dash.sakamoto.dev";
|
||||||
|
"browser.newtabpage.pinned" = myConfig.firefox.newtabpage;
|
||||||
|
|
||||||
|
# --- DNS over HTTPS (Quad9) ---
|
||||||
|
"network.trr.mode" = 2; # Use DoH with system fallback
|
||||||
|
"network.trr.uri" = "https://dns.quad9.net/dns-query";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = false;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableAccounts = true;
|
||||||
|
DisableFirefoxScreenshots = true;
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
DisplayBookmarksToolbar = "always";
|
||||||
|
SearchBar = "unified";
|
||||||
|
|
||||||
|
# Power User Messaging
|
||||||
|
UserMessaging = {
|
||||||
|
ExtensionRecommendations = false;
|
||||||
|
SkipOnboarding = true;
|
||||||
|
FeatureRecommendations = false;
|
||||||
|
UrlbarInterventions = false;
|
||||||
|
WhatsNew = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
ExtensionSettings = {
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"tridactyl.vim@cmcaine.co.uk" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/tridactyl-vim/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set fish_greeting
|
||||||
|
fish_vi_key_bindings
|
||||||
|
zoxide init fish | source
|
||||||
|
zoxide init fish --cmd cd | source
|
||||||
|
'';
|
||||||
|
shellAliases = myConfig.terminal.aliases;
|
||||||
|
|
||||||
|
plugins = with pkgs.fishPlugins; [
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gemini-cli
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
package =
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then pkgs.ghostty-bin
|
||||||
|
else pkgs.ghostty;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
window-padding-x = 15;
|
||||||
|
window-padding-y = 15;
|
||||||
|
window-padding-balance = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
gcc
|
git
|
||||||
rustc
|
|
||||||
cargo
|
|
||||||
nodejs
|
|
||||||
python313
|
|
||||||
busybox
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user.name = "${myConfig.git.username}";
|
||||||
|
user.email = "${myConfig.git.email}";
|
||||||
|
init.defaultBranch = "${myConfig.git.defaultBranch}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
withUWSM = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.hyprpicker
|
||||||
|
pkgs.hyprlock
|
||||||
|
pkgs.hypridle
|
||||||
|
pkgs.hyprpaper
|
||||||
|
pkgs.hyprsunset
|
||||||
|
pkgs.hyprpolkitagent
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.terminal-exec = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default = myConfig.terminal.default;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# systemd.user.services.hyprpolkitagent = {
|
||||||
|
# description = "Hyprland Polkit Agent";
|
||||||
|
# wantedBy = ["graphical-session.target"];
|
||||||
|
# serviceConfig = {
|
||||||
|
# ExecStart = "${pkgs.hyprpolkitagent}/libexec/hyprpolkitagent";
|
||||||
|
# Restart = "on-failure";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hypr/binds.nix
|
||||||
|
./hypr/general.nix
|
||||||
|
./hypr/exec.nix
|
||||||
|
];
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
wayland.windowManager.hyprland.systemd.enable = false; # for UWSM support...
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bindd =
|
||||||
|
[
|
||||||
|
# essential
|
||||||
|
"SUPER, Return, Open Terminal, exec, uwsm app -- xdg-terminal-exec"
|
||||||
|
"SUPER, Q, Kill active, killactive"
|
||||||
|
|
||||||
|
# move focus
|
||||||
|
"SUPER, J, Move focus down, movefocus, d"
|
||||||
|
"SUPER, K, Move focus up, movefocus, u"
|
||||||
|
"SUPER, H, Move focus left, movefocus, l"
|
||||||
|
"SUPER, L, Move focus right, movefocus, r"
|
||||||
|
|
||||||
|
# fullscreen
|
||||||
|
"SUPER, F, Toggle Fullscreen, fullscreen, 0"
|
||||||
|
"SUPER SHIFT, F, Toggle Maximized Fullscreen, fullscreen, 1"
|
||||||
|
|
||||||
|
# apps
|
||||||
|
"SUPER, W, Open Browser, exec, uwsm app -- firefox" # FIXME: must be xdg-open
|
||||||
|
"SUPER, SPACE, App Launcher, exec, uwsm app -- walker"
|
||||||
|
|
||||||
|
# [Workspaces] Toggle between most recent workspaces
|
||||||
|
"SUPER, Tab, Cycle workspaces, workspace, previous"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Generate binds for Super + [1-10] to switch workspaces
|
||||||
|
# and Super + Shift + [1-10] to move window to workspace
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
key = toString (
|
||||||
|
if ws == 10
|
||||||
|
then 0
|
||||||
|
else ws
|
||||||
|
);
|
||||||
|
in [
|
||||||
|
"SUPER, ${key}, Switch to workspace ${toString ws}, workspace, ${toString ws}"
|
||||||
|
"SUPER SHIFT, ${key}, Move window to workspace ${toString ws}, movetoworkspace, ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec-once = [
|
||||||
|
"uwsm app -- waybar"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 15;
|
||||||
|
};
|
||||||
|
monitor = myConfig.hyprland.monitors;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
preload = ["/home/${myConfig.nixos.username}/Pictures/Wallpapers/nord-1.png"];
|
||||||
|
wallpaper = [
|
||||||
|
"HDMI-A-1,/home/${myConfig.nixos.username}/Pictures/Wallpapers/nord-1.png"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
jellyfin-tui
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = [
|
||||||
|
inputs.nixovim.packages.${system}.full
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Pro layout: one-line, clear spacing
|
||||||
|
format = ''
|
||||||
|
[](surface0)$os$directory[](fg:surface0 bg:peach)$git_branch$git_status[](fg:peach bg:surface1)$c$rust$nodejs$python$golang[](fg:surface1 bg:surface0)$nix_shell[](surface0)
|
||||||
|
$character'';
|
||||||
|
|
||||||
|
# Palette definition (Catppuccin Mocha-inspired)
|
||||||
|
palette = "pro_theme";
|
||||||
|
palettes.pro_theme = {
|
||||||
|
surface0 = "#313244";
|
||||||
|
surface1 = "#45475a";
|
||||||
|
text = "#cdd6f4";
|
||||||
|
peach = "#fab387";
|
||||||
|
sapphire = "#74c7ec";
|
||||||
|
lavender = "#b4befe";
|
||||||
|
green = "#a6e3a1";
|
||||||
|
};
|
||||||
|
|
||||||
|
os = {
|
||||||
|
disabled = false;
|
||||||
|
format = "[$symbol]($style)";
|
||||||
|
style = "bg:surface0 fg:text";
|
||||||
|
symbols = {NixOS = " ";};
|
||||||
|
};
|
||||||
|
|
||||||
|
directory = {
|
||||||
|
style = "bg:surface0 fg:lavender";
|
||||||
|
format = "[ $path ]($style)";
|
||||||
|
truncation_length = 3;
|
||||||
|
truncation_symbol = "…/";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_branch = {
|
||||||
|
symbol = " ";
|
||||||
|
style = "bg:peach fg:surface0";
|
||||||
|
format = "[[ $symbol $branch ]($style)]($style)";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_status = {
|
||||||
|
style = "bg:peach fg:surface0";
|
||||||
|
format = "[[($all_status$ahead_behind )]($style)]($style)";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix_shell = {
|
||||||
|
symbol = " ";
|
||||||
|
style = "bg:surface0 fg:sapphire";
|
||||||
|
format = "[ $symbol $state ]($style)";
|
||||||
|
};
|
||||||
|
|
||||||
|
character = {
|
||||||
|
success_symbol = "[](bold green)";
|
||||||
|
error_symbol = "[](bold red)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{inputs, ...}: {
|
||||||
|
imports = [
|
||||||
|
inputs.stylix.homeModules.stylix
|
||||||
|
];
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
autoEnable = false;
|
||||||
|
image = ../../assets/Wallpapers/nord-1.png;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
services.walker = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
app_launch_prefix = "";
|
||||||
|
as_window = false;
|
||||||
|
close_when_open = false;
|
||||||
|
disable_click_to_close = false;
|
||||||
|
force_keyboard_focus = false;
|
||||||
|
hotreload_theme = false;
|
||||||
|
locale = "";
|
||||||
|
monitor = "";
|
||||||
|
terminal_title_flag = "";
|
||||||
|
theme = "default";
|
||||||
|
timeout = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pamixer
|
||||||
|
wiremix
|
||||||
|
impala
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./style.nix
|
||||||
|
];
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
reload_style_on_change = true;
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
spacing = 0;
|
||||||
|
height = 26;
|
||||||
|
|
||||||
|
modules-left = ["custom/omarchy" "hyprland/workspaces"];
|
||||||
|
modules-center = ["clock" "custom/update" "custom/screenrecording-indicator"];
|
||||||
|
modules-right = [
|
||||||
|
"group/tray-expander"
|
||||||
|
"bluetooth"
|
||||||
|
"network"
|
||||||
|
"pulseaudio"
|
||||||
|
"cpu"
|
||||||
|
"battery"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
on-click = "activate";
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"default" = "";
|
||||||
|
"1" = "1";
|
||||||
|
"2" = "2";
|
||||||
|
"3" = "3";
|
||||||
|
"4" = "4";
|
||||||
|
"5" = "5";
|
||||||
|
"6" = "6";
|
||||||
|
"7" = "7";
|
||||||
|
"8" = "8";
|
||||||
|
"9" = "9";
|
||||||
|
"10" = "0";
|
||||||
|
"active" = "";
|
||||||
|
};
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [];
|
||||||
|
"2" = [];
|
||||||
|
"3" = [];
|
||||||
|
"4" = [];
|
||||||
|
"5" = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/omarchy" = {
|
||||||
|
format = "<span font='omarchy'>\ue900</span>";
|
||||||
|
on-click = "omarchy-menu";
|
||||||
|
on-click-right = "xdg-terminal-exec";
|
||||||
|
tooltip-format = "Omarchy Menu\n\nSuper + Alt + Space";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/update" = {
|
||||||
|
format = "";
|
||||||
|
exec = "omarchy-update-available";
|
||||||
|
on-click = "omarchy-launch-floating-terminal-with-presentation omarchy-update";
|
||||||
|
tooltip-format = "Omarchy update available";
|
||||||
|
signal = 7;
|
||||||
|
interval = 21600;
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
interval = 5;
|
||||||
|
format = "";
|
||||||
|
on-click = "omarchy-launch-or-focus-tui btop";
|
||||||
|
on-click-right = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
format = "{:%H:%M %a %b %d}";
|
||||||
|
format-alt = "{:L%d %B W%V %Y}";
|
||||||
|
tooltip = false;
|
||||||
|
on-click-right = "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
format-icons = ["" "" "" "" ""];
|
||||||
|
format = "{icon}";
|
||||||
|
format-wifi = "{icon}";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format-wifi = "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}";
|
||||||
|
tooltip-format-ethernet = "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}";
|
||||||
|
tooltip-format-disconnected = "Disconnected";
|
||||||
|
interval = 3;
|
||||||
|
spacing = 1;
|
||||||
|
on-click = "omarchy-launch-wifi";
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
format = "{capacity}% {icon}";
|
||||||
|
format-discharging = "{icon}";
|
||||||
|
format-charging = "{icon}";
|
||||||
|
format-plugged = "";
|
||||||
|
format-icons = {
|
||||||
|
charging = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
default = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
format-full = "";
|
||||||
|
tooltip-format-discharging = "{power:>1.0f}W↓ {capacity}%";
|
||||||
|
tooltip-format-charging = "{power:>1.0f}W↑ {capacity}%";
|
||||||
|
interval = 5;
|
||||||
|
on-click = "omarchy-menu power";
|
||||||
|
states = {
|
||||||
|
warning = 20;
|
||||||
|
critical = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"bluetooth" = {
|
||||||
|
format = "";
|
||||||
|
format-disabled = "";
|
||||||
|
format-connected = "";
|
||||||
|
format-no-controller = "";
|
||||||
|
tooltip-format = "Devices connected: {num_connections}";
|
||||||
|
on-click = "omarchy-launch-bluetooth";
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio" = {
|
||||||
|
format = "{icon}";
|
||||||
|
on-click = "omarchy-launch-or-focus-tui wiremix";
|
||||||
|
on-click-right = "pamixer -t";
|
||||||
|
tooltip-format = "Playing at {volume}%";
|
||||||
|
scroll-step = 5;
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
default = ["" "" ""];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/tray-expander" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 600;
|
||||||
|
children-class = "tray-group-item";
|
||||||
|
};
|
||||||
|
modules = ["custom/expand-icon" "tray"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/expand-icon" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/screenrecording-indicator" = {
|
||||||
|
on-click = "omarchy-cmd-screenrecord";
|
||||||
|
# Note: $OMARCHY_PATH must be defined in your environment
|
||||||
|
exec = "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh";
|
||||||
|
signal = 8;
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 12;
|
||||||
|
spacing = 17;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
style = ''
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: #cdd6f4;
|
||||||
|
color: #181824;
|
||||||
|
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
min-height: 0;
|
||||||
|
font-family: 'JetBrainsMono Nerd Font';
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
all: initial;
|
||||||
|
padding: 0 6px;
|
||||||
|
margin: 0 1.5px;
|
||||||
|
min-width: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-omarchy,
|
||||||
|
#custom-screenrecording-indicator,
|
||||||
|
#custom-update {
|
||||||
|
min-width: 12px;
|
||||||
|
margin: 0 7.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
margin-right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth {
|
||||||
|
margin-right: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
margin-right: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-expand-icon {
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-update {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
margin-left: 8.75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator {
|
||||||
|
min-width: 12px;
|
||||||
|
margin-left: 8.75px;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
manager = {
|
||||||
|
show_hidden = true;
|
||||||
|
sort_by = "natural";
|
||||||
|
sort_dir_first = true;
|
||||||
|
linemode = "size";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
options = [
|
||||||
|
"--cmd cd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/1-everforest.jpg
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/gruvbox-1.jpg
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/kanagawa-1.png
|
||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/nord-1.png
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
myConfig = {
|
||||||
|
nixos = {
|
||||||
|
username = "kenji";
|
||||||
|
hostname = "hakase";
|
||||||
|
timezone = "America/Chicago";
|
||||||
|
shell = "fish"; # FIXME: unassigned variable
|
||||||
|
};
|
||||||
|
git = {
|
||||||
|
username = "kenji";
|
||||||
|
email = "kenji@hakase";
|
||||||
|
defaultBranch = "master";
|
||||||
|
};
|
||||||
|
ssh = {
|
||||||
|
# FIXME: anonymize
|
||||||
|
extraConfig = ''
|
||||||
|
Host macair
|
||||||
|
User biscuit
|
||||||
|
HostName 192.168.68.81
|
||||||
|
|
||||||
|
Host gitea.sakamoto.dev
|
||||||
|
User kenji
|
||||||
|
ProxyCommand cloudflared access ssh --hostname %h
|
||||||
|
HostName gitea.sakamoto.dev
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
terminal = {
|
||||||
|
default = ["ghostty.desktop"];
|
||||||
|
aliases = {
|
||||||
|
update = "sudo nixos-rebuild switch --flake ~/.config/nixos-new/#hakase";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprland = {
|
||||||
|
monitors = ["HDMI-A-1, 1920x1080@120, auto, 1"];
|
||||||
|
};
|
||||||
|
firefox = {
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Home Manager";
|
||||||
|
url = "https://mynixos.com/home-manager/options/programs";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "YouTube";
|
||||||
|
url = "https://youtube.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
newtabpage = [
|
||||||
|
{
|
||||||
|
title = "Dashboard";
|
||||||
|
url = "https://dash.sakamoto.dev";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+606
-209
File diff suppressed because it is too large
Load Diff
@@ -1,102 +1,57 @@
|
|||||||
{
|
{
|
||||||
description = "A very basic flake";
|
description = "Hakase Configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # ensures version follows nixpkgs
|
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
home-manager = {
|
||||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
astal.url = "github:aylur/astal";
|
};
|
||||||
astal.inputs.nixpkgs.follows = "nixpkgs";
|
hyprland = {
|
||||||
|
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
ags.url = "github:aylur/ags";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
ags.inputs.nixpkgs.follows = "nixpkgs";
|
};
|
||||||
|
nixovim = {
|
||||||
hyprpanel.url = "github:Jas-SinghFSU/Hyprpanel";
|
# FIXME: treesitter does not install automatically (disabled due to read-only problems)
|
||||||
hyprpanel.inputs.nixpkgs.follows = "nixpkgs";
|
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
stylix = {
|
||||||
|
url = "github:nix-community/stylix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
ags,
|
stylix,
|
||||||
astal,
|
nixovim, # FIXME: should be inside of modules
|
||||||
hyprpanel,
|
sops-nix,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
lib = nixpkgs.lib;
|
config = import ./config.nix;
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
args =
|
||||||
|
{
|
||||||
|
inherit inputs system;
|
||||||
|
}
|
||||||
|
// config;
|
||||||
in {
|
in {
|
||||||
# TODO: migrate to another nix file.
|
|
||||||
# packages.${system}.default = pkgs.stdenv.mkDerivation {
|
|
||||||
# pname = "marble";
|
|
||||||
# src = ./marble;
|
|
||||||
# dontUnpack = true;
|
|
||||||
#
|
|
||||||
# nativeBuildInputs = with pkgs; [
|
|
||||||
# wrapGAppsHook
|
|
||||||
# gobject-introspection
|
|
||||||
# ];
|
|
||||||
#
|
|
||||||
# buildInputs =
|
|
||||||
# (with astal.packages.${system}; [
|
|
||||||
# astal3
|
|
||||||
# io
|
|
||||||
# apps
|
|
||||||
# battery
|
|
||||||
# bluetooth
|
|
||||||
# hyprland
|
|
||||||
# mpris
|
|
||||||
# network
|
|
||||||
# notifd
|
|
||||||
# powerprofiles
|
|
||||||
# tray
|
|
||||||
# wireplumber
|
|
||||||
# ])
|
|
||||||
# ++ (with pkgs; [
|
|
||||||
# gjs
|
|
||||||
# ]);
|
|
||||||
#
|
|
||||||
# preFixup = ''
|
|
||||||
# gappsWrapperArgs+=(
|
|
||||||
# --prefix PATH : ${with pkgs;
|
|
||||||
# lib.makeBinPath [
|
|
||||||
# dart-sass
|
|
||||||
# fzf
|
|
||||||
# ]}
|
|
||||||
# )
|
|
||||||
# '';
|
|
||||||
#
|
|
||||||
# installPhase = ''
|
|
||||||
# mkdir -p $out/bin
|
|
||||||
# install $src $out/bin/marble
|
|
||||||
# '';
|
|
||||||
# }; # END TODO
|
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
biscuit = lib.nixosSystem {
|
hakase = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {inherit inputs system;};
|
specialArgs = args;
|
||||||
inherit system;
|
|
||||||
modules = [
|
modules = [
|
||||||
./nixos/configuration.nix
|
home-manager.nixosModules.home-manager
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
./hosts/hakase/configuration.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
homeConfigurations = {
|
|
||||||
biscuit = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
overlays = [inputs.hyprpanel.overlay];
|
|
||||||
};
|
|
||||||
# inherit pkgs;
|
|
||||||
extraSpecialArgs = {inherit inputs system;};
|
|
||||||
modules = [./home-manager/home.nix];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
inputs, outputs, lib, config, pkgs, ...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../modules/editor.nix
|
|
||||||
../modules/terminal.nix
|
|
||||||
../modules/wayland.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = "biscuit";
|
|
||||||
homeDirectory = "/home/biscuit";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [];
|
|
||||||
home.sessionVariables = {};
|
|
||||||
|
|
||||||
programs.git.enable = true;
|
|
||||||
programs.neovim.enable = true;
|
|
||||||
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
../modules/home/terminal.nix
|
||||||
|
../modules/home/apps.nix
|
||||||
|
../modules/home/apps-optional.nix
|
||||||
|
../modules/home/hyprland.nix
|
||||||
|
../modules/home/waybar.nix
|
||||||
|
../modules/home/theme.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.stateVersion = "25.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../modules/system/default.nix
|
||||||
|
../../modules/system/hyprland.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/mapper/luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714".device = "/dev/disk/by-uuid/f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/72BA-AF9B";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
{ ... }: {
|
|
||||||
imports = [
|
|
||||||
../packages/nvim/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/jellyfin-tui/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/yazi/home.nix
|
||||||
|
../../apps/gemini/home.nix
|
||||||
|
../../apps/firefox/home.nix
|
||||||
|
../../apps/starship/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/hyprland/home.nix
|
||||||
|
../../apps/walker/home.nix
|
||||||
|
../../apps/hyprpaper/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/neovim/neovim.nix
|
||||||
|
../../apps/git/home.nix
|
||||||
|
../../apps/zoxide/home.nix
|
||||||
|
../../apps/fish/home.nix
|
||||||
|
../../apps/ghostty/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/stylix/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/waybar/home.nix
|
||||||
|
../../apps/waybar/deps.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
imports = [
|
|
||||||
../system/firefox/default.nix
|
|
||||||
../system/astal/default.nix
|
|
||||||
../system/hyprland/default.nix
|
|
||||||
../system/fonts/default.nix
|
|
||||||
../system/cursor/default.nix
|
|
||||||
../system/development/default.nix
|
|
||||||
../system/theme/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
../../system/time.nix
|
||||||
|
../../system/boot.nix
|
||||||
|
../../system/amd.nix
|
||||||
|
../../system/hardware.nix
|
||||||
|
../../system/home-manager.nix
|
||||||
|
../../system/services.nix
|
||||||
|
../../system/user.nix
|
||||||
|
../../system/version.nix
|
||||||
|
../../system/fonts.nix
|
||||||
|
../../system/programs.nix
|
||||||
|
../../system/security.nix
|
||||||
|
../../system/variables.nix
|
||||||
|
];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# FIXME: must be on their own app
|
||||||
|
git
|
||||||
|
cloudflared
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/hyprland/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
imports = [
|
|
||||||
../packages/zsh/default.nix
|
|
||||||
../packages/kitty/default.nix
|
|
||||||
../packages/fastfetch/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
{ ... }: {
|
|
||||||
imports = [
|
|
||||||
../packages/hyprland/default.nix
|
|
||||||
../packages/waybar/default.nix
|
|
||||||
../packages/ags/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
{ config, pkgs, inputs, ... }: {
|
|
||||||
imports =
|
|
||||||
[ # Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
../modules/system.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "nixos"; # Define your hostname.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Enable bluetooth
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
services.blueman.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "America/Chicago";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users = {
|
|
||||||
defaultUserShell = pkgs.bash;
|
|
||||||
users.biscuit = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Biscuit";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
packages = with pkgs; [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# List packages installed in system profile.
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
wl-clipboard
|
|
||||||
vim # Default editor
|
|
||||||
wget
|
|
||||||
git
|
|
||||||
home-manager
|
|
||||||
zsh
|
|
||||||
p7zip
|
|
||||||
btop
|
|
||||||
libnotify
|
|
||||||
astal.apps
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Enable non-bash shell
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
|
|
||||||
### ----------------------------------------
|
|
||||||
### DESKTOP START
|
|
||||||
services.xserver.displayManager.gdm.enable = true;
|
|
||||||
hardware = {
|
|
||||||
# pulseaudio.enable = true;
|
|
||||||
graphics.enable = true;
|
|
||||||
nvidia.modesetting.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
### DESKTOP END
|
|
||||||
### ----------------------------------------
|
|
||||||
|
|
||||||
# Enable experimental features
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
#nixpkgs = {
|
|
||||||
# overlays = [
|
|
||||||
# (final: prev: {
|
|
||||||
# nvchad = inputs.nvchad4nix.packages.${pkgs.system}.nvchad;
|
|
||||||
#})
|
|
||||||
#];
|
|
||||||
#};
|
|
||||||
# System state version
|
|
||||||
system.stateVersion = "24.11"; # Ensure this matches your NixOS version
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,41 +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" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/disk/by-uuid/8552e23a-af9f-4af8-947f-9ea6ff1e7195";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{ device = "/dev/disk/by-uuid/00BB-80E9";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
|
||||||
[ { device = "/dev/disk/by-uuid/2a916b88-8039-481b-9c30-4edd0f329eb3"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# 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.eno1.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
@girs/
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import { App } from "astal/gtk3"
|
|
||||||
import style from "./style.scss"
|
|
||||||
import Bar from "./widget/Bar"
|
|
||||||
|
|
||||||
App.start({
|
|
||||||
css: style,
|
|
||||||
instanceName: "js",
|
|
||||||
requestHandler(request, res) {
|
|
||||||
print(request)
|
|
||||||
res("ok")
|
|
||||||
},
|
|
||||||
main: () => App.get_monitors().map(Bar),
|
|
||||||
})
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
declare const SRC: string
|
|
||||||
|
|
||||||
declare module "inline:*" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.scss" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.blp" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.css" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "astal-shell",
|
|
||||||
"dependencies": {
|
|
||||||
"astal": "/home/biscuit/.local/share/ags"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
@use "sass:color";
|
|
||||||
|
|
||||||
$bg: #212223;
|
|
||||||
$fg: #f1f1f1;
|
|
||||||
$accent: #378DF7;
|
|
||||||
$radius: 7px;
|
|
||||||
|
|
||||||
window.Bar {
|
|
||||||
border: none;
|
|
||||||
box-shadow: none;
|
|
||||||
background-color: $bg;
|
|
||||||
color: $fg;
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
label {
|
|
||||||
margin: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Workspaces {
|
|
||||||
button {
|
|
||||||
all: unset;
|
|
||||||
background-color: transparent;
|
|
||||||
|
|
||||||
&:hover label {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.84);
|
|
||||||
border-color: color.adjust($accent, $alpha: -0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active label {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.8)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
transition: 200ms;
|
|
||||||
padding: 0 8px;
|
|
||||||
margin: 2px;
|
|
||||||
border-radius: $radius;
|
|
||||||
border: 1pt solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.focused label {
|
|
||||||
color: $accent;
|
|
||||||
border-color: $accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.SysTray {
|
|
||||||
margin-right: 8px;
|
|
||||||
|
|
||||||
button {
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.FocusedClient {
|
|
||||||
color: $accent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Media .Cover {
|
|
||||||
min-height: 1.2em;
|
|
||||||
min-width: 1.2em;
|
|
||||||
border-radius: $radius;
|
|
||||||
background-position: center;
|
|
||||||
background-size: contain;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Battery label {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.AudioSlider {
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
icon {
|
|
||||||
margin-right: .6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
& {
|
|
||||||
margin: 0 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
trough {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.8);
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
highlight {
|
|
||||||
background-color: $accent;
|
|
||||||
min-height: .8em;
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
slider {
|
|
||||||
background-color: $fg;
|
|
||||||
border-radius: $radius;
|
|
||||||
min-height: 1em;
|
|
||||||
min-width: 1em;
|
|
||||||
margin: -.2em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://json.schemastore.org/tsconfig",
|
|
||||||
"compilerOptions": {
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"strict": true,
|
|
||||||
"target": "ES2022",
|
|
||||||
"module": "ES2022",
|
|
||||||
"moduleResolution": "Bundler",
|
|
||||||
// "checkJs": true,
|
|
||||||
// "allowJs": true,
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
"jsxImportSource": "astal/gtk3",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
import { App } from "astal/gtk3"
|
|
||||||
import { Variable, GLib, bind } from "astal"
|
|
||||||
import { Astal, Gtk, Gdk } from "astal/gtk3"
|
|
||||||
import Hyprland from "gi://AstalHyprland"
|
|
||||||
import Mpris from "gi://AstalMpris"
|
|
||||||
import Battery from "gi://AstalBattery"
|
|
||||||
import Wp from "gi://AstalWp"
|
|
||||||
import Network from "gi://AstalNetwork"
|
|
||||||
import Tray from "gi://AstalTray"
|
|
||||||
|
|
||||||
function SysTray() {
|
|
||||||
const tray = Tray.get_default()
|
|
||||||
|
|
||||||
return <box className="SysTray">
|
|
||||||
{bind(tray, "items").as(items => items.map(item => (
|
|
||||||
<menubutton
|
|
||||||
tooltipMarkup={bind(item, "tooltipMarkup")}
|
|
||||||
usePopover={false}
|
|
||||||
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
|
|
||||||
menuModel={bind(item, "menuModel")}>
|
|
||||||
<icon gicon={bind(item, "gicon")} />
|
|
||||||
</menubutton>
|
|
||||||
)))}
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function Wifi() {
|
|
||||||
const network = Network.get_default()
|
|
||||||
const wifi = bind(network, "wifi")
|
|
||||||
|
|
||||||
return <box visible={wifi.as(Boolean)}>
|
|
||||||
{wifi.as(wifi => wifi && (
|
|
||||||
<icon
|
|
||||||
tooltipText={bind(wifi, "ssid").as(String)}
|
|
||||||
className="Wifi"
|
|
||||||
icon={bind(wifi, "iconName")}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</box>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function AudioSlider() {
|
|
||||||
const speaker = Wp.get_default()?.audio.defaultSpeaker!
|
|
||||||
|
|
||||||
return <box className="AudioSlider" css="min-width: 140px">
|
|
||||||
<icon icon={bind(speaker, "volumeIcon")} />
|
|
||||||
<slider
|
|
||||||
hexpand
|
|
||||||
onDragged={({ value }) => speaker.volume = value}
|
|
||||||
value={bind(speaker, "volume")}
|
|
||||||
/>
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function BatteryLevel() {
|
|
||||||
const bat = Battery.get_default()
|
|
||||||
|
|
||||||
return <box className="Battery"
|
|
||||||
visible={bind(bat, "isPresent")}>
|
|
||||||
<icon icon={bind(bat, "batteryIconName")} />
|
|
||||||
<label label={bind(bat, "percentage").as(p =>
|
|
||||||
`${Math.floor(p * 100)} %`
|
|
||||||
)} />
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function Media() {
|
|
||||||
const mpris = Mpris.get_default()
|
|
||||||
|
|
||||||
return <box className="Media">
|
|
||||||
{bind(mpris, "players").as(ps => ps[0] ? (
|
|
||||||
<box>
|
|
||||||
<box
|
|
||||||
className="Cover"
|
|
||||||
valign={Gtk.Align.CENTER}
|
|
||||||
css={bind(ps[0], "coverArt").as(cover =>
|
|
||||||
`background-image: url('${cover}');`
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
label={bind(ps[0], "metadata").as(() =>
|
|
||||||
`${ps[0].title} - ${ps[0].artist}`
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</box>
|
|
||||||
) : (
|
|
||||||
<label label="Biscuit" />
|
|
||||||
))}
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function Workspaces() {
|
|
||||||
const hypr = Hyprland.get_default();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<box className="Workspaces">
|
|
||||||
{bind(hypr, "focusedWorkspace").as((fw) => {
|
|
||||||
if (!fw) return null;
|
|
||||||
|
|
||||||
// Determine the current chunk of 5 visible workspace buttons
|
|
||||||
const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1;
|
|
||||||
const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i);
|
|
||||||
|
|
||||||
return visibleIds.map((id) => {
|
|
||||||
// Try to get the real workspace, fall back to a dummy one if it doesn't exist
|
|
||||||
const ws =
|
|
||||||
hypr.workspaces.find((w) => w.id === id) ??
|
|
||||||
Hyprland.Workspace.dummy(id, null);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<button
|
|
||||||
className={fw.id === id ? "focused" : ""}
|
|
||||||
onClick={() => ws.focus()}
|
|
||||||
>
|
|
||||||
{id}
|
|
||||||
</button>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})}
|
|
||||||
</box>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function FocusedClient() {
|
|
||||||
const hypr = Hyprland.get_default()
|
|
||||||
const focused = bind(hypr, "focusedClient")
|
|
||||||
|
|
||||||
return <box
|
|
||||||
className="Focused"
|
|
||||||
visible={focused.as(Boolean)}>
|
|
||||||
{focused.as(client => (
|
|
||||||
client && <label label={bind(client, "title").as(String)} />
|
|
||||||
))}
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function Time({ format = "%H:%M %a %b %e" }) {
|
|
||||||
const time = Variable<string>("").poll(1000, () =>
|
|
||||||
GLib.DateTime.new_now_local().format(format)!)
|
|
||||||
|
|
||||||
return <label
|
|
||||||
className="Time"
|
|
||||||
onDestroy={() => time.drop()}
|
|
||||||
label={time()}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Bar(monitor: Gdk.Monitor) {
|
|
||||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
|
||||||
|
|
||||||
return <window
|
|
||||||
className="Bar"
|
|
||||||
gdkmonitor={monitor}
|
|
||||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
|
||||||
anchor={TOP | LEFT | RIGHT}>
|
|
||||||
<centerbox>
|
|
||||||
<box hexpand halign={Gtk.Align.START}>
|
|
||||||
<Time />
|
|
||||||
</box>
|
|
||||||
<box>
|
|
||||||
<Workspaces />
|
|
||||||
</box>
|
|
||||||
<box hexpand halign={Gtk.Align.END} >
|
|
||||||
<SysTray />
|
|
||||||
<Wifi />
|
|
||||||
<AudioSlider />
|
|
||||||
<BatteryLevel />
|
|
||||||
</box>
|
|
||||||
</centerbox>
|
|
||||||
</window>
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# add the home manager module
|
|
||||||
imports = [
|
|
||||||
inputs.ags.homeManagerModules.default
|
|
||||||
# inputs.astal.homeManagerModules.default
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
# inputs.astal.packages.${system}.default
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.ags = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# symlink to ~/.config/ags
|
|
||||||
configDir = ./custom;
|
|
||||||
|
|
||||||
# additional packages to add to gjs's runtime
|
|
||||||
extraPackages = with inputs.ags.packages.${pkgs.system}; [
|
|
||||||
apps
|
|
||||||
auth
|
|
||||||
battery
|
|
||||||
bluetooth
|
|
||||||
hyprland
|
|
||||||
mpris
|
|
||||||
network
|
|
||||||
notifd
|
|
||||||
powerprofiles
|
|
||||||
tray
|
|
||||||
wireplumber
|
|
||||||
|
|
||||||
pkgs.fzf
|
|
||||||
pkgs.dart-sass
|
|
||||||
pkgs.esbuild
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# programs.astal = {
|
|
||||||
# enable = true;
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
Submodule packages/ags/epik-shell deleted from 9002206c8b
@@ -1,3 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
programs.fastfetch.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#################
|
|
||||||
### AUTOSTART ###
|
|
||||||
#################
|
|
||||||
|
|
||||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
|
||||||
# Or execute your favorite apps at launch like this:
|
|
||||||
$terminal = kitty
|
|
||||||
$bar = ags run
|
|
||||||
$cursor = Bibata-Modern-Ice
|
|
||||||
|
|
||||||
exec-once = hyprctl setcursor $cursor 24
|
|
||||||
exec-once = $bar
|
|
||||||
exec-once = [workspace 20 silent] kitty --single-instance --hold fastfetch
|
|
||||||
exec-once = [workspace 20 silent] firefox
|
|
||||||
exec-once = [workspace 1] kitty --single-instance --hold fastfetch
|
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
env = XCURSOR_SIZE,24
|
|
||||||
env = HYPRCURSOR_SIZE,24
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,191 +0,0 @@
|
|||||||
|
|
||||||
################
|
|
||||||
### MONITORS ###
|
|
||||||
################
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
|
||||||
monitor=,highres@highrr,auto,auto
|
|
||||||
|
|
||||||
|
|
||||||
#####################
|
|
||||||
### LOOK AND FEEL ###
|
|
||||||
#####################
|
|
||||||
|
|
||||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
|
||||||
general {
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 5
|
|
||||||
|
|
||||||
border_size = 2
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
|
||||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
|
||||||
col.inactive_border = rgba(595959aa)
|
|
||||||
|
|
||||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
|
||||||
resize_on_border = false
|
|
||||||
|
|
||||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
|
||||||
allow_tearing = false
|
|
||||||
|
|
||||||
layout = dwindle
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
|
||||||
decoration {
|
|
||||||
rounding = 0
|
|
||||||
rounding_power = 2
|
|
||||||
|
|
||||||
# Change transparency of focused and unfocused windows
|
|
||||||
active_opacity = 1.0
|
|
||||||
inactive_opacity = 1.0
|
|
||||||
|
|
||||||
shadow {
|
|
||||||
enabled = true
|
|
||||||
range = 4
|
|
||||||
render_power = 3
|
|
||||||
color = rgba(1a1a1aee)
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
size = 3
|
|
||||||
passes = 1
|
|
||||||
|
|
||||||
vibrancy = 0.1696
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
|
||||||
# animations {
|
|
||||||
# enabled = yes, please :)
|
|
||||||
#
|
|
||||||
# # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
#
|
|
||||||
# bezier = easeOutQuint,0.23,1,0.32,1
|
|
||||||
# bezier = easeInOutCubic,0.65,0.05,0.36,1
|
|
||||||
# bezier = linear,0,0,1,1
|
|
||||||
# bezier = almostLinear,0.5,0.5,0.75,1.0
|
|
||||||
# bezier = quick,0.15,0,0.1,1
|
|
||||||
#
|
|
||||||
# animation = global, 1, 10, default
|
|
||||||
# animation = border, 1, 5.39, easeOutQuint
|
|
||||||
# animation = windows, 1, 4.79, easeOutQuint
|
|
||||||
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
|
||||||
# animation = windowsOut, 1, 1.49, linear, popin 87%
|
|
||||||
# animation = fadeIn, 1, 1.73, almostLinear
|
|
||||||
# animation = fadeOut, 1, 1.46, almostLinear
|
|
||||||
# animation = fade, 1, 3.03, quick
|
|
||||||
# animation = layers, 1, 3.81, easeOutQuint
|
|
||||||
# animation = layersIn, 1, 4, easeOutQuint, fade
|
|
||||||
# animation = layersOut, 1, 1.5, linear, fade
|
|
||||||
# animation = fadeLayersIn, 1, 1.79, almostLinear
|
|
||||||
# animation = fadeLayersOut, 1, 1.39, almostLinear
|
|
||||||
# animation = workspaces, 1, 1.94, almostLinear, fade
|
|
||||||
# animation = workspacesIn, 1, 1.21, almostLinear, fade
|
|
||||||
# animation = workspacesOut, 1, 1.94, almostLinear, fade
|
|
||||||
# }
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = true
|
|
||||||
# Animation curves
|
|
||||||
|
|
||||||
bezier = linear, 0, 0, 1, 1
|
|
||||||
bezier = md3_standard, 0.2, 0, 0, 1
|
|
||||||
bezier = md3_decel, 0.05, 0.7, 0.1, 1
|
|
||||||
bezier = md3_accel, 0.3, 0, 0.8, 0.15
|
|
||||||
bezier = overshot, 0.05, 0.9, 0.1, 1.1
|
|
||||||
bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
|
|
||||||
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
|
|
||||||
bezier = menu_decel, 0.1, 1, 0, 1
|
|
||||||
bezier = menu_accel, 0.38, 0.04, 1, 0.07
|
|
||||||
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
|
|
||||||
bezier = easeOutCirc, 0, 0.55, 0.45, 1
|
|
||||||
bezier = easeOutExpo, 0.16, 1, 0.3, 1
|
|
||||||
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
|
|
||||||
bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
|
|
||||||
# Animation configs
|
|
||||||
animation = windows, 1, 3, md3_decel, popin 60%
|
|
||||||
animation = windowsIn, 1, 3, md3_decel, popin 60%
|
|
||||||
animation = windowsOut, 1, 3, md3_accel, popin 60%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = fade, 1, 3, md3_decel
|
|
||||||
# animation = layers, 1, 2, md3_decel, slide
|
|
||||||
animation = layersIn, 1, 3, menu_decel, slide
|
|
||||||
animation = layersOut, 1, 1.6, menu_accel
|
|
||||||
animation = fadeLayersIn, 1, 2, menu_decel
|
|
||||||
animation = fadeLayersOut, 1, 0.5, menu_accel
|
|
||||||
animation = workspaces, 1, 7, menu_decel, slide
|
|
||||||
# animation = workspaces, 1, 2.5, softAcDecel, slide
|
|
||||||
# animation = workspaces, 1, 7, menu_decel, slidefade 15%
|
|
||||||
# animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15%
|
|
||||||
animation = specialWorkspace, 1, 3, md3_decel, slidevert
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
|
||||||
# "Smart gaps" / "No gaps when only"
|
|
||||||
# uncomment all if you wish to use that.
|
|
||||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
|
||||||
# workspace = f[1], gapsout:0, gapsin:0
|
|
||||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
|
||||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
|
||||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
|
||||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
dwindle {
|
|
||||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = true # You probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
master {
|
|
||||||
new_status = master
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
|
||||||
misc {
|
|
||||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
|
||||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#############
|
|
||||||
### INPUT ###
|
|
||||||
#############
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 1
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = false
|
|
||||||
}
|
|
||||||
|
|
||||||
numlock_by_default = true
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
|
||||||
gestures {
|
|
||||||
workspace_swipe = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Example per-device config
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
|
||||||
device {
|
|
||||||
name = epic-mouse-v1
|
|
||||||
sensitivity = -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
###################
|
|
||||||
### KEYBINDINGS ###
|
|
||||||
###################
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
|
||||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
|
||||||
$terminal = kitty --single-instance
|
|
||||||
$browser = firefox
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, Return, exec, $terminal
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod, M, exit,
|
|
||||||
bind = $mainMod, E, exec, $fileManager
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, R, exec, $menu
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, B, togglesplit, # dwindle
|
|
||||||
bind = $mainMod, W, exec, $browser
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
bind = $mainMod, H, movefocus, l
|
|
||||||
bind = $mainMod, L, movefocus, r
|
|
||||||
bind = $mainMod, K, movefocus, u
|
|
||||||
bind = $mainMod, J, movefocus, d
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
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
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
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
|
|
||||||
|
|
||||||
# Example special workspace (scratchpad)
|
|
||||||
bind = $mainMod, S, togglespecialworkspace, magic
|
|
||||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
# Laptop multimedia keys for volume and LCD brightness
|
|
||||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
||||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
|
||||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
|
||||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
|
||||||
|
|
||||||
# Requires playerctl
|
|
||||||
bindl = , XF86AudioNext, exec, playerctl next
|
|
||||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
|
||||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
##############################
|
|
||||||
### WINDOWS AND WORKSPACES ###
|
|
||||||
##############################
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
|
||||||
|
|
||||||
# Example windowrule
|
|
||||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
|
||||||
|
|
||||||
# Ignore maximize requests from apps. You'll probably like this.
|
|
||||||
windowrule = suppressevent maximize, class:.*
|
|
||||||
|
|
||||||
# Fix some dragging issues with XWayland
|
|
||||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
|
|
||||||
home.file.".config/hypr/hyprland.conf" = {
|
|
||||||
source = builtins.toPath ./hyprland.conf;
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/hypr/hyprland" = {
|
|
||||||
source = builtins.toPath ./custom;
|
|
||||||
recursive = true;
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
source=./hyprland/keybinds.conf
|
|
||||||
source=./hyprland/autostart.conf
|
|
||||||
source=./hyprland/env.conf
|
|
||||||
source=./hyprland/general.conf
|
|
||||||
source=./hyprland/rules.conf
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.kitty
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.kitty.enable = true;
|
|
||||||
programs.kitty.settings = {
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
window_padding_width = 10;
|
|
||||||
font_size = 12.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
nvimSource = pkgs.fetchFromGitea {
|
|
||||||
domain = "git.sakamoto.dev";
|
|
||||||
owner = "kenji";
|
|
||||||
repo = "nvim";
|
|
||||||
rev = "5fc3341ac43b35fd4032c07925927d7f1e82886c";
|
|
||||||
sha256 = "sha256-YbP814fKOFuCWBRwlccd4nx/h8sdMgiJQu54thRLsK8=";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.lazygit
|
|
||||||
pkgs.ripgrep
|
|
||||||
];
|
|
||||||
home.file.".config/nvim" = {
|
|
||||||
# BUG requires --impure
|
|
||||||
source = /home/biscuit/Nixos/packages/nvim/nvchad;
|
|
||||||
# source = nvimSource;
|
|
||||||
recursive = true;
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
# Example use: provide it as a source
|
|
||||||
# You could pass `nvimSource` to a program, or maybe use it in home.file, etc.
|
|
||||||
}
|
|
||||||
|
|
||||||
Submodule packages/nvim/nvchad deleted from 2b4293a4c1
@@ -1,152 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "top",
|
|
||||||
"height": 45,
|
|
||||||
"spacing": 0,
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces",
|
|
||||||
"tray",
|
|
||||||
"custom/lock",
|
|
||||||
"custom/reboot",
|
|
||||||
"custom/power",
|
|
||||||
"clock"
|
|
||||||
],
|
|
||||||
"modules-center": ["hyprland/window"],
|
|
||||||
"modules-right": [
|
|
||||||
"network",
|
|
||||||
"battery",
|
|
||||||
"bluetooth",
|
|
||||||
"pulseaudio",
|
|
||||||
"backlight",
|
|
||||||
"custom/temperature",
|
|
||||||
"memory",
|
|
||||||
"cpu"
|
|
||||||
],
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"disable-scroll": false,
|
|
||||||
"all-outputs": true,
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-click": "activate",
|
|
||||||
"persistent-workspaces": {
|
|
||||||
"*":[1,2,3,4,5,6,7]
|
|
||||||
},
|
|
||||||
"format-icons":{
|
|
||||||
"1": "",
|
|
||||||
"2": "",
|
|
||||||
"3": "",
|
|
||||||
"4": "",
|
|
||||||
"5": "",
|
|
||||||
"6": "",
|
|
||||||
"7": "",
|
|
||||||
"active": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"custom/lock": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "hyprlock",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "锁屏"
|
|
||||||
},
|
|
||||||
"custom/reboot": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "systemctl reboot",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "重启"
|
|
||||||
},
|
|
||||||
"custom/power": {
|
|
||||||
"format": " ",
|
|
||||||
"on-click": "systemctl poweroff",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "关机"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"format-wifi": " {essid} ",
|
|
||||||
"format-ethernet": " Wired ",
|
|
||||||
"tooltip-format": "<span color='#FF1493'> </span>{bandwidthUpBytes} <span color='#00BFFF'> </span>{bandwidthDownBytes}",
|
|
||||||
"format-linked": " {ifname} (No IP) ",
|
|
||||||
"format-disconnected": " Disconnected ",
|
|
||||||
"format-alt": " {signalStrength}% ",
|
|
||||||
"interval": 1
|
|
||||||
},
|
|
||||||
"battery": {
|
|
||||||
"states": {
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": " {icon} {capacity}% ",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"interval": 1,
|
|
||||||
"format-icons": ["", "", "", "", ""],
|
|
||||||
"tooltip": true
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon}{volume}% ",
|
|
||||||
"format-muted": " 0% ",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": " ",
|
|
||||||
"hands-free": " ",
|
|
||||||
"headset": " ",
|
|
||||||
"phone": " ",
|
|
||||||
"portable": " ",
|
|
||||||
"car": " ",
|
|
||||||
"default": [
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" "
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"on-click-right": "pavucontrol -t 3",
|
|
||||||
"on-click": "pactl -- set-sink-mute 0 toggle",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "当前系统声音: {volume}%"
|
|
||||||
},
|
|
||||||
"custom/temperature": {
|
|
||||||
"exec": "sensors | awk '/^Package id 0:/ {print int($4)}'",
|
|
||||||
"format": " {}°C ",
|
|
||||||
"interval": 5,
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "当前 CPU 温度: {}°C"
|
|
||||||
},
|
|
||||||
"memory": {
|
|
||||||
"format": " {used:0.1f}G/{total:0.1f}G ",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "当前内存占比: {used:0.2f}G/{total:0.2f}G"
|
|
||||||
},
|
|
||||||
"cpu": {
|
|
||||||
"format": " {usage}% ",
|
|
||||||
"tooltip": true
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"interval": 1,
|
|
||||||
"timezone": "Asia/Chengdu",
|
|
||||||
"format": " {:%H:%M} ",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "{:L%Y 年 %m 月 %d 日, %A}"
|
|
||||||
},
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 17,
|
|
||||||
"spacing": 6
|
|
||||||
},
|
|
||||||
"backlight": {
|
|
||||||
"device": "intel_backlight",
|
|
||||||
"format": "{icon}{percent}% ",
|
|
||||||
"tooltip": true,
|
|
||||||
"tooltip-format": "当前屏幕亮度: {percent}%",
|
|
||||||
"format-icons": [
|
|
||||||
" ", // 暗 - 深灰
|
|
||||||
" ", // 中 - 灰
|
|
||||||
" ", // 亮 - 柠檬黄
|
|
||||||
" " // 最亮 - 金色
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bluetooth": {
|
|
||||||
"format": " {status} ",
|
|
||||||
"format-connected": " {device_alias} ",
|
|
||||||
"format-connected-battery": " {device_alias}{device_battery_percentage}% ",
|
|
||||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
|
||||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
|
||||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
|
||||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
* {
|
|
||||||
font-family: "CaskaydiaCove Nerd Font", "Font Awesome 6 Free", "Font Awesome 6 Free Solid";
|
|
||||||
font-size: 16px;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
border: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces{
|
|
||||||
background-color: rgba(24,24,37,1.0);
|
|
||||||
border: none;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray{
|
|
||||||
margin: 6px 3px;
|
|
||||||
background-color: rgba(36, 36, 52, 1.0);
|
|
||||||
padding: 6px 12px; /* 保持内部间距 */
|
|
||||||
border-radius: 6px;
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#waybar {
|
|
||||||
background-color: #181825;
|
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window,
|
|
||||||
#clock,
|
|
||||||
#custom-power,
|
|
||||||
#custom-reboot,
|
|
||||||
#bluetooth,
|
|
||||||
#battery,
|
|
||||||
#pulseaudio,
|
|
||||||
#backlight,
|
|
||||||
#custom-temperature,
|
|
||||||
#memory,
|
|
||||||
#cpu,
|
|
||||||
#network,
|
|
||||||
#custom-lock{
|
|
||||||
border-radius: 4px;
|
|
||||||
margin: 6px 3px;
|
|
||||||
padding: 6px 12px;
|
|
||||||
background-color: #1e1e2e;
|
|
||||||
color: #181825;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
background-color: #89b4fa;
|
|
||||||
}
|
|
||||||
#custom-power{
|
|
||||||
background-color: #f38ba8;
|
|
||||||
}
|
|
||||||
#custom-reboot{
|
|
||||||
background-color: #a6e3a1;
|
|
||||||
}
|
|
||||||
#bluetooth{
|
|
||||||
background-color: #f9e2af;
|
|
||||||
}
|
|
||||||
#battery{
|
|
||||||
background-color: #cba6f7;
|
|
||||||
}
|
|
||||||
#pulseaudio{
|
|
||||||
background-color: #89dceb;
|
|
||||||
}
|
|
||||||
#backlight{
|
|
||||||
background-color: #a6a3a1;
|
|
||||||
}
|
|
||||||
#custom-temperature{
|
|
||||||
background-color: #74c7ec;
|
|
||||||
}
|
|
||||||
#memory{
|
|
||||||
background-color: #f7768e;
|
|
||||||
}
|
|
||||||
#cpu{
|
|
||||||
background-color: #f38ba8;
|
|
||||||
}
|
|
||||||
#network{
|
|
||||||
background-color: #fab387;
|
|
||||||
}
|
|
||||||
#custom-lock{
|
|
||||||
background-color: #94e2d5;
|
|
||||||
}
|
|
||||||
#window{
|
|
||||||
background-color: #74c7ec;
|
|
||||||
}
|
|
||||||
|
|
||||||
#waybar.hidden {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
all: initial;
|
|
||||||
/* Remove GTK theme values (waybar #1351) */
|
|
||||||
min-width: 0;
|
|
||||||
/* Fix weird spacing in materia (waybar #450) */
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
/* Use box-shadow instead of border so the text isn't offset */
|
|
||||||
padding: 6px 18px;
|
|
||||||
margin: 6px 3px;
|
|
||||||
border-radius: 4px;
|
|
||||||
background-color: rgba(36, 36, 52, 1.0);
|
|
||||||
color: #cdd6f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #1e1e2e;
|
|
||||||
background-color: #cdd6f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
box-shadow: inherit;
|
|
||||||
text-shadow: inherit;
|
|
||||||
color: #1e1e2e;
|
|
||||||
background-color: #cdd6f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 16px;
|
|
||||||
background-color: #131822;
|
|
||||||
color: #C0C0C0;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip label {
|
|
||||||
padding: 5px;
|
|
||||||
background-color: #131822;
|
|
||||||
color: #C0C0C0;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/waybar" = {
|
|
||||||
source = builtins.toPath ./custom;
|
|
||||||
recursive = true;
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
|
||||||
"blocks": [
|
|
||||||
{
|
|
||||||
"alignment": "left",
|
|
||||||
"segments": [
|
|
||||||
{
|
|
||||||
"foreground": "#ffdd86",
|
|
||||||
"style": "plain",
|
|
||||||
"template": "{{ .UserName }}@{{ .HostName }} ",
|
|
||||||
"type": "session"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"foreground": "#42a9ff",
|
|
||||||
"style": "plain",
|
|
||||||
"properties": {
|
|
||||||
"style": "full"
|
|
||||||
},
|
|
||||||
"template": "{{ .Path }} ",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"properties": {
|
|
||||||
"branch_icon": "",
|
|
||||||
"fetch_status": true
|
|
||||||
},
|
|
||||||
"style": "plain",
|
|
||||||
"template": "git:{{ if or (.Working.Changed) (.Staging.Changed) (gt .StashCount 0) }}<#ffdd86>{{ .HEAD }}</>{{ else }}{{ .HEAD }}{{ end }}{{ if .Staging.Changed }} <#98c379>{{ .Staging.String }}</>{{ end }}{{ if .Working.Changed }} <#d16971>{{ .Working.String }}</>{{ end }}",
|
|
||||||
"type": "git"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "prompt"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alignment": "left",
|
|
||||||
"newline": true,
|
|
||||||
"segments": [
|
|
||||||
{
|
|
||||||
"foreground": "#ffdd86",
|
|
||||||
"foreground_templates": [
|
|
||||||
"{{ if gt .Code 0 }}#42a9ff{{ end }}"
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"always_enabled": true
|
|
||||||
},
|
|
||||||
"style": "plain",
|
|
||||||
"template": "> ",
|
|
||||||
"type": "status"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "prompt"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 3
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.zoxide
|
|
||||||
pkgs.oh-my-posh
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.zoxide.enable = true;
|
|
||||||
programs.oh-my-posh.enable = true;
|
|
||||||
|
|
||||||
home.file.".config/oh-my-posh/config.omp.json" = {
|
|
||||||
source = ./custom/config.omp.json;
|
|
||||||
force = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
# {
|
|
||||||
# name = "zsh-autocomplete"; # completes history, commands, etc.
|
|
||||||
# src = pkgs.fetchFromGitHub {
|
|
||||||
# owner = "marlonrichert";
|
|
||||||
# repo = "zsh-autocomplete";
|
|
||||||
# rev = "762afacbf227ecd173e899d10a28a478b4c84a3f";
|
|
||||||
# sha256 = "1357hygrjwj5vd4cjdvxzrx967f1d2dbqm2rskbz5z1q6jri1hm3";
|
|
||||||
# }; # e.g., nix-prefetch-url --unpack https://github.com/marlonrichert/zsh-autocomplete/archive/762afacbf227ecd173e899d10a28a478b4c84a3f.tar.gz
|
|
||||||
# }
|
|
||||||
{
|
|
||||||
name = "vi-mode";
|
|
||||||
src = pkgs.zsh-vi-mode;
|
|
||||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "autosuggestion";
|
|
||||||
src = pkgs.zsh-autosuggestions;
|
|
||||||
file = "share/zsh-autosuggestions/zsh-autosuggestions.zsh";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
enableCompletion = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
shellAliases = {
|
|
||||||
ll = "ls -l";
|
|
||||||
upd = "sudo nixos-rebuild switch --flake ~/Nixos/#biscuit";
|
|
||||||
hupd = "home-manager switch --flake ~/Nixos/#biscuit --impure";
|
|
||||||
agu = "pkill gjs & ags run ~/Nixos/packages/ags/custom/app.ts &";
|
|
||||||
};
|
|
||||||
history.size = 10000;
|
|
||||||
oh-my-zsh = {
|
|
||||||
plugins = [ ];
|
|
||||||
enable = true;
|
|
||||||
theme = "robbyrussell";
|
|
||||||
extraConfig = ''
|
|
||||||
zstyle ':completion:*' completer _expand _complete _ignored _approximate _expand_alias
|
|
||||||
zstyle ':autocomplete:*' default-context curcontext
|
|
||||||
zstyle ':autocomplete:*' min-input 0
|
|
||||||
|
|
||||||
setopt HIST_FIND_NO_DUPS
|
|
||||||
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit
|
|
||||||
|
|
||||||
# setopt autocd # cd without writing 'cd'
|
|
||||||
setopt globdots # show dotfiles in autocomplete list
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
initContent = ''
|
|
||||||
# Oh-My-Posh initialization for Zsh
|
|
||||||
eval "$(oh-my-posh init zsh --config ~/.config/oh-my-posh/config.omp.json)"
|
|
||||||
|
|
||||||
# zsh-autocomplete
|
|
||||||
bindkey -M menuselect '^M' .accept-line # run code when selected completion
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
hello: ENC[AES256_GCM,data:0NxDMh13g5abuc46q8WYpcVxZalJalE+dIhWZr0Ta6u1pbcrA1HH/8PQnRUIew==,iv:lQz0qVjjWJ6jajApiJ8x/fhAhpPLpDICR4eZnu0dCVw=,tag:F9brrGmlpOGaeFxTEJA54w==,type:str]
|
||||||
|
example_key: ENC[AES256_GCM,data:IJeH/2DXBN/WL7SMOQ==,iv:SFhmVUSiMTWrNxCRbSnQj1/Q4L1J+1H+YDWXRqQGgfk=,tag:T0LxlvqPc0ajqWFe1NR+Vw==,type:str]
|
||||||
|
#ENC[AES256_GCM,data:BFKNA5aiPIt5oWQIF6a9Cw==,iv:ez3Omp4B6bBYlt1tlpTYSXAfi/SrbJ03ILDUetAnf20=,tag:CFd05yXHZhu+lzLIe95azg==,type:comment]
|
||||||
|
example_array:
|
||||||
|
- ENC[AES256_GCM,data:bh+AhmfAe9Tp0D6WGLI=,iv:WSOnTzHWhkNJUcyhvHizb9RheYFNESZbJJ+G79GMQJs=,tag:chpWcINudyQIiWgdgrzSXA==,type:str]
|
||||||
|
- ENC[AES256_GCM,data:U+vm05ISl8ldk21+vwk=,iv:MKrw0o1FZ6Hzt0c6/gagbZb1jV12FSOUwiLoXr3QPac=,tag:LXOGzJSxkbEDbrIQuzWMog==,type:str]
|
||||||
|
example_number: ENC[AES256_GCM,data:ZVyoML4H0yZF3g==,iv:WTEu085WG5byuAPaPbAR0wCkBoMwvL2F6A6pFGkiuck=,tag:ZDdUBzl7tUJUhXv3bUlnZg==,type:float]
|
||||||
|
example_booleans:
|
||||||
|
- ENC[AES256_GCM,data:kPkHPw==,iv:dgj2RjGkfsRJoEB+cju5ceZa3/IBXccR0rcS+uYa4LA=,tag:8uDEVNqnq4DbiVHYTCvGFQ==,type:bool]
|
||||||
|
- ENC[AES256_GCM,data:mHvy44o=,iv:4KI2SHpq+as27W77puR7NEi5ILeYD0/YnYcF5/4Uq3I=,tag:QB5D0JOFZqZX5mVGf7j3NQ==,type:bool]
|
||||||
|
default_password: ENC[AES256_GCM,data:h+D4/V4Dstnlhut5LBIg9A==,iv:yrckE1BCwjvCGZYp/WlpYyRMZeWJMZE26QNQ/tvZIyY=,tag:S5it0ySU1MUNrItWNeYW/A==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1dhmt5tdyxd9zam542zkr9hq4tku7lzmf6j057sjtepk80deky5fqemczs5
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKR0x1eHFCV1FvODF6MDVr
|
||||||
|
bXlQcTdQOUIyZW90RDhzYWxjU2pMQS84eFg4CjJvdDRyY1g3VmFzVUVMZFhwcEFv
|
||||||
|
OUk4U0U2SHFUWXVRTmcxdGpiSHhJZ00KLS0tICt1VjBvZWJRVlRqOHF2MTZyWmZq
|
||||||
|
UHFNTUdHdE9WaGJraW5OY25DQUdiYmMK2yANe44uUYavGc9UvLwOzpQH/kuY/g5D
|
||||||
|
8lNECUT7gfna7T0lEuBqafiUtRMJFgWLPqSk83pVg0FhQ5PJVtEqzw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-24T22:27:52Z"
|
||||||
|
mac: ENC[AES256_GCM,data:etJw5g4joy063Y64ohU3H7KH6gpN1FBCbnlvf/HiMQW48rlHI8RnGWZDxMUAa0oO/cTcWpbQU9U6wLrn5lT2879m2lTqa/MuoibeViWdNMb9HrJ7nzlceWJlhCGq3feC91R1o/d3E90EXm3PC0s0AXx9PsaJ5k3rHdeITs7zbZQ=,iv:zUvj2+rS/T0lvzVbL/eFwTOMqd2pVwE9LtWEpxMaw6k=,tag:2SWFeV8dSI4wkbIYaA6IzA==,type:str]
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.11.0
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
hardware.amdgpu.initrd.enable = true;
|
||||||
|
}
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
astal.io
|
|
||||||
astal.gjs
|
|
||||||
astal.hyprland
|
|
||||||
astal.apps
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
boot = {
|
||||||
|
consoleLogLevel = 3;
|
||||||
|
initrd.verbose = false;
|
||||||
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
"intremap=on"
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
"udev.log_priority=3"
|
||||||
|
"rd.systemd.show_status=auto"
|
||||||
|
];
|
||||||
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
plymouth = {
|
||||||
|
enable = true;
|
||||||
|
# themePackages = [
|
||||||
|
# (pkgs.adi1090x-plymouth-themes.override {
|
||||||
|
# selected_themes = ["circle_hud"];
|
||||||
|
# })
|
||||||
|
# ];
|
||||||
|
# theme = "circle_hud";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
hyprcursor
|
|
||||||
bibata-cursors
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{ pkgs, ... }: {
|
{pkgs, ...}: {
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
nerd-fonts.fira-code
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
gtk.iconTheme = {
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking = {
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [22 80];
|
||||||
|
allowedUDPPorts = [53];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
specialArgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager = {
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
extraSpecialArgs = specialArgs;
|
||||||
|
users.${myConfig.nixos.username} = import ../home/hakase.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
# package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
||||||
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs = {
|
||||||
|
ssh.extraConfig = myConfig.ssh.extraConfig;
|
||||||
|
bash.interactiveShellInit = ''
|
||||||
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
||||||
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
fish.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
sops
|
||||||
|
age
|
||||||
|
ssh-to-age
|
||||||
|
];
|
||||||
|
sops = {
|
||||||
|
defaultSopsFile = ../secrets/secrets.yaml;
|
||||||
|
age.keyFile = "/home/${myConfig.nixos.username}/.config/sops/age/keys.txt";
|
||||||
|
secrets.default_password = {
|
||||||
|
neededForUsers = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services = {
|
||||||
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
initial_session = {
|
||||||
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
|
user = "${myConfig.nixos.username}";
|
||||||
|
};
|
||||||
|
default_session = {
|
||||||
|
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# essentials
|
||||||
|
openssh.enable = true; # FIXME: remove when done
|
||||||
|
blueman.enable = true;
|
||||||
|
|
||||||
|
# for encryption support for unfree apps
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Complements printer support
|
||||||
|
printing.enable = true;
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.adw-gtk3
|
|
||||||
pkgs.colloid-icon-theme
|
|
||||||
pkgs.colloid-gtk-theme
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
time.timeZone = myConfig.nixos.timezone;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
${myConfig.nixos.username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel" "networkmanager" "input" "video"];
|
||||||
|
hashedPasswordFile = config.sops.secrets.default_password.path; # FIXME: may not work!
|
||||||
|
useDefaultShell = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
environment.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
VISUAL = "nvim";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
nix = {
|
||||||
|
distributedBuilds = true;
|
||||||
|
settings = {
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user