Compare commits
65 Commits
da2270ecdc
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
3c8c43f90b
|
|||
|
3de3a14d0b
|
|||
|
98434b79cf
|
|||
|
c8b5900985
|
|||
|
ae74e79b8e
|
|||
|
3fd67e08bc
|
|||
|
e2527a20d1
|
|||
|
03fbc1e1b7
|
|||
|
5b93b31de3
|
|||
|
9332b07729
|
|||
|
211dafc241
|
|||
|
cb5771e2a3
|
|||
|
3fc3f5fa3a
|
|||
|
2ffedb7835
|
|||
|
5b2fbe0db4
|
|||
|
7ea803d7cd
|
|||
|
16cfa90286
|
|||
|
89dfed99cb
|
|||
|
36be1d4912
|
|||
|
9d687a19d1
|
|||
|
9a74a3572d
|
|||
|
1eace564e5
|
|||
|
88f9d0bc57
|
|||
|
e52ee5b09f
|
|||
|
fd9a6db867
|
|||
|
acf0041fbc
|
|||
|
435423f6e1
|
|||
|
61b6256a14
|
|||
|
cdfdeffc07
|
|||
|
6156fda36d
|
|||
|
9f8a14849e
|
|||
|
9eea524875
|
|||
|
f84b6b1f6d
|
|||
|
46cf31e49a
|
|||
|
91ccf1078f
|
|||
|
e890c350c6
|
|||
|
9d395d0dae
|
|||
|
cc3d356513
|
|||
|
617ecbaf20
|
|||
|
bc24313d57
|
|||
|
c54814b63e
|
|||
|
e1794a8dd3
|
|||
|
092e73822d
|
|||
|
a185fa4d85
|
|||
|
514d3a45d9
|
|||
|
9c3698839c
|
|||
|
1d18bad6fa
|
|||
|
aeecd99aca
|
|||
|
f45ab786f9
|
|||
|
80f25abdd5
|
|||
|
718d20da06
|
|||
|
ce4e5e3d50
|
|||
|
3835443178
|
|||
|
47b17c70ad
|
|||
|
bd810a6a2a
|
|||
|
6cf26a1e18
|
|||
|
b556847dcf
|
|||
|
3f06268365
|
|||
|
b02a17a7d9
|
|||
|
5ebffd5e41
|
|||
|
0c9e6b31aa
|
|||
|
885dca9738
|
|||
|
08a3195d43
|
|||
|
d934e358c0
|
|||
|
7356fbe8f6
|
@@ -1,12 +1,47 @@
|
|||||||
# ❄️ My NixOS Config
|
# ❄️ My NixOS Config
|
||||||
|
|
||||||
```bash
|
This configuration is based on [&'s config](https://github.com/Andrey0189/nixos-config)
|
||||||
git clone https://github.com/Andrey0189/nixos-config
|
|
||||||
mv nixos-config $HOME/nix # Config is supposed to be in the ~/nix directory
|
## Users
|
||||||
cd $HOME/nix
|
- [Sweetbread](./user/sweetbread)
|
||||||
sudo nixos-rebuild switch --flake .
|
- [Chest](./user/chest)
|
||||||
home-manager switch --flake .
|
|
||||||
|
## Hosts
|
||||||
|
- [Rias](./host/Rias)
|
||||||
|
- [Senko](./host/Senko)
|
||||||
|
- [Eclipse](./host/Eclipse)
|
||||||
|
- [Impreza](./host/Impreza)
|
||||||
|
|
||||||
|
## How does this work?
|
||||||
|
The [flake](./flake.nix) file is the starting point. While installing/rebuilding
|
||||||
|
the correct `host` is chosen, which includes `./host/${host}/configuration.nix`.
|
||||||
|
|
||||||
|
It includes 2 (actually, more, but hey!) files:
|
||||||
|
- [`./host/modules/common.nix`](./host/modules/common.nix): Common setting
|
||||||
|
for all hosts (I don't say)
|
||||||
|
- [`./user/common.nix`](./user/common.nix): Common settings for all users (you
|
||||||
|
got the idea) and setup of [home-manager](https://github.com/nix-community/home-manager)
|
||||||
|
|
||||||
|
It allows me to remove duplications and add multiple users to one host
|
||||||
|
|
||||||
|
Example with Rias:
|
||||||
```
|
```
|
||||||
Enjoy!
|
./host/Rias/configuration.nix
|
||||||
|
./host/Rias/modules/*
|
||||||
|
./host/modules/gpu/nvidia.nix
|
||||||
|
./host/modules/common.nix
|
||||||
|
./host/Rias/hardware-configuration.nix
|
||||||
|
./modules/host.nix
|
||||||
|
./modules/host/*
|
||||||
|
./host/modules/packages.nix
|
||||||
|
./user/common.nix
|
||||||
|
./user/sweetbread/home.nix
|
||||||
|
./user/sweetbread/modules/*
|
||||||
|
./modules/user.nix
|
||||||
|
./modules/user/*
|
||||||
|
```
|
||||||
|
|
||||||
|
## Programs
|
||||||
|
Most of programs are defined in [user modules](./modules/user)
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
Generated
+293
-247
@@ -7,11 +7,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759319421,
|
"lastModified": 1780372639,
|
||||||
"narHash": "sha256-45yE92tDGtCX/vdyUuD3ckCqyZ3pwP0yrTorjvL80fc=",
|
"narHash": "sha256-VFzXYHlIGwO4h4ovtnpZj9sX/Qu6+dlI00sXjHdwi2w=",
|
||||||
"owner": "ezKEa",
|
"owner": "ezKEa",
|
||||||
"repo": "aagl-gtk-on-nix",
|
"repo": "aagl-gtk-on-nix",
|
||||||
"rev": "37bf87881ae7a68bccdd383fef345c748a23d3b7",
|
"rev": "1ee1e8864a1fcfcc21a5fb5af4bd328b3c829f42",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"ags": {
|
"ags": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"astal": "astal",
|
"astal": "astal",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744557573,
|
"lastModified": 1744557573,
|
||||||
@@ -60,11 +60,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758302489,
|
"lastModified": 1772460678,
|
||||||
"narHash": "sha256-NvE/uabYsuR7TbmRkSlOe6DB7UnOpD2/kHGyir2J/6A=",
|
"narHash": "sha256-NYaWs8fYJ38IgFld0hGSdT2LEVhrgO8SiRReBjIH7YY=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "11406cc23afeaaef1ee3ccffb9614e67e2458e29",
|
"rev": "5d2cb726b16ee349df443f84b64cff53221b6983",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -115,28 +115,28 @@
|
|||||||
"base16-fish": {
|
"base16-fish": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754405784,
|
"lastModified": 1765809053,
|
||||||
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
|
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
|
||||||
"owner": "tomyun",
|
"owner": "tomyun",
|
||||||
"repo": "base16-fish",
|
"repo": "base16-fish",
|
||||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "tomyun",
|
"owner": "tomyun",
|
||||||
"repo": "base16-fish",
|
"repo": "base16-fish",
|
||||||
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
|
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base16-helix": {
|
"base16-helix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752979451,
|
"lastModified": 1776754714,
|
||||||
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
|
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-helix",
|
"repo": "base16-helix",
|
||||||
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
|
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -165,11 +165,11 @@
|
|||||||
"firefox-gnome-theme": {
|
"firefox-gnome-theme": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758112371,
|
"lastModified": 1779670703,
|
||||||
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
|
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
|
||||||
"owner": "rafaelmardojai",
|
"owner": "rafaelmardojai",
|
||||||
"repo": "firefox-gnome-theme",
|
"repo": "firefox-gnome-theme",
|
||||||
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
|
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -181,11 +181,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747046372,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -197,15 +197,15 @@
|
|||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747046372,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "NixOS",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "edolstra",
|
"owner": "NixOS",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -218,11 +218,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756770412,
|
"lastModified": 1778716662,
|
||||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -290,17 +290,17 @@
|
|||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748186689,
|
"lastModified": 1767737596,
|
||||||
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=",
|
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0",
|
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"ref": "48.2",
|
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
|
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -311,11 +311,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761395627,
|
"lastModified": 1780679734,
|
||||||
"narHash": "sha256-9wQpgBRW2PzYw1wx+MgCt1IbPAYz93csApLMgSZOJCk=",
|
"narHash": "sha256-KmRNvpNOb7QEORa06bVgjW9kITcx0VhsI7w0vhmZyD8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "7296022150cd775917e4c831c393026eae7c2427",
|
"rev": "b2b7db486e06e098711dc291bb25db82850e1d16",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -340,11 +340,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753964049,
|
"lastModified": 1772461003,
|
||||||
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -369,11 +369,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758572180,
|
"lastModified": 1772461523,
|
||||||
"narHash": "sha256-Is8Rcp99Ynl3JFcU3k2lsmyf8WGacWKZtnVb0mVIZ6M=",
|
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprgraphics",
|
"repo": "hyprgraphics",
|
||||||
"rev": "32e6b8386f7dc70a4cc01607a826a281f3c52364",
|
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -387,31 +387,78 @@
|
|||||||
"aquamarine": "aquamarine",
|
"aquamarine": "aquamarine",
|
||||||
"hyprcursor": "hyprcursor",
|
"hyprcursor": "hyprcursor",
|
||||||
"hyprgraphics": "hyprgraphics",
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-guiutils": "hyprland-guiutils",
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
"hyprland-qtutils": "hyprland-qtutils",
|
|
||||||
"hyprlang": "hyprlang",
|
"hyprlang": "hyprlang",
|
||||||
"hyprutils": "hyprutils",
|
"hyprutils": "hyprutils",
|
||||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"hyprwire": "hyprwire",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"systems": "systems",
|
"systems": "systems",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758574443,
|
"lastModified": 1773149218,
|
||||||
"narHash": "sha256-eLU5Zo1L3IFr8LgOsvTcoYW04/K+Sb8OvpwbaTSTGF4=",
|
"narHash": "sha256-m5Ewi+rgn18qPP54Um4O2zwZ02oiomlZssHvXYEUv3U=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "71a1216abcc7031776630a6d88f105605c4dc1c9",
|
"rev": "59f9f2688ac508a0584d1462151195a6c4992f99",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"ref": "v0.51.1-b",
|
"ref": "v0.54.2-b",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprland-guiutils": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprtoolkit": "hyprtoolkit",
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772467975,
|
||||||
|
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprland-plugins": {
|
"hyprland-plugins": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland": [
|
"hyprland": [
|
||||||
@@ -429,11 +476,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761249285,
|
"lastModified": 1779209205,
|
||||||
"narHash": "sha256-70dEwL5p3CB/00ODs2RHWUKTyafB+PF4Ld7IEMuO+no=",
|
"narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-plugins",
|
"repo": "hyprland-plugins",
|
||||||
"rev": "81f6d1426537981fcbb921f8b5e470b1280ef8f3",
|
"rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -454,11 +501,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749046714,
|
"lastModified": 1772460177,
|
||||||
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
|
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-protocols",
|
"repo": "hyprland-protocols",
|
||||||
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
|
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -467,74 +514,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hyprland-qt-support": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprlang": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprland-qtutils",
|
|
||||||
"hyprlang"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprland-qtutils",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprland-qtutils",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1749154592,
|
|
||||||
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qt-support",
|
|
||||||
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qt-support",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprland-qtutils": {
|
|
||||||
"inputs": {
|
|
||||||
"hyprland-qt-support": "hyprland-qt-support",
|
|
||||||
"hyprlang": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprlang"
|
|
||||||
],
|
|
||||||
"hyprutils": [
|
|
||||||
"hyprland",
|
|
||||||
"hyprland-qtutils",
|
|
||||||
"hyprlang",
|
|
||||||
"hyprutils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"hyprland",
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": [
|
|
||||||
"hyprland",
|
|
||||||
"systems"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1757694755,
|
|
||||||
"narHash": "sha256-j+w5QUUr2QT/jkxgVKecGYV8J7fpzXCMgzEEr6LG9ug=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qtutils",
|
|
||||||
"rev": "5ffdfc13ed03df1dae5084468d935f0a3f2c9a4c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qtutils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprlang": {
|
"hyprlang": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprutils": [
|
"hyprutils": [
|
||||||
@@ -551,11 +530,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756810301,
|
"lastModified": 1772459629,
|
||||||
"narHash": "sha256-wgZ3VW4VVtjK5dr0EiK9zKdJ/SOqGIBXVG85C3LVxQA=",
|
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "3d63fb4a42c819f198deabd18c0c2c1ded1de931",
|
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -564,6 +543,58 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprtoolkit": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772462885,
|
||||||
|
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprutils": {
|
"hyprutils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -576,11 +607,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756117388,
|
"lastModified": 1772459870,
|
||||||
"narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=",
|
"narHash": "sha256-xxkK2Cvqxpf/4UGcJ/TyCwrvmiNWsKsJfFzHMp2bxis=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0",
|
"rev": "e63f3a79334dec49f8eb1691f66f18115df04085",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -601,11 +632,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755184602,
|
"lastModified": 1772459835,
|
||||||
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -614,13 +645,42 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprwire": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772463520,
|
||||||
|
"narHash": "sha256-GIjASzYnV4fK19HnyJKmHyqyxHxIpjusK9foEA4Yo+4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"rev": "4e1933ae5602b350c5b6633f5c932549c9b8aca2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759036355,
|
"lastModified": 1779560665,
|
||||||
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
|
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
|
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -630,55 +690,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-fixed": {
|
"nixpkgs-pinned": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754292888,
|
"lastModified": 1779971959,
|
||||||
"narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=",
|
"narHash": "sha256-R5nauXyqyfRUFiZycFFZdkF7wl6eaUpPLst35+2nJQY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ce01daebf8489ba97bd1609d185ea276efdeb121",
|
"rev": "ec942ba042dad5ef097e2ef3a3effc034241f011",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ce01daebf8489ba97bd1609d185ea276efdeb121",
|
"rev": "ec942ba042dad5ef097e2ef3a3effc034241f011",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761173472,
|
"lastModified": 1780453794,
|
||||||
"narHash": "sha256-m9W0dYXflzeGgKNravKJvTMR4Qqa2MVD11AwlGMufeE=",
|
"narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c8aa8cc00a5cb57fada0851a038d35c08a36a2bb",
|
"rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-25.05",
|
"ref": "nixos-26.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744536153,
|
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1743583204,
|
"lastModified": 1743583204,
|
||||||
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
|
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
|
||||||
@@ -694,13 +738,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758277210,
|
"lastModified": 1772542754,
|
||||||
"narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=",
|
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
|
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -710,29 +754,29 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780243769,
|
||||||
|
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761114652,
|
"lastModified": 1775888245,
|
||||||
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
|
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1760596604,
|
|
||||||
"narHash": "sha256-J/i5K6AAz/y5dBePHQOuzC7MbhyTOKsd/GLezSbEFiM=",
|
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3cbe716e2346710d6e1f7c559363d14e11c32a43",
|
"rev": "13043924aaa7375ce482ebe2494338e058282925",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -742,13 +786,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758690382,
|
"lastModified": 1780243769,
|
||||||
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
|
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e643668fd71b949c53f8626614b21ff71a07379d",
|
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -758,13 +802,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756288264,
|
"lastModified": 1779877693,
|
||||||
"narHash": "sha256-Om8adB1lfkU7D33VpR+/haZ2gI5r3Q+ZbIPzE5sYnwE=",
|
"narHash": "sha256-NOF9NAREhxr50bbBfVcVOq+ArCMSoe8dP79Pk2uyARk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ddd1826f294a0ee5fdc198ab72c8306a0ea73aa9",
|
"rev": "4100e830e085863741bc69b156ec4ccd53ab5be0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -786,11 +830,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758998580,
|
"lastModified": 1780281641,
|
||||||
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
|
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
|
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -809,11 +853,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758108966,
|
"lastModified": 1772024342,
|
||||||
"narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=",
|
"narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b",
|
"rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -829,24 +873,28 @@
|
|||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"hyprland-plugins": "hyprland-plugins",
|
"hyprland-plugins": "hyprland-plugins",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-fixed": "nixpkgs-fixed",
|
"nixpkgs-pinned": "nixpkgs-pinned",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"yazi": "yazi"
|
"yazi": "yazi",
|
||||||
|
"yazi-plugins": "yazi-plugins"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": [
|
||||||
|
"aagl",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759199574,
|
"lastModified": 1780197589,
|
||||||
"narHash": "sha256-w24RYly3VSVKp98rVfCI1nFYfQ0VoWmShtKPCbXgK6A=",
|
"narHash": "sha256-FVCr2Ij/jKf59a4LW481eeOF6rJRreOBrVgW/aUBTrw=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "381776b12d0d125edd7c1930c2041a1471e586c0",
|
"rev": "21632e942d89bf1cce4e5a63d7e58a215a0cbfcc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -863,11 +911,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756348497,
|
"lastModified": 1779851998,
|
||||||
"narHash": "sha256-xJp3VnoYh4kpsaKFO/7SsGbwOz7pI1ZmjbqpXEuR2cw=",
|
"narHash": "sha256-UkkMh3bX9QW4Luqkm98nUaOqKWrU6i65mUnph3WeSSw=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "0adf92c70d23fb4f703aea5d3ebb51ac65994f7f",
|
"rev": "6cddd512fa2bf7231f098d3a2f92f6e4cff71e0a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -878,14 +926,14 @@
|
|||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760998189,
|
"lastModified": 1780547341,
|
||||||
"narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
|
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
|
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -903,21 +951,20 @@
|
|||||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_6",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems_2",
|
"systems": "systems_2",
|
||||||
"tinted-foot": "tinted-foot",
|
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
"tinted-tmux": "tinted-tmux",
|
"tinted-tmux": "tinted-tmux",
|
||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761028816,
|
"lastModified": 1780684162,
|
||||||
"narHash": "sha256-s1XiIeJHpODVWfzsPaK9e21iz1dQSCU3H4/1OxOsyps=",
|
"narHash": "sha256-7HslPhFlg9tD5t+E8c5nL9v85TehwSWvwSmk+tarBnI=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "b81dc0a385443099e7d231fe6275189e32c3b760",
|
"rev": "e14dbcb3e8ed94de5e85ed9ad133b6017480f86c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -971,23 +1018,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tinted-foot": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726913040,
|
|
||||||
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-foot",
|
|
||||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "tinted-foot",
|
|
||||||
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tinted-kitty": {
|
"tinted-kitty": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -1007,11 +1037,11 @@
|
|||||||
"tinted-schemes": {
|
"tinted-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757716333,
|
"lastModified": 1777806186,
|
||||||
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
|
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "schemes",
|
"repo": "schemes",
|
||||||
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
|
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1023,11 +1053,11 @@
|
|||||||
"tinted-tmux": {
|
"tinted-tmux": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757811970,
|
"lastModified": 1778379944,
|
||||||
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
|
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "tinted-tmux",
|
"repo": "tinted-tmux",
|
||||||
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
|
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1039,11 +1069,11 @@
|
|||||||
"tinted-zed": {
|
"tinted-zed": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757811247,
|
"lastModified": 1778378178,
|
||||||
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
|
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-zed",
|
"repo": "base16-zed",
|
||||||
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
|
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1080,11 +1110,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755354946,
|
"lastModified": 1772476586,
|
||||||
"narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=",
|
"narHash": "sha256-N/ZwsRLULLpBP5ecvAUzNq8E/CgLRwPwSrHyY3xB5KM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0",
|
"rev": "eb6c02a2ead882f3474f3d7f2fbe966b64ed5110",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1096,15 +1126,15 @@
|
|||||||
"yazi": {
|
"yazi": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs_8",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761106601,
|
"lastModified": 1780290961,
|
||||||
"narHash": "sha256-N5G6xxIujyD797q27Prh8UEoQD6PWWCEd8r9zmCiv/k=",
|
"narHash": "sha256-XPSfzLmyGeGMU5o1gaRp8XVVFFLxri93TXpzTr38Ti8=",
|
||||||
"owner": "sxyazi",
|
"owner": "sxyazi",
|
||||||
"repo": "yazi",
|
"repo": "yazi",
|
||||||
"rev": "157156b5b8f36db15b2ba425c7d15589039a9e1e",
|
"rev": "8e80798984864799cd72b3625b21edc33b1ba1e5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1112,6 +1142,22 @@
|
|||||||
"repo": "yazi",
|
"repo": "yazi",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"yazi-plugins": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780203849,
|
||||||
|
"narHash": "sha256-bqGN6JxbU+/o7TlM/Cm9Qj/s1McA4pB5QWArGZPcme4=",
|
||||||
|
"owner": "yazi-rs",
|
||||||
|
"repo": "plugins",
|
||||||
|
"rev": "598cdb671401574ac27aeee257e2f3b0c80610a1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "yazi-rs",
|
||||||
|
"repo": "plugins",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -3,32 +3,37 @@
|
|||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = [
|
extra-substituters = [
|
||||||
|
"https://nix.lair.moe/main"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
# "https://cache.garnix.io"
|
|
||||||
"https://hyprland.cachix.org"
|
"https://hyprland.cachix.org"
|
||||||
"https://ezkea.cachix.org"
|
"https://ezkea.cachix.org"
|
||||||
"https://risdeveau.cachix.org"
|
"https://yazi.cachix.org"
|
||||||
];
|
];
|
||||||
extra-trusted-public-keys = [
|
extra-trusted-public-keys = [
|
||||||
|
"main:kpwMe+9BsGJ/IUb7i3iadaV38y5/Yuqoct0mf7wI9ds="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
# "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
"ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI="
|
"ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI="
|
||||||
"risdeveau.cachix.org-1:TsoFSVeLl7iKtUYGX7qsvKPjf2vbNLfLC5v3SAdU8r0="
|
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
|
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
nixpkgs-fixed.url = "github:nixos/nixpkgs/ce01daebf8489ba97bd1609d185ea276efdeb121";
|
nixpkgs-pinned.url = "github:nixos/nixpkgs/ec942ba042dad5ef097e2ef3a3effc034241f011";
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
stylix.url = "github:danth/stylix";
|
stylix.url = "github:danth/stylix";
|
||||||
ags.url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6";
|
ags.url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6";
|
||||||
yazi.url = "github:sxyazi/yazi";
|
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/Hyprland/v0.51.1-b";
|
yazi.url = "github:sxyazi/yazi";
|
||||||
|
yazi-plugins = {
|
||||||
|
url = "github:yazi-rs/plugins";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland/v0.54.2-b";
|
||||||
hyprland-plugins = {
|
hyprland-plugins = {
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
inputs.hyprland.follows = "hyprland";
|
inputs.hyprland.follows = "hyprland";
|
||||||
@@ -40,81 +45,23 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-fixed, home-manager, ... }@inputs: let
|
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-pinned, home-manager, ... }@inputs: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
mkHost = hostname: nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
pkgs-stable = import nixpkgs-stable { inherit system config; };
|
||||||
|
pkgs-pinned = import nixpkgs-pinned { inherit system config; };
|
||||||
|
};
|
||||||
|
modules = [ ./host/${hostname}/configuration.nix ];
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
Rias = nixpkgs-stable.lib.nixosSystem {
|
Rias = mkHost "Rias";
|
||||||
specialArgs = {
|
Senko = mkHost "Senko";
|
||||||
pkgs-unstable = import nixpkgs {
|
Eclipse = mkHost "Eclipse";
|
||||||
inherit system;
|
Impreza = mkHost "Impreza";
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
pkgs-fixed = import nixpkgs-fixed {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
inherit inputs system;
|
|
||||||
};
|
|
||||||
modules = [ ./host/Rias/configuration.nix ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Senko = nixpkgs-stable.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
pkgs-unstable = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
pkgs-fixed = import nixpkgs-fixed {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
inherit inputs system;
|
|
||||||
};
|
|
||||||
modules = [ ./host/Senko/configuration.nix ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Eclipse = nixpkgs-stable.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
pkgs-unstable = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
pkgs-fixed = import nixpkgs-fixed {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
inherit inputs system;
|
|
||||||
};
|
|
||||||
modules = [ ./host/Eclipse/configuration.nix ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Impreza = nixpkgs-stable.lib.nixosSystem {
|
|
||||||
specialArgs = {
|
|
||||||
pkgs-unstable = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
pkgs-fixed = import nixpkgs-fixed {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
inherit inputs system;
|
|
||||||
};
|
|
||||||
modules = [ ./host/Impreza/configuration.nix ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells."${system}".default = let
|
|
||||||
pkgs = import nixpkgs { inherit system; };
|
|
||||||
in pkgs.mkShell {
|
|
||||||
shellHook = "zsh";
|
|
||||||
packages = with pkgs; [
|
|
||||||
cargo
|
|
||||||
rustc
|
|
||||||
rust-analyzer
|
|
||||||
lldb
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
|
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||||
laptop = false;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./secrets/secrets.nix
|
./secrets/secrets.nix
|
||||||
./modules/aagl.nix
|
./modules/aagl.nix
|
||||||
@@ -17,11 +15,10 @@ in {
|
|||||||
(import ../../user/common.nix {
|
(import ../../user/common.nix {
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-stable;
|
||||||
inherit pkgs-fixed;
|
inherit pkgs-pinned;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit laptop;
|
|
||||||
name = "chest";
|
name = "chest";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
@@ -29,4 +26,6 @@ in {
|
|||||||
nixpkgs.config.allowBroken = true;
|
nixpkgs.config.allowBroken = true;
|
||||||
programs.gamemode.enable = true;
|
programs.gamemode.enable = true;
|
||||||
services.printing.enable = true;
|
services.printing.enable = true;
|
||||||
|
virtualisation.virtualbox.host.enable = true;
|
||||||
|
users.extraGroups.vboxusers.members = [ "chest" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,4 +47,6 @@
|
|||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
boot.loader.grub.useOSProber = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
imports = [ inputs.aagl.nixosModules.default ];
|
imports = [ inputs.aagl.nixosModules.default ];
|
||||||
nix.settings = inputs.aagl.nixConfig; # Set up Cachix
|
nix.settings = inputs.aagl.nixConfig; # Set up Cachix
|
||||||
programs.honkers-railway-launcher.enable = true;
|
programs.honkers-railway-launcher.enable = true;
|
||||||
|
programs.sleepy-launcher.enable = true;
|
||||||
|
programs.anime-game-launcher.enable = true;
|
||||||
networking.hosts."0.0.0.0" = [
|
networking.hosts."0.0.0.0" = [
|
||||||
"overseauspider.yuanshen.com"
|
"overseauspider.yuanshen.com"
|
||||||
"log-upload-os.hoyoverse.com"
|
"log-upload-os.hoyoverse.com"
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{ pkgs, lib, ... }: {
|
||||||
|
wayland.windowManager.hyprland = let
|
||||||
|
wallpaper = pkgs.fetchurl {
|
||||||
|
name = "miku_wallpaper.jpg";
|
||||||
|
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
|
||||||
|
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
settings = {
|
||||||
|
monitor = [
|
||||||
|
"DP-3 , 1920x1080@165, 0x0 , 1"
|
||||||
|
"HDMI-A-1, preferred , -1080x0, 1, transform, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
workspace = [
|
||||||
|
"1, monitor:DP-3, default:true"
|
||||||
|
"10, monitor:HDMI-A-1, default:true"
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"hyprctl dispatch workspace 1"
|
||||||
|
"${lib.getExe pkgs.swww} img -o HDMI-A-1 ${wallpaper}"
|
||||||
|
"${lib.getExe pkgs.linux-wallpaperengine} ~/.local/share/wpe/wallpaper --assets-dir ~/.local/share/wpe/assets --screen-root DP-3 --noautomute"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,4 @@
|
|||||||
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
|
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||||
laptop = true;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./secrets/secrets.nix
|
./secrets/secrets.nix
|
||||||
./modules/grub.nix
|
./modules/grub.nix
|
||||||
@@ -15,17 +13,17 @@ in {
|
|||||||
(import ../../user/common.nix {
|
(import ../../user/common.nix {
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-stable;
|
||||||
inherit pkgs-fixed;
|
inherit pkgs-pinned;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit laptop;
|
|
||||||
name = "chest";
|
name = "chest";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nix.settings.cores = 3;
|
||||||
nixpkgs.config.allowBroken = true;
|
nixpkgs.config.allowBroken = true;
|
||||||
programs.gamemode.enable = true;
|
programs.gamemode.enable = true;
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
host.laptop = laptop;
|
host.laptop = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,22 +13,22 @@
|
|||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/31247de4-e9c0-4690-8bce-8380377b6872";
|
device = "/dev/disk/by-label/NixOS";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/328A-299C";
|
device = "/dev/disk/by-label/EFI";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [ "fmask=0022" "dmask=0022" "nofail" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/mnt/Windows" =
|
fileSystems."/mnt/Windows" = {
|
||||||
{ device = "/dev/disk/by-uuid/84E48B00E48AF428";
|
device = "/dev/disk/by-label/Windows";
|
||||||
fsType = "ntfs";
|
fsType = "ntfs";
|
||||||
options = [ "umask=0022" "gid=100" "uid=1000" "nofail" ];
|
options = [ "umask=0022" "gid=100" "uid=1000" "nofail" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
@@ -41,4 +41,6 @@
|
|||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
boot.loader.grub.useOSProber = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{ pkgs, lib, ... }: {
|
||||||
|
wayland.windowManager.hyprland = let
|
||||||
|
wallpaper = pkgs.fetchurl {
|
||||||
|
name = "miku_wallpaper.jpg";
|
||||||
|
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
|
||||||
|
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
settings = {
|
||||||
|
exec-once = [
|
||||||
|
"${lib.getExe pkgs.swww} img -o eDP-1 ${wallpaper}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
My desktop
|
||||||
|
|
||||||
|
- **CPU:** Intel i5-10600KF
|
||||||
|
- **GPU:** NVidia GeForce RTX 3060 Ti
|
||||||
|
- **RAM:** 32GB
|
||||||
|
- **SSD:** 512GB
|
||||||
|
- **HDD:** 1TB
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
|
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||||
laptop = false;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./secrets/secrets.nix
|
./secrets/secrets.nix
|
||||||
./modules/grub.nix
|
./modules/grub.nix
|
||||||
./modules/syncthing.nix
|
./modules/syncthing.nix
|
||||||
../../modules/host/adb.nix
|
|
||||||
../modules/gpu/nvidia.nix
|
../modules/gpu/nvidia.nix
|
||||||
|
|
||||||
(import ../modules/common.nix {
|
(import ../modules/common.nix {
|
||||||
@@ -17,11 +14,10 @@ in {
|
|||||||
(import ../../user/common.nix {
|
(import ../../user/common.nix {
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-stable;
|
||||||
inherit pkgs-fixed;
|
inherit pkgs-pinned;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit laptop;
|
|
||||||
name = "sweetbread";
|
name = "sweetbread";
|
||||||
fullname = "Sweet Bread";
|
fullname = "Sweet Bread";
|
||||||
})
|
})
|
||||||
@@ -30,4 +26,7 @@ in {
|
|||||||
programs.gamemode.enable = true;
|
programs.gamemode.enable = true;
|
||||||
services.printing.enable = true;
|
services.printing.enable = true;
|
||||||
hardware.opentabletdriver.enable = true;
|
hardware.opentabletdriver.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.android-tools ];
|
||||||
|
users.users.sweetbread.extraGroups = [ "kvm" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
fileSystems."/mnt/D" = {
|
fileSystems."/mnt/D" = {
|
||||||
device = "/dev/disk/by-label/Data";
|
device = "/dev/disk/by-label/Data";
|
||||||
fsType = "ntfs";
|
fsType = "ntfs3";
|
||||||
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
|
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{ pkgs, lib, ...}: {
|
||||||
|
wayland.windowManager.hyprland = let
|
||||||
|
monitor-switcher = pkgs.writers.writeBashBin "monitor_switcher" /*bash*/ ''
|
||||||
|
MODE=$1
|
||||||
|
|
||||||
|
case $MODE in
|
||||||
|
"tv")
|
||||||
|
hyprctl keyword monitor "DP-3, 1920x1080@60, 3840x0, 1"
|
||||||
|
hyprctl keyword monitor "HDMI-A-1, 3840x2160@60, 0x0, 1"
|
||||||
|
notify-send "TV mode"
|
||||||
|
;;
|
||||||
|
|
||||||
|
"mirror")
|
||||||
|
hyprctl keyword monitor "HDMI-A-1, 3840x2160@60, 0x0, 1"
|
||||||
|
hyprctl keyword monitor "DP-3, preferred, auto, 1, mirror, HDMI-A-1"
|
||||||
|
notify-send "TV-only mode"
|
||||||
|
;;
|
||||||
|
|
||||||
|
"display"|*)
|
||||||
|
hyprctl keyword monitor "HDMI-A-1, disable"
|
||||||
|
hyprctl keyword monitor "DP-3, 3440x1440@165, 0x0, 1"
|
||||||
|
notify-send "Display mode"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
settings = {
|
||||||
|
monitor = [
|
||||||
|
"DP-3, 3440x1440@165, auto-right, 1"
|
||||||
|
# "HDMI-A-1, 3840x2160@60, auto-left, 2"
|
||||||
|
"HDMI-A-1, disabled"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
'', XF86Calculator, exec, ghostty --title=pulsemixer -e pulsemixer''
|
||||||
|
|
||||||
|
''$mainMod, F1, exec, ${lib.getExe monitor-switcher} tv''
|
||||||
|
''$mainMod, F2, exec, ${lib.getExe monitor-switcher} mirror''
|
||||||
|
''$mainMod, F3, exec, ${lib.getExe monitor-switcher}''
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
My laptop `HP Pavilion 15-cb012ur`
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
|
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||||
laptop = true;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./secrets/secrets.nix
|
./secrets/secrets.nix
|
||||||
./modules/grub.nix
|
./modules/grub.nix
|
||||||
@@ -15,18 +13,18 @@ in {
|
|||||||
(import ../../user/common.nix {
|
(import ../../user/common.nix {
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit pkgs-unstable;
|
inherit pkgs-stable;
|
||||||
inherit pkgs-fixed;
|
inherit pkgs-pinned;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit laptop;
|
|
||||||
name = "sweetbread";
|
name = "sweetbread";
|
||||||
fullname = "Sweet Bread";
|
fullname = "Sweet Bread";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
host.laptop = laptop;
|
host.laptop = true;
|
||||||
|
host.nvidia.prime.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.dbgate ];
|
environment.systemPackages = [ pkgs.dbgate ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
settings = {
|
||||||
|
monitor = [
|
||||||
|
"eDP-1, 1920x1080@60, 0x0, 1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
secrets = {
|
secrets = {
|
||||||
vpn_bolt = {
|
vpn_bolt = {
|
||||||
format = "binary";
|
format = "binary";
|
||||||
sopsFile = ./vpn_bolt.db;
|
sopsFile = ../../Rias/secrets/vpn_bolt.db;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
../../Rias/secrets/vpn_bolt.db
|
|
||||||
+24
-3
@@ -7,14 +7,35 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
host.laptop = lib.mkEnableOption "laptop mode";
|
host = {
|
||||||
|
laptop = lib.mkEnableOption "laptop mode";
|
||||||
|
|
||||||
|
nvidia.prime = {
|
||||||
|
enable = lib.mkEnableOption "NVIDIA PRIME offload for hybrid graphics";
|
||||||
|
intelBusId = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "PCI:0:2:0";
|
||||||
|
description = "Intel/iGPU Bus ID used by NVIDIA PRIME.";
|
||||||
|
};
|
||||||
|
nvidiaBusId = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "PCI:1:0:0";
|
||||||
|
description = "NVIDIA dGPU Bus ID used by NVIDIA PRIME.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
nix.settings = {
|
||||||
|
keep-going = true;
|
||||||
|
extra-substituters = [ "https://nix.lair.moe/main" ];
|
||||||
|
extra-trusted-public-keys = [ "main:kpwMe+9BsGJ/IUb7i3iadaV38y5/Yuqoct0mf7wI9ds=" ];
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
};
|
||||||
networking.hostName = hostname;
|
networking.hostName = hostname;
|
||||||
time.timeZone = lib.mkDefault "Europe/Moscow";
|
time.timeZone = lib.mkDefault "Europe/Moscow";
|
||||||
i18n.defaultLocale = lib.mkDefault "ru_RU.UTF-8";
|
i18n.defaultLocale = lib.mkDefault "ru_RU.UTF-8";
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs-stable, ... }:
|
||||||
{
|
{
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs-stable; [
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
intel-compute-runtime
|
intel-compute-runtime
|
||||||
libvdpau-va-gl
|
libvdpau-va-gl
|
||||||
];
|
];
|
||||||
extraPackages32 = with pkgs.pkgsi686Linux; [
|
extraPackages32 = with pkgs-stable.pkgsi686Linux; [
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.config.packageOverrides = pkgs: {
|
nixpkgs.config.packageOverrides = pkgs-stable: {
|
||||||
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
|
vaapiIntel = pkgs-stable.vaapiIntel.override { enableHybridCodec = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs-stable; [
|
||||||
intel-gpu-tools
|
intel-gpu-tools
|
||||||
libva-utils
|
libva-utils
|
||||||
clinfo
|
clinfo
|
||||||
|
|||||||
+29
-12
@@ -1,17 +1,27 @@
|
|||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs-stable, lib, ... }: let
|
||||||
boot.kernelParams = [ "nvidia-drm.modeset=1" ];
|
primeCfg = config.host.nvidia.prime;
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
isPrimeOffload = primeCfg.enable;
|
||||||
|
in {
|
||||||
|
boot = {
|
||||||
|
kernelParams = [ "nvidia-drm.modeset=1" ];
|
||||||
|
initrd.kernelModules = lib.optionals isPrimeOffload [ "i915" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers =
|
||||||
|
if isPrimeOffload
|
||||||
|
then [ "modesetting" "nvidia" ]
|
||||||
|
else [ "nvidia" ];
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
graphics = {
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = true;
|
enable32Bit = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs-stable; [
|
||||||
nvidia-vaapi-driver
|
# nvidia-vaapi-driver
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
libvdpau-va-gl
|
libvdpau-va-gl
|
||||||
];
|
];
|
||||||
extraPackages32 = with pkgs.pkgsi686Linux; [nvidia-vaapi-driver intel-media-driver];
|
extraPackages32 = with pkgs-stable.pkgsi686Linux; [ nvidia-vaapi-driver intel-media-driver ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nvidia = {
|
nvidia = {
|
||||||
@@ -24,21 +34,28 @@
|
|||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
|
||||||
prime = lib.optionalAttrs config.host.laptop {
|
prime = lib.optionalAttrs isPrimeOffload {
|
||||||
intelBusId = "PCI:0:2:0";
|
offload = {
|
||||||
nvidiaBusId = "PCI:1:0:0";
|
enable = true;
|
||||||
|
enableOffloadCmd = true;
|
||||||
|
};
|
||||||
|
intelBusId = primeCfg.intelBusId;
|
||||||
|
nvidiaBusId = primeCfg.nvidiaBusId;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
|
__GL_VRR_ALLOWED = 1;
|
||||||
|
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||||
|
NIXOS_OZONE_WL = 1;
|
||||||
|
} // lib.optionalAttrs isPrimeOffload {
|
||||||
|
LIBVA_DRIVER_NAME = "iHD";
|
||||||
|
} // lib.optionalAttrs (!isPrimeOffload) {
|
||||||
WLR_NO_HARDWARE_CURSORS = 1;
|
WLR_NO_HARDWARE_CURSORS = 1;
|
||||||
WLR_DRM_NO_ATOMIC = 1;
|
WLR_DRM_NO_ATOMIC = 1;
|
||||||
GBM_BACKEND = "nvidia-drm";
|
GBM_BACKEND = "nvidia-drm";
|
||||||
LIBVA_DRIVER_NAME = "nvidia";
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
__GL_VRR_ALLOWED = 1;
|
|
||||||
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
|
||||||
NIXOS_OZONE_WL = 1;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs-unstable, inputs, ... }: {
|
{ pkgs, inputs, ... }: {
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs-unstable; [
|
environment.systemPackages = with pkgs; [
|
||||||
file
|
file
|
||||||
tree
|
tree
|
||||||
wget
|
wget
|
||||||
@@ -15,12 +15,12 @@
|
|||||||
ncdu
|
ncdu
|
||||||
tldr
|
tldr
|
||||||
helix
|
helix
|
||||||
pinentry
|
pinentry-gnome3
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
enableDefaultPackages = false;
|
enableDefaultPackages = false;
|
||||||
packages = with pkgs-unstable; [
|
packages = with pkgs; [
|
||||||
jetbrains-mono # Best mono font
|
jetbrains-mono # Best mono font
|
||||||
noto-fonts-cjk-sans # Japanese
|
noto-fonts-cjk-sans # Japanese
|
||||||
powerline-symbols # Console decoration
|
powerline-symbols # Console decoration
|
||||||
|
|||||||
+32
-3
@@ -1,4 +1,4 @@
|
|||||||
{
|
{ pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./host/bluetooth.nix
|
./host/bluetooth.nix
|
||||||
./host/bootloader.nix
|
./host/bootloader.nix
|
||||||
@@ -8,16 +8,45 @@
|
|||||||
./host/gamemode.nix
|
./host/gamemode.nix
|
||||||
./host/gpg.nix
|
./host/gpg.nix
|
||||||
./host/laptop.nix
|
./host/laptop.nix
|
||||||
|
./host/network.nix
|
||||||
./host/printing.nix
|
./host/printing.nix
|
||||||
./host/shutdown-on-lan.nix
|
./host/shutdown-on-lan.nix
|
||||||
./host/sound.nix
|
./host/sound.nix
|
||||||
./host/virtmanager.nix
|
./host/virtmanager.nix
|
||||||
./host/vpn.nix
|
./host/vpn.nix
|
||||||
./host/network.nix
|
|
||||||
./host/yggdrasil.nix
|
./host/yggdrasil.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.hyprland.enable = true;
|
programs = {
|
||||||
|
dconf.enable = true;
|
||||||
|
hyprland.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
xdgOpenUsePortal = true;
|
||||||
|
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-hyprland
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
xdg-desktop-portal-termfilechooser
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
common = {
|
||||||
|
default = [ "hyprland" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland = {
|
||||||
|
default = [ "hyprland" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
udisks2.enable = true;
|
udisks2.enable = true;
|
||||||
fstrim.enable = true;
|
fstrim.enable = true;
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
programs.adb.enable = true;
|
|
||||||
users.users.sweetbread.extraGroups = ["adbusers"]; # FIXME: check users
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
efiSupport = true;
|
efiSupport = true;
|
||||||
device = "nodev";
|
device = "nodev";
|
||||||
useOSProber = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
consoleLogLevel = 0;
|
consoleLogLevel = 0;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ pkgs, ... }: {
|
{
|
||||||
console = {
|
console = {
|
||||||
font = "${pkgs.kbd}/share/consolefonts/LatArCyrHeb-19.psfu.gz";
|
font = "LatArCyrHeb-19";
|
||||||
colors = [
|
colors = [
|
||||||
"16161E"
|
"16161E"
|
||||||
"1A1B26"
|
"1A1B26"
|
||||||
|
|||||||
+10
-3
@@ -1,8 +1,15 @@
|
|||||||
{
|
{ lib, ... }: {
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
EDITOR = "hx";
|
EDITOR = "hx";
|
||||||
RANGER_LOAD_DEFAULT_RC = "FALSE";
|
RANGER_LOAD_DEFAULT_RC = "FALSE";
|
||||||
QT_QPA_PLATFORMTHEME = "qt5ct";
|
# GTK/Electron apps do not consistently use the portal picker unless this
|
||||||
GSETTINGS_BACKEND = "keyfile";
|
# variable is present in the graphical session environment.
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
|
||||||
|
# Qt/Telegram-like apps otherwise keep using their own picker. This makes
|
||||||
|
# them ask xdg-desktop-portal for file/folder selection.
|
||||||
|
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
|
||||||
|
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, pkgs-unstable, lib, ... }:
|
{ config, pkgs, pkgs-stable, lib, ... }:
|
||||||
|
|
||||||
lib.mkIf config.programs.gamemode.enable {
|
lib.mkIf config.programs.gamemode.enable {
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
@@ -8,9 +8,9 @@ lib.mkIf config.programs.gamemode.enable {
|
|||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
mangohud
|
mangohud
|
||||||
protonup
|
protonup-ng
|
||||||
bottles
|
pkgs-stable.bottles
|
||||||
heroic
|
pkgs-stable.heroic
|
||||||
prismlauncher
|
prismlauncher
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, ...}: {
|
{
|
||||||
programs.gnupg.agent = {
|
programs.gnupg.agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSSHSupport = true;
|
enableSSHSupport = true;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs, lib, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
sol = pkgs.writers.writePython3 "shutdown-on-lan.py" {
|
sol = pkgs.writers.writePython3 "shutdown-on-lan.py" {
|
||||||
libraries = [ pkgs.python312Packages.psutil ];
|
libraries = [ pkgs.python313Packages.psutil ];
|
||||||
flakeIgnore = [ "E302" "E305" "E501" "E701" ];
|
flakeIgnore = [ "E302" "E305" "E501" "E701" ];
|
||||||
} /*py*/ ''
|
} /*py*/ ''
|
||||||
# https://habr.com/ru/articles/816765/
|
# https://habr.com/ru/articles/816765/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, ... }: {
|
{
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
programs.virt-manager.enable = true;
|
programs.virt-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-25
@@ -1,28 +1,8 @@
|
|||||||
{ pkgs, pkgs-unstable, config, ...}: {
|
{
|
||||||
systemd.services.v2raya = {
|
programs.clash-verge = {
|
||||||
enable = true;
|
enable = true;
|
||||||
description = "v2rayA gui client";
|
serviceMode = true;
|
||||||
after = [ "network.target" ];
|
tunMode = true;
|
||||||
serviceConfig = {
|
autoStart = true;
|
||||||
Restart = "always";
|
|
||||||
ExecStart = "${pkgs-unstable.v2raya}/bin/v2rayA";
|
|
||||||
};
|
|
||||||
path = with pkgs; [ iptables bash iproute2 ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
environment = {
|
|
||||||
V2RAYA_LOG_FILE = "/var/log/v2raya/v2raya.log";
|
|
||||||
V2RAY_LOCATION_ASSET = "/etc/v2raya";
|
|
||||||
XRAY_LOCATION_ASSET = "/etc/v2raya";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc = {
|
|
||||||
"v2raya/ru_geoip.dat".source = pkgs.fetchurl {
|
|
||||||
name = "geoip.dat";
|
|
||||||
url = "https://github.com/runetfreedom/russia-blocked-geoip/releases/download/202509251525/geoip.dat";
|
|
||||||
hash = "sha256-bhz32BOLoqq8yYe8tXWQRkqUiDMa4jAuhLjDfcyF9d4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
"v2raya/bolt.db".source = config.sops.secrets.vpn_bolt.path;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
persistentKeys = true;
|
persistentKeys = true;
|
||||||
settings = {
|
settings = {
|
||||||
Peers = [
|
Peers = [
|
||||||
"tcp://codrs.ru:5001"
|
"tls://ip4.01.ekb.ru.dioni.su:9003"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
+16
-12
@@ -1,20 +1,24 @@
|
|||||||
{ config, lib, ... }: {
|
{ config, lib, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./user/qt.nix
|
|
||||||
./user/sops.nix
|
|
||||||
./user/neofetch.nix
|
|
||||||
./user/yazi.nix
|
|
||||||
./user/ags.nix
|
|
||||||
./user/zsh.nix
|
|
||||||
./user/helix.nix
|
|
||||||
./user/hyprlock.nix
|
|
||||||
./user/btop.nix
|
./user/btop.nix
|
||||||
./user/wofi.nix
|
|
||||||
./user/mako.nix
|
|
||||||
./user/ghostty.nix
|
./user/ghostty.nix
|
||||||
|
./user/helix.nix
|
||||||
|
./user/hyprland.nix
|
||||||
|
./user/hyprlock.nix
|
||||||
|
./user/mako.nix
|
||||||
|
./user/neofetch.nix
|
||||||
|
./user/qt.nix
|
||||||
|
./user/quickshell.nix
|
||||||
|
./user/stylix.nix
|
||||||
|
./user/sops.nix
|
||||||
|
./user/ssh.nix
|
||||||
|
./user/walker.nix
|
||||||
|
./user/wob.nix
|
||||||
|
./user/yazi.nix
|
||||||
|
./user/zsh.nix
|
||||||
|
|
||||||
./user/packages/art.nix
|
./user/packages/art.nix
|
||||||
./user/packages/desktop.nix
|
./user/packages/desktop.nix
|
||||||
./user/packages/coding.nix
|
|
||||||
./user/packages/utils.nix
|
./user/packages/utils.nix
|
||||||
] ;
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
{ config, inputs, pkgs, ... }: {
|
|
||||||
imports = [ inputs.ags.homeManagerModules.default ];
|
|
||||||
|
|
||||||
programs.ags = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
configDir = null;
|
|
||||||
|
|
||||||
extraPackages = with inputs.ags.packages.${pkgs.system}; [
|
|
||||||
battery
|
|
||||||
mpris
|
|
||||||
hyprland
|
|
||||||
network
|
|
||||||
tray
|
|
||||||
wireplumber
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pulsemixer
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings.exec-once = [ "ags run" ];
|
|
||||||
|
|
||||||
xdg.configFile."ags".source = (pkgs.callPackage ./packages/drvs/ags.nix { colors = config.lib.stylix.colors; });
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,23 @@
|
|||||||
{
|
{ config, pkgs, ... }: let
|
||||||
|
ghosttyWithGL = (config.lib.nixGL.wrap pkgs.ghostty);
|
||||||
|
shaders = pkgs.fetchFromGitHub {
|
||||||
|
owner = "sahaj-b";
|
||||||
|
repo = "ghostty-cursor-shaders";
|
||||||
|
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
|
||||||
|
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
package = ghosttyWithGL;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
confirm-close-surface = false;
|
confirm-close-surface = false;
|
||||||
copy-on-select = false;
|
copy-on-select = false;
|
||||||
title-report = true;
|
title-report = true;
|
||||||
|
|
||||||
|
custom-shader = "${shaders}/cursor_warp.glsl";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,10 @@
|
|||||||
settings = {
|
settings = {
|
||||||
# theme = "catppuccin-mocha";
|
# theme = "catppuccin-mocha";
|
||||||
editor = {
|
editor = {
|
||||||
|
rulers = [ 81 ];
|
||||||
insert-final-newline = false;
|
insert-final-newline = false;
|
||||||
|
indent-guides.render = true;
|
||||||
|
|
||||||
whitespace.render = {
|
whitespace.render = {
|
||||||
space = "all";
|
space = "all";
|
||||||
tab = "all";
|
tab = "all";
|
||||||
@@ -15,7 +18,11 @@
|
|||||||
newline = "none";
|
newline = "none";
|
||||||
};
|
};
|
||||||
|
|
||||||
indent-guides.render = true;
|
cursor-shape = {
|
||||||
|
normal = "block";
|
||||||
|
insert = "bar";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,70 +1,32 @@
|
|||||||
{ pkgs, lib, config, collection, swww_flags, inputs }: {
|
{ pkgs, lib, config, osConfig, inputs, username, ... }: let
|
||||||
|
optImport = path: lib.optional (builtins.pathExists path) path;
|
||||||
|
hostname = osConfig.networking.hostName;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./hyprland/zoom.nix
|
||||||
|
] ++
|
||||||
|
optImport ../../host/${hostname}/modules/hyprland.nix ++
|
||||||
|
optImport ../../user/${username}/modules/hyprland.nix;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
ghostty
|
ghostty
|
||||||
pamixer
|
pamixer
|
||||||
wofi
|
|
||||||
clipse
|
clipse
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wl-clip-persist
|
wl-clip-persist
|
||||||
xclip
|
xclip
|
||||||
|
awww
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland =
|
wayland.windowManager.hyprland = let
|
||||||
let
|
|
||||||
colors = config.lib.stylix.colors;
|
colors = config.lib.stylix.colors;
|
||||||
|
|
||||||
wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" {
|
|
||||||
libraries = [ pkgs.python3Packages.requests ];
|
|
||||||
flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ];
|
|
||||||
} /*py*/ ''
|
|
||||||
import requests as requests
|
|
||||||
from random import choice
|
|
||||||
from os import system, mkdir, listdir
|
|
||||||
from os.path import exists
|
|
||||||
|
|
||||||
notify = lambda s: system(f"notify-desktop Wallpaper '{s}'")
|
|
||||||
folder = "${config.home.homeDirectory}/Wallpapers"
|
|
||||||
url = "https://wallhaven.cc/api/v1/collections/${collection}"
|
|
||||||
with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f:
|
|
||||||
token = f.read()
|
|
||||||
|
|
||||||
notify("Updating wallpaper!")
|
|
||||||
|
|
||||||
try:
|
|
||||||
json = requests.get(url, params={'apikey': token}).json()
|
|
||||||
|
|
||||||
wallpaper = choice(json['data'])
|
|
||||||
link = wallpaper['path']
|
|
||||||
format = wallpaper['file_type']
|
|
||||||
id = wallpaper['id']
|
|
||||||
|
|
||||||
if format == "image/jpeg": ext = "jpg"
|
|
||||||
else: ext = "png"
|
|
||||||
|
|
||||||
filename = f"{id}.{ext}"
|
|
||||||
|
|
||||||
if not exists(f"{folder}/{filename}"):
|
|
||||||
if not exists(folder):
|
|
||||||
mkdir(f"{folder}")
|
|
||||||
|
|
||||||
notify("Downloading...")
|
|
||||||
with open(f"{folder}/{filename}", 'wb') as f:
|
|
||||||
r = requests.get(link)
|
|
||||||
f.write(r.content)
|
|
||||||
|
|
||||||
except requests.exceptions.ConnectionError:
|
|
||||||
notify("Offline mode")
|
|
||||||
filename = choice(listdir(folder))
|
|
||||||
|
|
||||||
finally:
|
|
||||||
system(f"${lib.getExe pkgs.swww} img {folder}/{filename} ${swww_flags}")
|
|
||||||
'';
|
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
configType = "hyprlang";
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
|
|
||||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
plugins = with inputs.hyprland-plugins.packages.${pkgs.system}; [
|
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||||
# hyprbars # Version mismatch
|
# hyprbars # Version mismatch
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -79,6 +41,11 @@
|
|||||||
env = [
|
env = [
|
||||||
"XDG_SESSION_TYPE,wayland"
|
"XDG_SESSION_TYPE,wayland"
|
||||||
"QT_QPA_PLATFORM,wayland"
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
"QT_QPA_PLATFORMTHEME,xdgdesktopportal"
|
||||||
|
"GTK_USE_PORTAL,1"
|
||||||
|
"TDESKTOP_USE_GTK_FILE_DIALOG,1"
|
||||||
|
"NIXOS_OZONE_WL,1"
|
||||||
|
"ELECTRON_OZONE_PLATFORM_HINT,auto"
|
||||||
|
|
||||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||||
"XDG_SESSION_DESKTOP,Hyprland"
|
"XDG_SESSION_DESKTOP,Hyprland"
|
||||||
@@ -96,6 +63,13 @@
|
|||||||
enable_stdout_logs = true;
|
enable_stdout_logs = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
"col.inactive_border" = lib.mkForce "rgba(00000000)";
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration.inactive_opacity = lib.mkDefault .95;
|
||||||
|
decoration.border_part_of_window = false;
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
focus_on_activate = true;
|
focus_on_activate = true;
|
||||||
};
|
};
|
||||||
@@ -124,22 +98,31 @@
|
|||||||
"3, horizontal, workspace"
|
"3, horizontal, workspace"
|
||||||
];
|
];
|
||||||
|
|
||||||
windowrule = [
|
workspace = [
|
||||||
"float, class:^(imv)$"
|
"w[t1], gapsout:0"
|
||||||
"float, class:^(feh)$"
|
|
||||||
"float, class:^(mpv)$"
|
|
||||||
"float, title:^(Список друзей)"
|
|
||||||
"move onscreen cursor -50% -50%, class:^(xdragon)$"
|
|
||||||
"float, title:(nmtui)"
|
|
||||||
"float, title:(pulsemixer)"
|
|
||||||
"float, title:(clipse)"
|
|
||||||
"size 622 652, title:(clipse)"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
exec-once = [
|
windowrule = [
|
||||||
|
"match:class imv, float 1"
|
||||||
|
"match:class feh, float 1"
|
||||||
|
"match:class mpv, float 1"
|
||||||
|
|
||||||
|
"match:title Список друзей, float 1"
|
||||||
|
"match:title nmtui, float 1"
|
||||||
|
"match:title pulsemixer, float 1"
|
||||||
|
|
||||||
|
"match:title clipse, float 1"
|
||||||
|
"match:title clipse, size 622 652"
|
||||||
|
|
||||||
|
"match:focus 1, rounding 0"
|
||||||
|
"match:float 0, match:workspace w[t1], border_size 0"
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = lib.mkBefore [
|
||||||
"systemctl --user start plasma-polkit-agent"
|
"systemctl --user start plasma-polkit-agent"
|
||||||
"${lib.getExe' pkgs.swww "swww-daemon"}"
|
"${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --systemd --all"
|
||||||
"${lib.getExe wallpaper_changer}"
|
"systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WAYLAND_DISPLAY DISPLAY GTK_USE_PORTAL QT_QPA_PLATFORMTHEME TDESKTOP_USE_GTK_FILE_DIALOG NIXOS_OZONE_WL ELECTRON_OZONE_PLATFORM_HINT"
|
||||||
|
"awww-daemon"
|
||||||
"wl-clip-persist --clipboard both"
|
"wl-clip-persist --clipboard both"
|
||||||
"clipse -listen"
|
"clipse -listen"
|
||||||
"${lib.getExe' pkgs.udiskie "udiskie"}"
|
"${lib.getExe' pkgs.udiskie "udiskie"}"
|
||||||
@@ -153,9 +136,9 @@
|
|||||||
"$mainMod, M, exit,"
|
"$mainMod, M, exit,"
|
||||||
"$mainMod, E, exec, ghostty -e sh -c yazi"
|
"$mainMod, E, exec, ghostty -e sh -c yazi"
|
||||||
"$mainMod, F, togglefloating,"
|
"$mainMod, F, togglefloating,"
|
||||||
"$mainMod, D, exec, wofi --show drun"
|
|
||||||
"$mainMod, P, pseudo, # dwindle"
|
"$mainMod, P, pseudo, # dwindle"
|
||||||
"$mainMod, J, togglesplit, # dwindle"
|
"$mainMod, J, layoutmsg, togglesplit"
|
||||||
|
"$mainMod, K, layoutmsg, swapsplit"
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
# Move focus with mainMod + arrow keys
|
||||||
"$mainMod, left, movefocus, l"
|
"$mainMod, left, movefocus, l"
|
||||||
@@ -213,22 +196,14 @@
|
|||||||
", XF86AudioMute, exec, pamixer -t"
|
", XF86AudioMute, exec, pamixer -t"
|
||||||
", XF86AudioMicMute, exec, pamixer --default-source -m"
|
", XF86AudioMicMute, exec, pamixer --default-source -m"
|
||||||
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
||||||
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} position 5-"
|
|
||||||
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} position 5+"
|
|
||||||
|
|
||||||
", XF86Explorer, exec, ghostty -e sh -c yazi"
|
", XF86Explorer, exec, ghostty -e sh -c yazi"
|
||||||
", XF86Mail, exec, thunderbird"
|
", XF86Mail, exec, thunderbird"
|
||||||
", XF86WWW, exec, google-chrome-stable" # TODO: Replace hard-code to some variable
|
", XF86WWW, exec, google-chrome-stable" # TODO: Replace hard-code to some variable
|
||||||
|
|
||||||
# Brightness control
|
# Brightness control
|
||||||
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%- "
|
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%- "
|
||||||
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set +5% "
|
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set +5% "
|
||||||
|
|
||||||
# Waybar
|
|
||||||
"$mainMod, B, exec, pkill -SIGUSR1 waybar"
|
|
||||||
#"$mainMod, W, exec, pkill -SIGUSR2 waybar"
|
|
||||||
|
|
||||||
"$mainMod, W, exec, ${lib.getExe wallpaper_changer}"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
binde = [
|
binde = [
|
||||||
@@ -236,6 +211,11 @@
|
|||||||
", XF86AudioLowerVolume, exec, pamixer -d 5 "
|
", XF86AudioLowerVolume, exec, pamixer -d 5 "
|
||||||
];
|
];
|
||||||
|
|
||||||
|
bindc = [
|
||||||
|
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} position 5-"
|
||||||
|
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} position 5+"
|
||||||
|
];
|
||||||
|
|
||||||
bindo = [
|
bindo = [
|
||||||
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
|
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
|
||||||
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
|
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
|
||||||
@@ -248,4 +228,27 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
pkgs.xdg-desktop-portal-termfilechooser
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
common = {
|
||||||
|
default = [ "hyprland" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland = {
|
||||||
|
default = [ "hyprland" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||||
|
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bind = [
|
||||||
|
# "$mainMod, mouse_down, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float * 1.1')"
|
||||||
|
# "$mainMod, mouse_up , exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '(.float * 0.9) | if . < 1 then 1 else . end')"
|
||||||
|
|
||||||
|
"$mainMod SHIFT, mouse_up , exec, hyprctl -q keyword cursor:zoom_factor 1"
|
||||||
|
"$mainMod SHIFT, mouse_down , exec, hyprctl -q keyword cursor:zoom_factor 1"
|
||||||
|
"$mainMod SHIFT, minus , exec, hyprctl -q keyword cursor:zoom_factor 1"
|
||||||
|
"$mainMod SHIFT, KP_SUBTRACT, exec, hyprctl -q keyword cursor:zoom_factor 1"
|
||||||
|
"$mainMod SHIFT, 0 , exec, hyprctl -q keyword cursor:zoom_factor 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
"$mainMod, equal , exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float * 1.1')"
|
||||||
|
"$mainMod, minus , exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '(.float * 0.9) | if . < 1 then 1 else . end')"
|
||||||
|
"$mainMod, KP_ADD , exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float * 1.1')"
|
||||||
|
"$mainMod, KP_SUBTRACT, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '(.float * 0.9) | if . < 1 then 1 else . end')"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
+12
-20
@@ -1,21 +1,13 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, lib, ... }: let
|
||||||
let
|
colors = config.lib.stylix.colors.withHashtag;
|
||||||
colors = config.lib.stylix.colors;
|
accent = colors.${config.stylix.accent};
|
||||||
in {
|
in {
|
||||||
home.packages = [ pkgs.mako ];
|
services.mako = {
|
||||||
xdg.configFile."mako/config".text = ''
|
enable = true;
|
||||||
background-color=#${colors.base00}
|
|
||||||
text-color=#${colors.base05}
|
|
||||||
border-color=#${colors.base0B}
|
|
||||||
border-radius=10
|
|
||||||
margin=16
|
|
||||||
progress-color=over #${colors.base0A}
|
|
||||||
default-timeout=5000
|
|
||||||
|
|
||||||
[urgency=high]
|
settings = {
|
||||||
border-color=#${colors.base09}
|
border-color = lib.mkForce accent;
|
||||||
|
default-timeout = 5000;
|
||||||
[urgency=low]
|
};
|
||||||
border-color=#${colors.base04}
|
};
|
||||||
'';
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, pkgs, ... }: let
|
{ config, pkgs, ... }: let
|
||||||
icon = pkgs.fetchurl {
|
icon = pkgs.fetchurl {
|
||||||
url = "https://cloud.codrs.ru/pub/nixos-chan.webp?raw";
|
url = "https://cloud.lair.moe/pub/nixos-chan.webp?raw";
|
||||||
name = "nixos-chan.webp";
|
name = "nixos-chan.webp";
|
||||||
sha256 = "sha256-0majB9ljjMdZwvOijEgWdFKxWLje5tHgXHBJUWZfHfY=";
|
sha256 = "sha256-0majB9ljjMdZwvOijEgWdFKxWLje5tHgXHBJUWZfHfY=";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs-fixed, lib, host, ... }:
|
{ pkgs-pinned, lib, osConfig, ... }:
|
||||||
|
|
||||||
lib.mkIf (!host.laptop) {
|
lib.mkIf (!osConfig.host.laptop) {
|
||||||
home.packages = with pkgs-fixed; [
|
home.packages = with pkgs-pinned; [
|
||||||
(blender.override { cudaSupport = true; })
|
(blender.override { cudaSupport = true; })
|
||||||
aseprite
|
aseprite
|
||||||
krita
|
krita
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
jetbrains.idea-community
|
|
||||||
android-studio
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
{ pkgs, inputs, pkgs-fixed, ... }: {
|
{ pkgs, pkgs-stable, ... }: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
pkgs-fixed.ayugram-desktop
|
ayugram-desktop
|
||||||
vesktop
|
vesktop
|
||||||
obs-studio
|
obs-studio
|
||||||
mpv
|
mpv
|
||||||
|
imhex
|
||||||
obsidian
|
obsidian
|
||||||
qbittorrent
|
pkgs-stable.qbittorrent
|
||||||
thunderbird
|
thunderbird
|
||||||
libreoffice
|
libreoffice
|
||||||
|
pear-desktop
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ stdenv, lib, config, colors, ... }:
|
{ stdenv, colors, accent ? colors.base0B, ... }:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "AGS theme";
|
name = "AGS theme";
|
||||||
|
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
echo \$bg: \#${colors.base00}\; > colors.scss
|
echo \$bg: \#${colors.base00}\; > colors.scss
|
||||||
echo \$surface0: \#${colors.base02}\; >> colors.scss
|
echo \$surface0: \#${colors.base02}\; >> colors.scss
|
||||||
echo \$fg: \#${colors.base05}\; >> colors.scss
|
echo \$fg: \#${colors.base05}\; >> colors.scss
|
||||||
echo \$accent: \#${colors.base0B}\; >> colors.scss
|
echo \$accent: \#${accent}\; >> colors.scss
|
||||||
|
|
||||||
echo \#${colors.base0B} > accent.css
|
echo \#${accent} > accent.css
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
|||||||
+11
-1
@@ -1,4 +1,14 @@
|
|||||||
{
|
{ lib, ... }: {
|
||||||
|
# Keep qtct/Kvantum for styling, but tell qtct to delegate standard file
|
||||||
|
# dialogs to xdg-desktop-portal. This is what makes AyuGram/Telegram-like Qt
|
||||||
|
# apps use the Yazi picker instead of Qt's built-in dialog.
|
||||||
|
stylix.targets.qt.standardDialogs = "xdgdesktopportal";
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
|
||||||
|
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
|
||||||
|
};
|
||||||
|
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "qtct";
|
platformTheme.name = "qtct";
|
||||||
|
|||||||
@@ -0,0 +1,182 @@
|
|||||||
|
{ pkgs, config, ... }: let
|
||||||
|
c = config.lib.stylix.colors.withHashtag;
|
||||||
|
font = config.stylix.fonts.sansSerif.name;
|
||||||
|
in {
|
||||||
|
programs.quickshell = {
|
||||||
|
enable = true;
|
||||||
|
activeConfig = "control-center";
|
||||||
|
|
||||||
|
configs = {
|
||||||
|
control-center = pkgs.writeTextDir "shell.qml" ''
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
import Quickshell.Hyprland
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
PanelWindow {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: true
|
||||||
|
right: true
|
||||||
|
}
|
||||||
|
|
||||||
|
implicitWidth: 360
|
||||||
|
implicitHeight: wrapper.implicitHeight
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
|
||||||
|
margins {
|
||||||
|
top: -12
|
||||||
|
right: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
exclusionMode: ExclusionMode.Normal
|
||||||
|
exclusiveZone: 0
|
||||||
|
|
||||||
|
WlrLayershell.namespace: "qs-control-center"
|
||||||
|
WlrLayershell.layer: WlrLayer.Overlay
|
||||||
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: wrapper
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
readonly property int outerMargin: 12
|
||||||
|
readonly property int innerMargin: 18
|
||||||
|
readonly property int buttonHeight: 48
|
||||||
|
readonly property int spacingSize: 14
|
||||||
|
|
||||||
|
implicitWidth: 360
|
||||||
|
implicitHeight: panel.implicitHeight + outerMargin * 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: panel
|
||||||
|
|
||||||
|
x: wrapper.outerMargin
|
||||||
|
y: wrapper.outerMargin
|
||||||
|
width: parent.width - wrapper.outerMargin * 2
|
||||||
|
height: implicitHeight
|
||||||
|
|
||||||
|
implicitHeight: content.implicitHeight + wrapper.innerMargin * 2
|
||||||
|
|
||||||
|
radius: 20
|
||||||
|
color: "${c.base00}"
|
||||||
|
border.color: "${c.base03}"
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: content
|
||||||
|
|
||||||
|
x: wrapper.innerMargin
|
||||||
|
y: wrapper.innerMargin
|
||||||
|
width: parent.width - wrapper.innerMargin * 2
|
||||||
|
|
||||||
|
spacing: wrapper.spacingSize
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "Control Center"
|
||||||
|
color: "${c.base05}"
|
||||||
|
font.family: "${font}"
|
||||||
|
font.pixelSize: 22
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: wrapper.buttonHeight
|
||||||
|
radius: 12
|
||||||
|
color: audioMouse.containsMouse ? "${c.base02}" : "${c.base01}"
|
||||||
|
border.color: "${c.base03}"
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "Audio settings"
|
||||||
|
color: "${c.base05}"
|
||||||
|
font.family: "${font}"
|
||||||
|
font.pixelSize: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: audioMouse
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: Hyprland.dispatch("exec pavucontrol")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: wrapper.buttonHeight
|
||||||
|
radius: 12
|
||||||
|
color: networkMouse.containsMouse ? "${c.base02}" : "${c.base01}"
|
||||||
|
border.color: "${c.base03}"
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "Network settings"
|
||||||
|
color: "${c.base05}"
|
||||||
|
font.family: "${font}"
|
||||||
|
font.pixelSize: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: networkMouse
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: Hyprland.dispatch("exec nm-connection-editor")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: wrapper.buttonHeight
|
||||||
|
radius: 12
|
||||||
|
color: bluetoothMouse.containsMouse ? "${c.base02}" : "${c.base01}"
|
||||||
|
border.color: "${c.base03}"
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "Bluetooth"
|
||||||
|
color: "${c.base05}"
|
||||||
|
font.family: "${font}"
|
||||||
|
font.pixelSize: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: bluetoothMouse
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: Hyprland.dispatch("exec blueman-manager")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: 1
|
||||||
|
color: "${c.base03}"
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "Quickshell + Hyprland"
|
||||||
|
color: "${c.base04}"
|
||||||
|
font.family: "${font}"
|
||||||
|
font.pixelSize: 13
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
settings = {
|
||||||
|
"*" = {
|
||||||
|
serverAliveInterval = 30;
|
||||||
|
serverAliveCountMax = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{ config, lib, ... }: let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
|
||||||
|
base16Names = [
|
||||||
|
"base00"
|
||||||
|
"base01"
|
||||||
|
"base02"
|
||||||
|
"base03"
|
||||||
|
"base04"
|
||||||
|
"base05"
|
||||||
|
"base06"
|
||||||
|
"base07"
|
||||||
|
"base08"
|
||||||
|
"base09"
|
||||||
|
"base0A"
|
||||||
|
"base0B"
|
||||||
|
"base0C"
|
||||||
|
"base0D"
|
||||||
|
"base0E"
|
||||||
|
"base0F"
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
options.stylix.accent = mkOption {
|
||||||
|
type = types.enum base16Names;
|
||||||
|
default = "base0B";
|
||||||
|
description = ''
|
||||||
|
Base16 colour used as the user accent.
|
||||||
|
|
||||||
|
Use it as:
|
||||||
|
|
||||||
|
config.lib.stylix.colors.${config.stylix.accent}
|
||||||
|
config.lib.stylix.colors.withHashtag.${config.stylix.accent}
|
||||||
|
|
||||||
|
This module deliberately does not extend config.lib.stylix.colors: Stylix
|
||||||
|
exports that value as a generated base16 attrset/functor, and replacing or
|
||||||
|
partially extending it can break Stylix targets which expect metadata such
|
||||||
|
as `scheme` to be present.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
services = {
|
||||||
|
walker = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
elephant.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.bind = [
|
||||||
|
"$mainMod, D, exec, walker"
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{ config, pkgs, lib, ... }: let
|
||||||
|
c = config.lib.stylix.colors;
|
||||||
|
|
||||||
|
wobSocket = ''"''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/wob.sock"'';
|
||||||
|
|
||||||
|
volumeStep = pkgs.writeShellScriptBin "volume-step" /*bash*/ ''
|
||||||
|
volume="$(${lib.getExe' pkgs.wireplumber "wpctl"} get-volume @DEFAULT_AUDIO_SINK@)"
|
||||||
|
percent="$(printf '%s\n' "$volume" | ${pkgs.gawk}/bin/awk '{print int($2 * 100)}')"
|
||||||
|
|
||||||
|
if printf '%s\n' "$volume" | ${pkgs.gnugrep}/bin/grep -q MUTED; then
|
||||||
|
printf '%s muted\n' "$percent" > ${wobSocket}
|
||||||
|
else
|
||||||
|
printf '%s volume\n' "$percent" > ${wobSocket}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
brightnessStep = pkgs.writeShellScriptBin "brightness-step" /*bash*/ ''
|
||||||
|
percent="$(${lib.getExe pkgs.brightnessctl} -m | ${lib.getExe' pkgs.coreutils "cut"} -d, -f4 | ${lib.getExe' pkgs.coreutils "tr"} -d '%')"
|
||||||
|
printf '%s brightness\n' "$percent" > ${wobSocket}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
systemd.user = {
|
||||||
|
services.wob.Install.WantedBy = lib.mkForce [ ];
|
||||||
|
sockets.wob.Install.WantedBy = lib.mkForce [ "sockets.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.wob = {
|
||||||
|
enable = true;
|
||||||
|
systemd = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"" = {
|
||||||
|
timeout = 2000;
|
||||||
|
max = 100;
|
||||||
|
|
||||||
|
width = 280;
|
||||||
|
height = 32;
|
||||||
|
|
||||||
|
border_offset = 0;
|
||||||
|
border_size = 2;
|
||||||
|
bar_padding = 4;
|
||||||
|
|
||||||
|
anchor = "top center";
|
||||||
|
margin = "0 0 0 0";
|
||||||
|
|
||||||
|
overflow_mode = "nowrap";
|
||||||
|
orientation = "horizontal";
|
||||||
|
};
|
||||||
|
|
||||||
|
"style.volume" = { bar_color = c.base0D; };
|
||||||
|
"style.brightness" = { bar_color = c.base0A; };
|
||||||
|
"style.muted" = { bar_color = c.base04; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bindel = [
|
||||||
|
", XF86AudioRaiseVolume, exec, ${lib.getExe volumeStep} up"
|
||||||
|
", XF86AudioLowerVolume, exec, ${lib.getExe volumeStep} down"
|
||||||
|
", XF86MonBrightnessUp, exec, ${lib.getExe brightnessStep} up"
|
||||||
|
", XF86MonBrightnessDown, exec, ${lib.getExe brightnessStep} down"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
", XF86AudioMute, exec, ${lib.getExe volumeStep} mute"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ pkgs, ... }: {
|
|
||||||
xdg.configFile."wofi/style.css".source = pkgs.fetchurl {
|
|
||||||
name = "style.css";
|
|
||||||
url = "https://github.com/joao-vitor-sr/wofi-themes-collection/raw/main/themes/nord.css";
|
|
||||||
sha256 = "sha256-rMDtE7Q0hmqd9LD+Ur/QR6cMan9ev6e9IyzpwY367c0=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+311
-80
@@ -1,88 +1,319 @@
|
|||||||
{ pkgs, lib, inputs, ... }: {
|
{ pkgs, lib, inputs, ... }: let
|
||||||
home.packages = with pkgs; [
|
hostSystem = pkgs.stdenv.hostPlatform.system;
|
||||||
( ouch.override { enableUnfree = true; } )
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.yazi = {
|
yaziPkg = inputs.yazi.packages.${hostSystem}.default.override {
|
||||||
package = inputs.yazi.packages
|
_7zz = pkgs._7zz-rar;
|
||||||
.${pkgs.stdenv.hostPlatform.system}.default
|
};
|
||||||
.override { _7zz = pkgs._7zz-rar; };
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
shellWrapperName = "y";
|
|
||||||
|
|
||||||
settings = {
|
yaziOpen = pkgs.writeShellScriptBin "yazi-open" ''
|
||||||
mgr = {
|
set -efu
|
||||||
show_hidden = true;
|
|
||||||
};
|
|
||||||
preview = {
|
|
||||||
max_width = 1000;
|
|
||||||
max_height = 1000;
|
|
||||||
};
|
|
||||||
plugin = {
|
|
||||||
preloaders = [
|
|
||||||
{ name = "*.crdownload"; run = "noop"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
prepend_previewers = [
|
target="''${1:-$HOME}"
|
||||||
{ mime = "application/xz"; run = "ouch"; }
|
|
||||||
{ mime = "application/zip"; run = "ouch"; }
|
|
||||||
{ mime = "application/rar"; run = "ouch"; }
|
|
||||||
{ mime = "application/gzip"; run = "ouch"; }
|
|
||||||
{ mime = "application/7z-compressed"; run = "ouch"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
prepend_fetchers = [
|
case "$target" in
|
||||||
{ id = "git"; mime = "*"; run = "git"; }
|
file://*)
|
||||||
];
|
target="$(${lib.getExe pkgs.python3} -c 'import sys, urllib.parse; print(urllib.parse.unquote(urllib.parse.urlparse(sys.argv[1]).path))' "$target")"
|
||||||
};
|
;;
|
||||||
};
|
esac
|
||||||
|
|
||||||
plugins = with pkgs.yaziPlugins; {
|
if [ -f "$target" ]; then
|
||||||
inherit
|
target="$(dirname "$target")"
|
||||||
chmod
|
fi
|
||||||
ouch
|
|
||||||
full-border
|
|
||||||
starship
|
|
||||||
mount
|
|
||||||
git
|
|
||||||
toggle-pane
|
|
||||||
;
|
|
||||||
};
|
|
||||||
|
|
||||||
initLua = ''
|
if [ ! -e "$target" ]; then
|
||||||
require("git"):setup()
|
target="$HOME"
|
||||||
require("full-border"):setup()
|
fi
|
||||||
require("starship"):setup()
|
|
||||||
'';
|
|
||||||
|
|
||||||
keymap = {
|
exec ${lib.getExe pkgs.ghostty} --title="Yazi" -e ${lib.getExe yaziPkg} "$target"
|
||||||
mgr.prepend_keymap = [
|
'';
|
||||||
{
|
|
||||||
on = "T";
|
yaziFileChooser = pkgs.writeShellScriptBin "yazi-file-chooser" ''
|
||||||
run = "plugin toggle-pane max-preview";
|
set -efu
|
||||||
desc = "Maximize or restore the preview pane";
|
|
||||||
}
|
directory="''${2:-0}"
|
||||||
{
|
save="''${3:-0}"
|
||||||
on = ["c" "m"];
|
path="''${4:-}"
|
||||||
run = "plugin chmod";
|
out="''${5:?missing termfilechooser output path}"
|
||||||
desc = "Chmod on selected files";
|
|
||||||
}
|
state_dir="''${XDG_STATE_HOME:-$HOME/.local/state}/xdg-desktop-portal-termfilechooser"
|
||||||
{
|
last_selected_path="$state_dir/last-selected"
|
||||||
on = ["M"];
|
${lib.getExe' pkgs.coreutils "mkdir"} -p "$state_dir"
|
||||||
run = "plugin mount";
|
|
||||||
desc = "Open mount menu";
|
if [ -s "$last_selected_path" ]; then
|
||||||
}
|
IFS= read -r last_selected < "$last_selected_path" || true
|
||||||
{
|
if [ -d "$last_selected" ]; then
|
||||||
on = [ "<C-n>" ];
|
if [ "$save" = "1" ] && [ -n "$path" ]; then
|
||||||
run = ''shell '${lib.getExe pkgs.xdragon} -x -i -T "$@"' --confirm'';
|
path="$last_selected/''${path##*/}"
|
||||||
}
|
else
|
||||||
{
|
path="$last_selected"
|
||||||
on = [ "g" "<S-d>" ];
|
fi
|
||||||
run = ''cd /mnt/D'';
|
fi
|
||||||
desc = "Goto D drive";
|
fi
|
||||||
}
|
|
||||||
];
|
if [ -z "$path" ]; then
|
||||||
};
|
path="$HOME"
|
||||||
};
|
fi
|
||||||
|
|
||||||
|
created_placeholder=0
|
||||||
|
if [ "$save" = "1" ] && [ ! -e "$path" ]; then
|
||||||
|
placeholder_dir="''${path%/*}"
|
||||||
|
if [ "$placeholder_dir" != "$path" ]; then
|
||||||
|
${lib.getExe' pkgs.coreutils "mkdir"} -p "$placeholder_dir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
{
|
||||||
|
printf '%s\n' 'This file was created by xdg-desktop-portal-termfilechooser.'
|
||||||
|
printf '%s\n' 'Move/rename it in Yazi, then open/select it to choose the save path.'
|
||||||
|
} > "$path"
|
||||||
|
created_placeholder=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
${lib.getExe pkgs.ghostty} --title="Yazi File Picker" -e ${lib.getExe yaziPkg} --chooser-file="$out" --cwd-file="$last_selected_path" "$path"
|
||||||
|
|
||||||
|
if [ "$directory" = "1" ] && [ ! -s "$out" ] && [ -s "$last_selected_path" ]; then
|
||||||
|
IFS= read -r cwd < "$last_selected_path" || true
|
||||||
|
if [ -n "''${cwd:-}" ] && [ -d "$cwd" ]; then
|
||||||
|
printf '%s\n' "$cwd" > "$out"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$created_placeholder" = "1" ] && [ ! -s "$out" ]; then
|
||||||
|
${lib.getExe' pkgs.coreutils "rm"} -f "$path"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
fileManager1 = pkgs.writeShellScriptBin "yazi-filemanager1" ''
|
||||||
|
exec ${pkgs.python3.withPackages (ps: [ ps.dbus-next ])}/bin/python ${pkgs.writeText "yazi-filemanager1.py" ''
|
||||||
|
import asyncio
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
|
from dbus_next.aio import MessageBus
|
||||||
|
from dbus_next.constants import BusType
|
||||||
|
from dbus_next.service import ServiceInterface, method
|
||||||
|
|
||||||
|
YAZI_OPEN = ${builtins.toJSON (lib.getExe yaziOpen)}
|
||||||
|
|
||||||
|
|
||||||
|
def uri_to_path(uri: str) -> str | None:
|
||||||
|
parsed = urllib.parse.urlparse(uri)
|
||||||
|
if parsed.scheme != "file":
|
||||||
|
return None
|
||||||
|
return urllib.parse.unquote(parsed.path)
|
||||||
|
|
||||||
|
|
||||||
|
def open_paths(uris: list[str], reveal_items: bool = False) -> None:
|
||||||
|
for uri in uris:
|
||||||
|
path = uri_to_path(uri)
|
||||||
|
if not path:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if reveal_items and os.path.isfile(path):
|
||||||
|
path = os.path.dirname(path)
|
||||||
|
|
||||||
|
subprocess.Popen(
|
||||||
|
[YAZI_OPEN, path],
|
||||||
|
start_new_session=True,
|
||||||
|
stdout=subprocess.DEVNULL,
|
||||||
|
stderr=subprocess.DEVNULL,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class FileManager1(ServiceInterface):
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__("org.freedesktop.FileManager1")
|
||||||
|
|
||||||
|
@method()
|
||||||
|
def ShowFolders(self, uris: "as", startup_id: "s") -> "":
|
||||||
|
open_paths(uris)
|
||||||
|
|
||||||
|
@method()
|
||||||
|
def ShowItems(self, uris: "as", startup_id: "s") -> "":
|
||||||
|
open_paths(uris, reveal_items=True)
|
||||||
|
|
||||||
|
@method()
|
||||||
|
def ShowItemProperties(self, uris: "as", startup_id: "s") -> "":
|
||||||
|
open_paths(uris, reveal_items=True)
|
||||||
|
|
||||||
|
|
||||||
|
async def main() -> None:
|
||||||
|
bus = await MessageBus(bus_type=BusType.SESSION).connect()
|
||||||
|
bus.export("/org/freedesktop/FileManager1", FileManager1())
|
||||||
|
await bus.request_name("org.freedesktop.FileManager1")
|
||||||
|
await asyncio.Event().wait()
|
||||||
|
|
||||||
|
asyncio.run(main())
|
||||||
|
''}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
( ouch.override { enableUnfree = true; } )
|
||||||
|
yaziOpen
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = ''
|
||||||
|
[filechooser]
|
||||||
|
cmd=${lib.getExe yaziFileChooser}
|
||||||
|
default_dir=$HOME
|
||||||
|
open_mode=suggested
|
||||||
|
save_mode=last
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.desktopEntries.yazi = {
|
||||||
|
name = "Yazi";
|
||||||
|
genericName = "File Manager";
|
||||||
|
exec = "${lib.getExe yaziOpen} %U";
|
||||||
|
terminal = false;
|
||||||
|
mimeType = [ "inode/directory" ];
|
||||||
|
categories = [ "System" "FileTools" "FileManager" ];
|
||||||
|
startupNotify = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = {
|
||||||
|
"inode/directory" = "yazi.desktop";
|
||||||
|
"application/x-gnome-saved-search" = "yazi.desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.dataFile."dbus-1/services/org.freedesktop.FileManager1.service".text = ''
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=org.freedesktop.FileManager1
|
||||||
|
Exec=${lib.getExe fileManager1}
|
||||||
|
'';
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.windowrule = [
|
||||||
|
"match:class dragon-drop, move cursor_x-window_w/2 cursor_y-window_h/2"
|
||||||
|
"match:title Yazi File Picker, float 1"
|
||||||
|
"match:title Yazi File Picker, size 1200 800"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.yazi = {
|
||||||
|
package = yaziPkg;
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
mgr = {
|
||||||
|
show_hidden = true;
|
||||||
|
};
|
||||||
|
preview = {
|
||||||
|
max_width = 1000;
|
||||||
|
max_height = 1000;
|
||||||
|
};
|
||||||
|
plugin = {
|
||||||
|
preloaders = [
|
||||||
|
{ url = "*.crdownload"; run = "noop"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
prepend_previewers = [
|
||||||
|
{ mime = "application/xz"; run = "ouch"; }
|
||||||
|
{ mime = "application/zip"; run = "ouch"; }
|
||||||
|
{ mime = "application/rar"; run = "ouch"; }
|
||||||
|
{ mime = "application/gzip"; run = "ouch"; }
|
||||||
|
{ mime = "application/7z-compressed"; run = "ouch"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
prepend_fetchers = [
|
||||||
|
{ group = "git"; url = "*"; run = "git"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = let
|
||||||
|
yaziPlugin = name: pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
pname = "${name}.yazi";
|
||||||
|
version = "unstable";
|
||||||
|
src = inputs.yazi-plugins;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r ${name}.yazi/* $out/
|
||||||
|
rm -f $out/LICENSE
|
||||||
|
cp LICENSE $out/LICENSE
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in with pkgs.yaziPlugins; {
|
||||||
|
inherit
|
||||||
|
chmod
|
||||||
|
ouch
|
||||||
|
mount
|
||||||
|
toggle-pane
|
||||||
|
;
|
||||||
|
|
||||||
|
full-border = {
|
||||||
|
package = yaziPlugin "full-border";
|
||||||
|
setup = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
package = starship;
|
||||||
|
setup = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
package = git;
|
||||||
|
setup = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
initLua = ''
|
||||||
|
Status:children_add(function()
|
||||||
|
local h = cx.active.current.hovered
|
||||||
|
if not h or ya.target_family() ~= "unix" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
return ui.Line {
|
||||||
|
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||||
|
":",
|
||||||
|
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||||
|
" ",
|
||||||
|
}
|
||||||
|
end, 500, Status.RIGHT)
|
||||||
|
'';
|
||||||
|
|
||||||
|
keymap = {
|
||||||
|
mgr.prepend_keymap = [
|
||||||
|
{
|
||||||
|
on = "T";
|
||||||
|
run = "plugin toggle-pane max-preview";
|
||||||
|
desc = "Maximize or restore the preview pane";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = "Y";
|
||||||
|
run = ''shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list'';
|
||||||
|
desc = "Copy files into system clipboard";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = ["c" "m"];
|
||||||
|
run = "plugin chmod";
|
||||||
|
desc = "Chmod on selected files";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = ["M"];
|
||||||
|
run = "plugin mount";
|
||||||
|
desc = "Open mount menu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = [ "<C-n>" ];
|
||||||
|
run = "shell '${lib.getExe pkgs.dragon-drop} -x -A -i -T %s'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
on = [ "g" "<S-d>" ];
|
||||||
|
run = ''cd /mnt/D'';
|
||||||
|
desc = "Goto D drive";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-20
@@ -1,5 +1,6 @@
|
|||||||
{ config, pkgs, ... }: {
|
{ config, osConfig, pkgs, lib, ... }: {
|
||||||
home.packages = [ pkgs.nh ];
|
home.packages = [ pkgs.nh ];
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
zoxide.enable = true;
|
zoxide.enable = true;
|
||||||
fzf.enable = true;
|
fzf.enable = true;
|
||||||
@@ -36,7 +37,10 @@
|
|||||||
read_only = " RO";
|
read_only = " RO";
|
||||||
};
|
};
|
||||||
nix_shell.format = "[nix-shell]($style) ";
|
nix_shell.format = "[nix-shell]($style) ";
|
||||||
os.disabled = false;
|
os = {
|
||||||
|
disabled = false;
|
||||||
|
style = "white";
|
||||||
|
};
|
||||||
python = {
|
python = {
|
||||||
symbol = "py ";
|
symbol = "py ";
|
||||||
python_binary = ["python3" "python"];
|
python_binary = ["python3" "python"];
|
||||||
@@ -51,31 +55,23 @@
|
|||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting.enable = true;
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
shellAliases =
|
shellAliases = let
|
||||||
let
|
flakeDir = "~/nix";
|
||||||
flakeDir = "~/nix";
|
in {
|
||||||
in {
|
|
||||||
rb = "nh os switch ${flakeDir}";
|
rb = "nh os switch ${flakeDir}";
|
||||||
|
trb = "nh os test ${flakeDir}";
|
||||||
upd = "nix flake update --flake ${flakeDir}";
|
upd = "nix flake update --flake ${flakeDir}";
|
||||||
upg = "sudo nixos-rebuild switch --upgrade --flake ${flakeDir}";
|
|
||||||
|
|
||||||
hms = "nh home switch ${flakeDir}";
|
|
||||||
rhms = ''${pkgs.bash} $(home-manager generations | fzf | awk -F '-> ' '{print $2 "/activate"}')''; #https://github.com/nix-community/home-manager/issues/1114#issuecomment-2067785129
|
|
||||||
|
|
||||||
conf = "$EDITOR ${flakeDir}/nixos/hosts/$(hostname)/configuration.nix";
|
|
||||||
pkgs = "$EDITOR ${flakeDir}/nixos/packages.nix";
|
|
||||||
|
|
||||||
ll = "ls -l";
|
|
||||||
se = "sudoedit";
|
|
||||||
ff = "fastfetch";
|
|
||||||
cat = "${pkgs.lib.getExe pkgs.bat}";
|
cat = "${pkgs.lib.getExe pkgs.bat}";
|
||||||
cd = "z";
|
cd = "z";
|
||||||
lg = "lazygit";
|
lg = "lazygit";
|
||||||
|
s = "nix-shell . --run zsh";
|
||||||
|
} // lib.optionalAttrs osConfig.boot.loader.grub.useOSProber {
|
||||||
|
win = "sudo grub-reboot 2; sudo reboot";
|
||||||
};
|
};
|
||||||
|
|
||||||
initContent = ''
|
initContent = /*bash*/ ''
|
||||||
eval "$(zoxide init zsh)"
|
eval "$(zoxide init zsh)"
|
||||||
eval "$(nh completions zsh)"
|
|
||||||
source "$(fzf-share)/key-bindings.zsh"
|
source "$(fzf-share)/key-bindings.zsh"
|
||||||
source "$(fzf-share)/completion.zsh"
|
source "$(fzf-share)/completion.zsh"
|
||||||
'';
|
'';
|
||||||
@@ -84,8 +80,12 @@
|
|||||||
TERM=xterm-256color
|
TERM=xterm-256color
|
||||||
'';
|
'';
|
||||||
|
|
||||||
history.size = 10000;
|
history = {
|
||||||
history.path = "${config.xdg.dataHome}/zsh/history";
|
size = 10000;
|
||||||
|
path = "${config.xdg.dataHome}/zsh/history";
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
};
|
||||||
|
|
||||||
oh-my-zsh.enable = true;
|
oh-my-zsh.enable = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
My gf
|
||||||
|
|
||||||
|
- **Theme:** eris
|
||||||
|
- **Cursor:** [Miku](https://ko-fi.com/s/dcea0e990f)
|
||||||
+3
-4
@@ -1,16 +1,15 @@
|
|||||||
{ pkgs, pkgs-fixed, host, ... }: {
|
{ pkgs, pkgs-pinned, host, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/user/packages/cs_utils.nix
|
../../modules/user/packages/cs_utils.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
disabledModules = [
|
disabledModules = [
|
||||||
../../modules/user/packages/art.nix
|
../../modules/user/packages/art.nix
|
||||||
../../modules/user/packages/coding.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nautilus
|
nautilus
|
||||||
python3
|
python3
|
||||||
pkgs-fixed.jetbrains.pycharm-community
|
pkgs-pinned.jetbrains.pycharm-community
|
||||||
aseprite
|
aseprite
|
||||||
krita
|
krita
|
||||||
google-chrome
|
google-chrome
|
||||||
|
|||||||
@@ -1,26 +1,14 @@
|
|||||||
{ pkgs, lib, config, inputs, ... }: {
|
{ pkgs, lib, config, inputs, ... }: {
|
||||||
imports = [(
|
|
||||||
import ../../../modules/user/patterns/hyprland.nix {
|
|
||||||
inherit lib;
|
|
||||||
inherit pkgs;
|
|
||||||
inherit config;
|
|
||||||
inherit inputs;
|
|
||||||
collection = "cheeeest/1767552";
|
|
||||||
swww_flags = "";
|
|
||||||
}
|
|
||||||
)];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = let
|
wayland.windowManager.hyprland = let
|
||||||
colors = config.lib.stylix.colors;
|
colors = config.lib.stylix.colors;
|
||||||
|
accent = colors.${config.stylix.accent};
|
||||||
in {
|
in {
|
||||||
settings = {
|
settings = {
|
||||||
monitor = ",preferred,auto,1";
|
|
||||||
exec-once =["${lib.getExe pkgs.linux-wallpaperengine} ~/.local/share/wpe/wallpaper --assets-dir ~/.local/share/wpe/assets --screen-root DP-3 --noautomute"];
|
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 5;
|
||||||
gaps_out = 5;
|
gaps_out = 5;
|
||||||
border_size = 2;
|
border_size = 2;
|
||||||
"col.active_border" = "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg";
|
"col.active_border" = "rgba(${accent}ee) rgba(${colors.base0C}ee) 45deg";
|
||||||
"col.inactive_border" = "rgba(${colors.base05}aa)";
|
"col.inactive_border" = "rgba(${colors.base05}aa)";
|
||||||
|
|
||||||
layout = "dwindle";
|
layout = "dwindle";
|
||||||
@@ -60,7 +48,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
|
||||||
smart_split = true;
|
smart_split = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,8 @@
|
|||||||
in {
|
in {
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
overlays.enable = false;
|
||||||
|
|
||||||
targets = {
|
targets = {
|
||||||
hyprland.enable = false;
|
hyprland.enable = false;
|
||||||
waybar.enable = false;
|
waybar.enable = false;
|
||||||
@@ -87,6 +89,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml";
|
||||||
|
accent = "base0E";
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
|
|
||||||
image = pkgs.fetchurl {
|
image = pkgs.fetchurl {
|
||||||
@@ -94,7 +97,7 @@ in {
|
|||||||
sha256 = "0ypqnq7bsr2giq7nq1c3xrw2m0gkii9j5zhfp512r93wc96zvm50";
|
sha256 = "0ypqnq7bsr2giq7nq1c3xrw2m0gkii9j5zhfp512r93wc96zvm50";
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTheme = {
|
icons = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.pop-icon-theme;
|
package = pkgs.pop-icon-theme;
|
||||||
dark = "Pop-Dark";
|
dark = "Pop-Dark";
|
||||||
|
|||||||
@@ -0,0 +1,321 @@
|
|||||||
|
{ osConfig, config, pkgs, lib, ... }: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
font-awesome
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
playerctl
|
||||||
|
cava
|
||||||
|
pulsemixer
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
|
||||||
|
settings.mainBar = {
|
||||||
|
modules-center = [
|
||||||
|
"group/left"
|
||||||
|
"group/center"
|
||||||
|
"group/right"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
"group/left" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"custom/sep-left"
|
||||||
|
"hyprland/language"
|
||||||
|
"keyboard-state"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/center" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"cava"
|
||||||
|
"mpris"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/right" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"tray"
|
||||||
|
"custom/sep-left"
|
||||||
|
"group/system"
|
||||||
|
"custom/sep-left"
|
||||||
|
"pulseaudio"
|
||||||
|
"custom/sep-left"
|
||||||
|
"battery"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
cava = {
|
||||||
|
bars = 9;
|
||||||
|
bar_delimiter = 0;
|
||||||
|
stereo = false;
|
||||||
|
input_delay = 0;
|
||||||
|
format-icons = [" " "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"];
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
tooltip = false;
|
||||||
|
interval = 5;
|
||||||
|
format = "{:L%d %b - %H:%M %a}";
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
phone-muted = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = ["" ""];
|
||||||
|
};
|
||||||
|
on-click = "ghostty --title=pulsemixer -e pulsemixer";
|
||||||
|
};
|
||||||
|
|
||||||
|
mpris = {
|
||||||
|
format = "{dynamic}";
|
||||||
|
dynamic-len = if osConfig.host.laptop then 16 else 32;
|
||||||
|
dynamic-order = [ "title" "artist" "album" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
interval = 5;
|
||||||
|
states = {
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{icon} {capacity}% | ";
|
||||||
|
format-icons = {
|
||||||
|
default = ["" "" "" "" "" "" "" "" "" "" ""];
|
||||||
|
charging = ["" "" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/sep-left" = {
|
||||||
|
format = " | ";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"keyboard-state" = {
|
||||||
|
capslock = true;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
locked = "CAPS";
|
||||||
|
unlocked = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/language" = {
|
||||||
|
format-en = "en";
|
||||||
|
format-ru = "ru";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/system" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"network"
|
||||||
|
"custom/mem"
|
||||||
|
"cpu"
|
||||||
|
"temperature"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = " {essid} ({signalStrength}%)";
|
||||||
|
format-ethernet = "{ifname}";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format = "{ipaddr}";
|
||||||
|
max-length = 50;
|
||||||
|
on-click = "ghostty --title=nmtui -e nmtui";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/weather" = {
|
||||||
|
format = "{}";
|
||||||
|
tooltip = true;
|
||||||
|
interval = 1800;
|
||||||
|
exec = "python3 $HOME/.config/waybar/scripts/wttr.py";
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/mem" = {
|
||||||
|
format = "{} ";
|
||||||
|
interval = 3;
|
||||||
|
exec = "free -h | awk '/Mem:/{printf $3}'";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
interval = 2;
|
||||||
|
format = "{usage}% ";
|
||||||
|
min-length = 6;
|
||||||
|
};
|
||||||
|
|
||||||
|
temperature = {
|
||||||
|
hwmon-path = "/sys/class/hwmon/hwmon5/temp1_input";
|
||||||
|
critical-threshold = 80;
|
||||||
|
format = "{temperatureC}°C {icon}";
|
||||||
|
format-icons = ["" "" "" "" ""];
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style = let
|
||||||
|
colors = config.lib.stylix.colors.withHashtag;
|
||||||
|
accent = colors.${config.stylix.accent};
|
||||||
|
scssFile = pkgs.writeText "waybar.scss" /*scss*/ ''
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
color: ${colors.base05};
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .85em;
|
||||||
|
& > * { padding: 0 0 6px 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-center {
|
||||||
|
background: ${colors.base01}CC;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 10px;
|
||||||
|
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#left,
|
||||||
|
#right,
|
||||||
|
#center {
|
||||||
|
background: ${colors.base02};
|
||||||
|
padding: 0 2px;
|
||||||
|
margin: 0 8px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
#left { margin-left: 0; }
|
||||||
|
#right { margin-right: 0; }
|
||||||
|
|
||||||
|
#clock { padding-right: 10px; }
|
||||||
|
|
||||||
|
#cava { padding: 0 10px; }
|
||||||
|
|
||||||
|
#language { padding: 8px; }
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: ${colors.base05};
|
||||||
|
padding: 0 2px;
|
||||||
|
border-radius: 999px;
|
||||||
|
border: 1pt solid transparent;
|
||||||
|
min-width: 20px;
|
||||||
|
|
||||||
|
&:hover { background: ${colors.base03}; }
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: ${accent};
|
||||||
|
color: ${colors.base00};
|
||||||
|
min-width: 25px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: ${accent};
|
||||||
|
background: ${colors.base03};
|
||||||
|
color: ${accent};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpris {
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 4px;
|
||||||
|
&:hover { background: ${colors.base03}; }
|
||||||
|
&.playing {
|
||||||
|
border: 2px solid ${accent};
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
widget {
|
||||||
|
border: 1pt solid transparent;
|
||||||
|
&:hover { background: ${colors.base03}; }
|
||||||
|
& > image { padding: 8px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .passive { border-color: ${colors.base03}; }
|
||||||
|
& > .needs-attention { border-color: ${colors.base09}; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
&:hover { background: ${colors.base03}; }
|
||||||
|
&.muted {
|
||||||
|
background: ${colors.base08};
|
||||||
|
color: ${colors.base01};
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: ${colors.base08};
|
||||||
|
background: ${colors.base03};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
&:hover { background: ${colors.base02}; }
|
||||||
|
&.disconnected {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background: ${colors.base08};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#system .drawer-child > * {
|
||||||
|
margin-right: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state label.locked {
|
||||||
|
color: ${colors.base08};
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
&.plugged { color: ${colors.base0D}; }
|
||||||
|
&.charging { color: ${colors.base0B}; }
|
||||||
|
&:not(.charging) {
|
||||||
|
&.warning {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background-color: ${colors.base09};
|
||||||
|
}
|
||||||
|
&.critical {
|
||||||
|
background-color: ${colors.base08};
|
||||||
|
color: ${colors.base00};
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.full {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background: ${colors.base0B};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: ${colors.base00};
|
||||||
|
color: ${colors.base08};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
cssFile = pkgs.runCommand "waybar.css" {
|
||||||
|
nativeBuildInputs = [ pkgs.dart-sass ];
|
||||||
|
} "sass ${scssFile} $out";
|
||||||
|
in builtins.readFile cssFile;
|
||||||
|
};
|
||||||
|
}
|
||||||
+17
-14
@@ -1,8 +1,16 @@
|
|||||||
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, laptop, name, fullname ? name, ... }: {
|
{ config
|
||||||
|
, pkgs
|
||||||
|
, pkgs-stable
|
||||||
|
, pkgs-pinned
|
||||||
|
, lib
|
||||||
|
, inputs
|
||||||
|
, name
|
||||||
|
, fullname ? name
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager {
|
inputs.home-manager.nixosModules.home-manager {
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = false;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
backupFileExtension = "rebuild";
|
backupFileExtension = "rebuild";
|
||||||
overwriteBackup = true;
|
overwriteBackup = true;
|
||||||
@@ -10,11 +18,11 @@
|
|||||||
users.${name} = {
|
users.${name} = {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.stylix.homeManagerModules.stylix
|
inputs.stylix.homeModules.stylix
|
||||||
../modules/user.nix
|
../modules/user.nix
|
||||||
./${name}/modules/git.nix
|
./${name}/modules/git.nix
|
||||||
./${name}/modules/hyprland.nix
|
|
||||||
./${name}/modules/style.nix
|
./${name}/modules/style.nix
|
||||||
|
./${name}/modules/waybar.nix
|
||||||
./${name}/home.nix
|
./${name}/home.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -23,18 +31,13 @@
|
|||||||
homeDirectory = "/home/${name}";
|
homeDirectory = "/home/${name}";
|
||||||
stateVersion = "23.11";
|
stateVersion = "23.11";
|
||||||
};
|
};
|
||||||
|
|
||||||
_module.args.pkgs = lib.mkForce pkgs-unstable;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
pkgs-stable = pkgs;
|
inherit pkgs-stable;
|
||||||
inherit pkgs-fixed;
|
inherit pkgs-pinned;
|
||||||
host = {
|
username = name;
|
||||||
laptop = laptop;
|
|
||||||
name = config.networking.hostName;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -53,8 +56,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.greetd = let
|
services.greetd = let
|
||||||
tuigreet = lib.getExe pkgs.greetd.tuigreet;
|
tuigreet = lib.getExe pkgs.tuigreet;
|
||||||
session = lib.getExe inputs.hyprland.packages.${pkgs.system}.default;
|
session = lib.getExe' inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default "start-hyprland";
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
My config
|
||||||
|
|
||||||
|
- **Theme:** [Catppuccin](https://catppuccin.com) Mocha
|
||||||
|
- **Cursor:** [\[Date A Live\] Kurumi Tokisaki](https://ko-fi.com/s/66a6c36df1)
|
||||||
@@ -4,7 +4,12 @@
|
|||||||
];
|
];
|
||||||
programs.hyprlock.enable = true;
|
programs.hyprlock.enable = true;
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
vivaldi
|
android-studio
|
||||||
|
(vivaldi.override {
|
||||||
|
proprietaryCodecs = true;
|
||||||
|
enableWidevine = true;
|
||||||
|
})
|
||||||
|
weechat
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings.user = {
|
settings.user = {
|
||||||
name = "Sweetbread";
|
name = "Sweetbread";
|
||||||
email = "risdeveau@codrs.ru";
|
email = "risdeveau@lair.moe";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +1,136 @@
|
|||||||
{ pkgs, lib, config, inputs, ... }: {
|
{ pkgs, lib, config, osConfig, inputs, ... }: {
|
||||||
imports = [(
|
|
||||||
import ../../../modules/user/patterns/hyprland.nix {
|
|
||||||
inherit lib;
|
|
||||||
inherit pkgs;
|
|
||||||
inherit config;
|
|
||||||
inherit inputs;
|
|
||||||
collection = "sweetbread/1764377";
|
|
||||||
swww_flags = "--transition-type center";
|
|
||||||
}
|
|
||||||
)];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = let
|
wayland.windowManager.hyprland = let
|
||||||
colors = config.lib.stylix.colors;
|
colors = config.lib.stylix.colors;
|
||||||
|
accent = colors.${config.stylix.accent};
|
||||||
|
|
||||||
|
wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" {
|
||||||
|
libraries = [ pkgs.python3Packages.requests ];
|
||||||
|
flakeIgnore = [ "E111" "E121" "E241" "E501" "E701" "E731" ];
|
||||||
|
} /*py*/ ''
|
||||||
|
import requests as requests
|
||||||
|
from random import choice
|
||||||
|
from os import listdir, makedirs, remove, replace, system
|
||||||
|
from os.path import exists
|
||||||
|
from subprocess import run
|
||||||
|
|
||||||
|
notify_id = None
|
||||||
|
|
||||||
|
|
||||||
|
def notify(text, progress=None, expire_time=5000):
|
||||||
|
global notify_id
|
||||||
|
|
||||||
|
command = [
|
||||||
|
"${pkgs.libnotify}/bin/notify-send",
|
||||||
|
"--app-name", "wallpaper_changer",
|
||||||
|
"--print-id",
|
||||||
|
"--expire-time", str(expire_time),
|
||||||
|
]
|
||||||
|
|
||||||
|
if notify_id:
|
||||||
|
command.extend(["--replace-id", str(notify_id)])
|
||||||
|
|
||||||
|
if progress is not None:
|
||||||
|
command.extend(["--hint", f"int:value:{progress}"])
|
||||||
|
|
||||||
|
command.extend(["Wallpaper", text])
|
||||||
|
|
||||||
|
result = run(command, capture_output=True, text=True, check=False)
|
||||||
|
output = result.stdout.strip()
|
||||||
|
if output.isdigit():
|
||||||
|
notify_id = output
|
||||||
|
|
||||||
|
|
||||||
|
def download_with_progress(link, destination):
|
||||||
|
temporary = f"{destination}.part"
|
||||||
|
downloaded = 0
|
||||||
|
last_progress = -1
|
||||||
|
|
||||||
|
response = None
|
||||||
|
try:
|
||||||
|
response = requests.get(link, stream=True)
|
||||||
|
response.raise_for_status()
|
||||||
|
total = int(response.headers.get("content-length", 0))
|
||||||
|
|
||||||
|
with open(temporary, "wb") as file:
|
||||||
|
for chunk in response.iter_content(chunk_size=256 * 1024):
|
||||||
|
if not chunk:
|
||||||
|
continue
|
||||||
|
|
||||||
|
file.write(chunk)
|
||||||
|
downloaded += len(chunk)
|
||||||
|
|
||||||
|
if total <= 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
progress = min(100, downloaded * 100 // total)
|
||||||
|
if progress == 100 or progress >= last_progress + 2:
|
||||||
|
notify(f"Downloading... {progress}%", progress, 0)
|
||||||
|
last_progress = progress
|
||||||
|
|
||||||
|
replace(temporary, destination)
|
||||||
|
except Exception:
|
||||||
|
if exists(temporary):
|
||||||
|
remove(temporary)
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
if response is not None:
|
||||||
|
response.close()
|
||||||
|
|
||||||
|
|
||||||
|
folder = "${config.home.homeDirectory}/Wallpapers"
|
||||||
|
url = "https://wallhaven.cc/api/v1/collections/sweetbread/${
|
||||||
|
if osConfig.networking.hostName == "Rias" then "1764377"
|
||||||
|
else "2108577"
|
||||||
|
}"
|
||||||
|
with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f:
|
||||||
|
token = f.read()
|
||||||
|
|
||||||
|
filename = None
|
||||||
|
notify("Updating wallpaper...", 0)
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.get(url, params={'apikey': token})
|
||||||
|
response.raise_for_status()
|
||||||
|
json = response.json()
|
||||||
|
|
||||||
|
wallpaper = choice(json['data'])
|
||||||
|
link = wallpaper['path']
|
||||||
|
format = wallpaper['file_type']
|
||||||
|
id = wallpaper['id']
|
||||||
|
|
||||||
|
if format == "image/jpeg": ext = "jpg"
|
||||||
|
else: ext = "png"
|
||||||
|
|
||||||
|
filename = f"{id}.{ext}"
|
||||||
|
destination = f"{folder}/{filename}"
|
||||||
|
|
||||||
|
if not exists(destination):
|
||||||
|
makedirs(folder, exist_ok=True)
|
||||||
|
notify("Downloading... 0%", 0, 0)
|
||||||
|
download_with_progress(link, destination)
|
||||||
|
notify("Downloaded", 100)
|
||||||
|
else:
|
||||||
|
notify("Using cached wallpaper", 100)
|
||||||
|
|
||||||
|
except requests.exceptions.RequestException:
|
||||||
|
notify("Offline mode")
|
||||||
|
try:
|
||||||
|
filename = choice(listdir(folder))
|
||||||
|
except (FileNotFoundError, IndexError):
|
||||||
|
notify("Offline mode and wallpaper cache is empty")
|
||||||
|
|
||||||
|
finally:
|
||||||
|
if filename is not None:
|
||||||
|
notify("Applying wallpaper", 100)
|
||||||
|
system(f"awww img {folder}/{filename} --transition-type center")
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
settings = {
|
settings = {
|
||||||
monitor = [
|
|
||||||
"DP-3, 3440x1440@165.00Hz, auto-right, 1"
|
|
||||||
# "HDMI-A-1, 3840x2160@60.00Hz, auto-left, 2"
|
|
||||||
"HDMI-A-1, disabled"
|
|
||||||
",preferred,auto,1"
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 2;
|
||||||
gaps_out = 10;
|
gaps_out = 10;
|
||||||
border_size = 3;
|
border_size = 3;
|
||||||
"col.active_border" = lib.mkForce "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg";
|
"col.active_border" = lib.mkForce "rgba(${colors.base0C}aa) rgba(${accent}aa) 45deg";
|
||||||
"col.inactive_border" = lib.mkForce "rgba(${colors.base05}aa)";
|
|
||||||
|
|
||||||
layout = "dwindle";
|
layout = "dwindle";
|
||||||
};
|
};
|
||||||
@@ -41,11 +145,7 @@
|
|||||||
new_optimizations = true;
|
new_optimizations = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
shadow = {
|
shadow.enabled = false;
|
||||||
enabled = true;
|
|
||||||
range = 4;
|
|
||||||
render_power = 3;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
animations = {
|
animations = {
|
||||||
@@ -64,7 +164,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
|
||||||
smart_split = true;
|
smart_split = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -76,12 +175,20 @@
|
|||||||
enable_swallow = true;
|
enable_swallow = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"${lib.getExe wallpaper_changer}"
|
||||||
|
];
|
||||||
|
|
||||||
|
workspace = [
|
||||||
|
"2, layout:scrolling"
|
||||||
|
];
|
||||||
|
|
||||||
bind = [
|
bind = [
|
||||||
" , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m output"
|
" , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m output"
|
||||||
"CTRL, Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m region"
|
"CTRL, Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m region"
|
||||||
"ALT , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m window"
|
"ALT , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m window"
|
||||||
|
|
||||||
'', XF86Calculator, exec, ghostty --title=pulsemixer -e pulsemixer''
|
"$mainMod, W, exec, ${lib.getExe wallpaper_changer}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -79,10 +79,25 @@
|
|||||||
cp Kurumi $out/share/icons -r
|
cp Kurumi $out/share/icons -r
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pixeloid = pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
name = "Pixeloid";
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = "https://lair.moe/static/font/Pixeloid/otf/Sans.otf";
|
||||||
|
hash = "sha256-GTf2BnhH0Pzc3Bbevmd+mA6t8lZFMUxX9wkSqWicuSc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -Dm644 "$src" "$out/share/fonts/opentype/Sans.otf"
|
||||||
|
'';
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
# {
|
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
overlays.enable = false;
|
||||||
|
|
||||||
targets = {
|
targets = {
|
||||||
hyprpaper.enable = lib.mkForce false;
|
hyprpaper.enable = lib.mkForce false;
|
||||||
waybar.enable = false;
|
waybar.enable = false;
|
||||||
@@ -90,6 +105,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
|
accent = "base0B";
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
|
|
||||||
image = pkgs.fetchurl {
|
image = pkgs.fetchurl {
|
||||||
@@ -97,7 +113,7 @@ in {
|
|||||||
sha256 = "sha256-u4d21a0Kh5OHEzQMSQ7+ey/Va2ftS1DefrOQFahaeC4=";
|
sha256 = "sha256-u4d21a0Kh5OHEzQMSQ7+ey/Va2ftS1DefrOQFahaeC4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTheme = {
|
icons = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.pop-icon-theme;
|
package = pkgs.pop-icon-theme;
|
||||||
dark = "Pop-Dark";
|
dark = "Pop-Dark";
|
||||||
@@ -120,6 +136,11 @@ in {
|
|||||||
package = (pkgs.google-fonts.override { fonts = [ "Gabriela" ]; });
|
package = (pkgs.google-fonts.override { fonts = [ "Gabriela" ]; });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sansSerif = {
|
||||||
|
name = "Pixeloid Sans";
|
||||||
|
package = pixeloid;
|
||||||
|
};
|
||||||
|
|
||||||
emoji = {
|
emoji = {
|
||||||
package = pkgs.noto-fonts-monochrome-emoji;
|
package = pkgs.noto-fonts-monochrome-emoji;
|
||||||
name = "Noto Emoji";
|
name = "Noto Emoji";
|
||||||
@@ -142,8 +163,10 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
gtk4.extraConfig = {
|
gtk4 = {
|
||||||
gtk-application-prefer-dark-theme = true;
|
extraConfig = {
|
||||||
|
gtk-application-prefer-dark-theme = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
gtk3.extraConfig = {
|
gtk3.extraConfig = {
|
||||||
gtk-application-prefer-dark-theme = true;
|
gtk-application-prefer-dark-theme = true;
|
||||||
|
|||||||
@@ -0,0 +1,302 @@
|
|||||||
|
{ osConfig, config, pkgs, lib, ... }: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
playerctl
|
||||||
|
cava
|
||||||
|
pulsemixer
|
||||||
|
|
||||||
|
monocraft
|
||||||
|
font-awesome
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
|
||||||
|
settings.mainBar = {
|
||||||
|
spacing = 8;
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"hyprland/language"
|
||||||
|
"keyboard-state"
|
||||||
|
"cava"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-center = [
|
||||||
|
"mpris"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"tray"
|
||||||
|
"group/system"
|
||||||
|
"pulseaudio"
|
||||||
|
"battery"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
|
||||||
|
cava = {
|
||||||
|
bars = 14;
|
||||||
|
sleep_timer = 5;
|
||||||
|
hide_on_silence = true;
|
||||||
|
bar_delimiter = 0;
|
||||||
|
input_delay = 0;
|
||||||
|
format-icons = [" " "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█"];
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
tooltip = false;
|
||||||
|
interval = 5;
|
||||||
|
format = "{:L%d %b - %H:%M %a}";
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
phone-muted = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = ["" ""];
|
||||||
|
};
|
||||||
|
on-click = "ghostty --title=pulsemixer -e pulsemixer";
|
||||||
|
};
|
||||||
|
|
||||||
|
mpris = {
|
||||||
|
format = "{dynamic}";
|
||||||
|
dynamic-len = if osConfig.host.laptop then 32 else 64;
|
||||||
|
dynamic-order = [ "title" "artist" "album" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
battery = {
|
||||||
|
interval = 5;
|
||||||
|
states = {
|
||||||
|
warning = 30;
|
||||||
|
critical = 15;
|
||||||
|
};
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-icons = {
|
||||||
|
default = ["" "" "" "" "" "" "" "" "" "" ""];
|
||||||
|
charging = ["" "" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"keyboard-state" = {
|
||||||
|
capslock = true;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
locked = "CAPS";
|
||||||
|
unlocked = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/language" = {
|
||||||
|
format-en = "en";
|
||||||
|
format-ru = "ru";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
"group/system" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"network"
|
||||||
|
"custom/mem"
|
||||||
|
"cpu"
|
||||||
|
"temperature"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = " {essid} ({signalStrength}%)";
|
||||||
|
format-ethernet = "{ifname}";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format = "{ipaddr}";
|
||||||
|
max-length = 50;
|
||||||
|
on-click = "ghostty --title=nmtui -e nmtui";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/weather" = {
|
||||||
|
format = "{}";
|
||||||
|
tooltip = true;
|
||||||
|
interval = 1800;
|
||||||
|
exec = "python3 $HOME/.config/waybar/scripts/wttr.py";
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/mem" = {
|
||||||
|
format = "{} ";
|
||||||
|
interval = 3;
|
||||||
|
exec = "free -h | awk '/Mem:/{printf $3}'";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
interval = 2;
|
||||||
|
format = "{usage}% ";
|
||||||
|
min-length = 6;
|
||||||
|
};
|
||||||
|
|
||||||
|
temperature = {
|
||||||
|
hwmon-path = "/sys/class/hwmon/hwmon5/temp1_input";
|
||||||
|
critical-threshold = 80;
|
||||||
|
format = "{temperatureC}°C {icon}";
|
||||||
|
format-icons = ["" "" "" "" ""];
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style = let
|
||||||
|
colors = config.lib.stylix.colors.withHashtag;
|
||||||
|
accent = colors.${config.stylix.accent};
|
||||||
|
radius = "6px";
|
||||||
|
scssFile = pkgs.writeText "waybar.scss" /*scss*/ ''
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
color: ${colors.base05};
|
||||||
|
border-radius: ${radius};
|
||||||
|
font-family: "Symbols Nerd Font Mono", "Monocraft", "Font Awesome 7 Free";
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .85em;
|
||||||
|
|
||||||
|
& > * { padding: 8px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#cava,
|
||||||
|
#language,
|
||||||
|
#mpris,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#temperature,
|
||||||
|
#keyboard-state label.locked,
|
||||||
|
#custom-mem,
|
||||||
|
#clock {
|
||||||
|
background: ${colors.base00};
|
||||||
|
border-radius: ${radius};
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#tray {
|
||||||
|
background: ${colors.base00};
|
||||||
|
border-radius: ${radius};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: ${colors.base05};
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: ${radius};
|
||||||
|
border: 1pt solid transparent;
|
||||||
|
|
||||||
|
&:hover { background: ${colors.base01}; }
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: ${accent};
|
||||||
|
color: ${colors.base00};
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: ${accent};
|
||||||
|
background: ${colors.base01};
|
||||||
|
color: ${accent};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpris {
|
||||||
|
&:hover { background: ${colors.base01}; }
|
||||||
|
&.paused { opacity: .5; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
widget {
|
||||||
|
border: 1pt solid transparent;
|
||||||
|
border-radius: ${radius};
|
||||||
|
&:hover { background: ${colors.base01}; }
|
||||||
|
& > image { padding: 8px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
& > .passive { border-color: ${colors.base02}; }
|
||||||
|
& > .needs-attention { border-color: ${colors.base09}; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
&:hover { background: ${colors.base01}; }
|
||||||
|
&.muted {
|
||||||
|
background: ${colors.base08};
|
||||||
|
color: ${colors.base00};
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: ${colors.base08};
|
||||||
|
background: ${colors.base01};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
&:hover { background: ${colors.base01}; }
|
||||||
|
&.disconnected {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background: ${colors.base08};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#system .drawer-child > * {
|
||||||
|
margin-right: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state label.locked {
|
||||||
|
background-color: ${colors.base00};
|
||||||
|
color: ${colors.base08};
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
&.plugged { color: ${colors.base0D}; }
|
||||||
|
&.charging { color: ${accent}; }
|
||||||
|
&:not(.charging) {
|
||||||
|
&.warning {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background-color: ${colors.base09};
|
||||||
|
}
|
||||||
|
&.critical {
|
||||||
|
background-color: ${colors.base08};
|
||||||
|
color: ${colors.base00};
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.full {
|
||||||
|
color: ${colors.base00};
|
||||||
|
background: ${accent};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: ${colors.base00};
|
||||||
|
color: ${colors.base08};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
cssFile = pkgs.runCommand "waybar.css" {
|
||||||
|
nativeBuildInputs = [ pkgs.dart-sass ];
|
||||||
|
} "sass ${scssFile} $out";
|
||||||
|
in builtins.readFile cssFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.settings.layerrule = [
|
||||||
|
"blur on, match:namespace waybar"
|
||||||
|
];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user