Compare commits

..
203 Commits
Author SHA1 Message Date
Chest fefcb8fb00 Pip 2026-09-30 23:15:10 +03:00
Sweetbread a5db402144 Rias: change disk FS 2026-09-21 20:08:18 +03:00
Sweetbread fc1c7a0f61 fixup! fixup! Update 2026-09-21 20:07:17 +03:00
Sweetbread eed510e68b zsh: nr alias 2026-09-18 19:00:13 +03:00
Sweetbread be9e7c0ce8 flake: add nixpkgs.follows 2026-09-17 20:45:34 +03:00
Sweetbread e53efb0472 pkgs: add insomnia 2026-09-17 18:07:25 +03:00
Sweetbread 8acfda2aa5 change key 2026-09-17 18:02:14 +03:00
Sweetbread 0e8763663b tmp 2026-09-17 18:02:14 +03:00
Sweetbread 4180bfd391 syncthing: add documents 2026-09-17 18:00:30 +03:00
Sweetbread 0c07e7be79 fixup! Update 2026-09-17 11:26:16 +03:00
Sweetbread d5832d160c helix: add wakapi 2026-09-16 19:43:04 +03:00
Sweetbread fac73d8508 hyprland: to lua 2026-09-16 19:42:53 +03:00
Sweetbread e57dad8746 Update 2026-09-16 19:42:53 +03:00
Sweetbread 238166668f pkgs: add mumble 2026-08-26 23:56:12 +03:00
Sweetbread ec8fdec87b fixup! Update 2026-08-26 23:55:58 +03:00
Sweetbread e6e6af404f wip: MTP 2026-08-19 22:09:41 +03:00
Sweetbread 7845af1fd1 hyprland: change scroll direction 2026-08-19 22:09:40 +03:00
Sweetbread 4a001529ec helix: add line moving
https://github.com/helix-editor/helix/discussions/5764#discussioncomment-9518381
2026-08-19 22:09:40 +03:00
Sweetbread 357db9432d helix: for FASM 2026-08-19 22:09:40 +03:00
Sweetbread cdc137c2d9 Update 2026-08-19 22:09:40 +03:00
Chest ce03661f12 vpn config fix 2026-08-19 22:09:40 +03:00
Sweetbread c78d0b40a2 Inaho: add games 2026-08-19 22:09:40 +03:00
Sweetbread 3c8a4219a6 pkgs: nmtui to wifitui 2026-08-19 22:09:40 +03:00
Sweetbread 4d77be992e Inaho: new host 2026-08-19 22:09:34 +03:00
Sweetbread 4c65c1b05f Update 2026-08-19 21:41:54 +03:00
Sweetbread 7e8f9439aa helix: steel 2026-08-19 21:41:54 +03:00
Sweetbread fe4052fe73 vpn: set capabilities 2026-08-19 21:41:54 +03:00
Sweetbread e216e9bc7a ygg: change peers 2026-08-19 21:41:54 +03:00
Sweetbread d4504b9705 Rias: openrgb 2026-08-19 21:41:54 +03:00
Sweetbread 8625d875db wallpaper-changer: add progress bar 2026-08-19 21:41:53 +03:00
Sweetbread 17e247fb38 mako: remove shit code 2026-08-19 21:41:53 +03:00
Sweetbread ed2f738a83 stylix: add accent color
I spent an hour just to add one f*ing option
2026-08-19 21:41:53 +03:00
Sweetbread e61bcb7d92 Update 2026-08-19 21:41:53 +03:00
Sweetbread 7b428a0b79 pkgs: move smth to stable 2026-08-19 21:41:53 +03:00
Sweetbread f8edaafdf3 ui: fuzzel to walker 2026-08-19 21:41:53 +03:00
Sweetbread e6e77aeed6 pkgs: add pear-desktop 2026-08-19 21:41:53 +03:00
Sweetbread 8b0298b67c font: change to pixel fonts 2026-08-19 21:41:52 +03:00
Sweetbread f084bdf9b4 pkgs: wob 2026-08-19 21:41:52 +03:00
Sweetbread de76f09730 wip: quickshell: control-panel 2026-08-19 21:41:52 +03:00
Sweetbread 124f3a7cf3 yazi: filechooser 2026-08-19 21:41:52 +03:00
Sweetbread ea289034ca yazi: open from other apps 2026-08-19 21:41:52 +03:00
Sweetbread deba85fd30 Update 2026-08-19 21:41:52 +03:00
Sweetbread 21471838e6 vpn: change client 2026-08-19 21:41:52 +03:00
Sweetbread 8ceca8ee8f ghostty: add cursor shader 2026-08-19 21:41:51 +03:00
Sweetbread dac276d6ed Rias: change mount type 2026-08-19 21:41:51 +03:00
Sweetbread a5e1267370 Update 2026-08-19 21:41:51 +03:00
Sweetbread c79cee4206 ygg: change node 2026-08-19 21:41:51 +03:00
Sweetbread b468c42a9e Impreza: add wallpaper 2026-08-19 21:41:51 +03:00
Sweetbread 61259a2320 nvidia: fix backlight 2026-08-19 21:41:51 +03:00
Chest 41f53f802c waybar for mee<3 2026-08-19 21:41:51 +03:00
Chest 55e4406dc5 vpn for gpt 2026-08-19 21:41:50 +03:00
Sweetbread 32f5cac84d vpn: change engine 2026-08-19 21:41:50 +03:00
Sweetbread a2fc3275af Update system 2026-08-19 21:41:50 +03:00
Sweetbread e51ba243dc wip: cava 2026-08-19 21:41:50 +03:00
Sweetbread aada228357 starship: fix os icon 2026-08-19 21:41:50 +03:00
Sweetbread 60734ee516 hyprland: add zoom 2026-08-19 21:41:50 +03:00
Sweetbread fe204a4d5a tty: fix Cyrillic 2026-08-19 21:41:50 +03:00
Sweetbread ed37f81cfd ssh: keepalive 2026-08-19 21:41:49 +03:00
Sweetbread fdeeb87f13 Replace AGS with waybar 2026-08-19 21:41:49 +03:00
Sweetbread 50a9f73fea Update system 2026-08-19 21:41:49 +03:00
Sweetbread b064e912aa Style hyprland 2026-08-19 21:41:49 +03:00
Sweetbread 10084a5e8e Make VPN list via flake
Wow, I didn't know I can do this...
2026-08-19 21:41:49 +03:00
Sweetbread 9a7b7f0b50 Update system 2026-08-19 21:41:49 +03:00
Chest 7f59ba969e vpn 2026-08-19 21:41:49 +03:00
Chest 0c97dde79f meow 2026-08-19 21:41:48 +03:00
Sweetbread f973b8e5ad Fix FileChooser in Hyprland 2026-08-19 21:41:48 +03:00
Sweetbread b4848028eb Update VPN 2026-08-19 21:41:48 +03:00
Sweetbread 1441647527 Repath mounts 2026-08-19 21:41:48 +03:00
Sweetbread e8350c58cc Update system 2026-08-19 21:41:48 +03:00
Sweetbread 998af9fc41 Change domain 2026-08-19 21:41:48 +03:00
Sweetbread 1ca630a80c yazi: add some stuff 2026-08-19 21:41:48 +03:00
Sweetbread 7ceabba4ab Replace wofi with fuzzel 2026-08-19 21:41:48 +03:00
Sweetbread d56f003982 Sort imports 2026-08-19 21:41:47 +03:00
Sweetbread 6c062088fa Change README 2026-08-19 21:41:47 +03:00
Sweetbread d8eaa5916b helix: change cursor shape and add a ruler 2026-08-19 21:41:47 +03:00
Sweetbread 6da0db4ffd ags: add another accent for chest 2026-08-19 21:41:47 +03:00
Sweetbread 4454eadfaf system: update channels 2026-08-19 21:41:47 +03:00
Sweetbread ada545525a ref: remove host.laptop from user modules 2026-08-19 21:41:47 +03:00
Sweetbread f31dc89efb sops: fix link 2026-08-19 21:41:47 +03:00
Sweetbread 8b8d7fc413 flake: add custom cache 2026-08-19 21:41:46 +03:00
Sweetbread 5f5931a47f hypr: change border color 2026-08-19 21:41:46 +03:00
Chest d9e8f3e4f1 pkgs: add ZZZ 2026-08-19 21:41:46 +03:00
Chest 3f359a91ec Eclipse: add VirtualBox 2026-08-19 21:41:46 +03:00
Sweetbread db46ffd3ec zsh: add more aliases 2026-08-19 21:41:46 +03:00
Sweetbread e560d34515 boot: left os prober only for Impreza 2026-08-19 21:41:46 +03:00
Sweetbread 13af1b5b4e flake: remove devshell 2026-08-19 21:41:46 +03:00
Sweetbread 21df106ace flake: remove host definition dublication 2026-08-19 21:41:45 +03:00
Sweetbread 8f93c5ef2a zsh: config history 2026-08-19 21:41:45 +03:00
Sweetbread 005edb2730 zsh: optimise aliases 2026-08-19 21:41:45 +03:00
Sweetbread d1056472e4 hyprland: separate settings for user and host 2026-08-19 21:41:45 +03:00
Sweetbread db70613838 Update system 2026-08-19 21:41:45 +03:00
Sweetbread d88a2a4871 pkgs: return office to everyone 2026-08-19 21:41:45 +03:00
Sweetbread d2560fa2a7 pdf 2026-08-19 21:41:45 +03:00
Sweetbread 69585ab64a system: update 2026-08-19 21:41:44 +03:00
Sweetbread f106eb0609 pkgs: add torrent client 2026-08-19 21:41:44 +03:00
Sweetbread c9ffbd5964 Add Miku cursor 2026-08-19 21:41:44 +03:00
Sweetbread 7b28ee6b9c Add Kurumi cursor 2026-08-19 21:41:44 +03:00
Sweetbread a30c4f8b68 nvidia: set envvar 2026-08-19 21:41:44 +03:00
Sweetbread 623f7b6425 style: set dark mode 2026-08-19 21:41:44 +03:00
Sweetbread ce84c7ab53 pkgs: add opentabletdriver 2026-08-19 21:41:44 +03:00
Sweetbread 82da0a8bda system: update 2026-08-19 21:41:44 +03:00
Sweetbread 17a5125775 hypr: add focus 2026-08-19 21:41:43 +03:00
Sweetbread 5b2a0997bd tex: add packages 2026-08-19 21:41:43 +03:00
Sweetbread 6ab8cb5724 pkgs: add vivaldi 2026-08-19 21:41:43 +03:00
Sweetbread 3d94a2952c fix: set imv as a image viewer 2026-08-19 21:41:43 +03:00
Sweetbread dfb1e890e5 yazi: set up plugins 2026-08-19 21:41:43 +03:00
Sweetbread a6495ca832 system: update 2026-08-19 21:41:43 +03:00
Sweetbread d976f13a10 feat: scanning 2026-08-19 21:41:43 +03:00
Sweetbread e6f3422b4d wip: fix: clipboard 2026-08-19 21:41:42 +03:00
Sweetbread 4f284d441e pkgs: replace grimblast with hyprshot 2026-08-19 21:41:42 +03:00
Sweetbread 371565c2bd pkgs: fastfetch instead of neofetch 2026-08-19 21:41:42 +03:00
Sweetbread 635cbff519 system: update 2026-08-19 21:41:42 +03:00
Sweetbread 826fe11063 system: change mount path to partlabel 2026-08-19 21:41:42 +03:00
Chest f3aac17934 New install 2026-08-19 21:41:42 +03:00
Chest b789807b47 flake: update aagl 2026-08-19 21:41:42 +03:00
Chest 5861a9e6a0 feat: F disk 2026-08-19 21:41:41 +03:00
Sweetbread 6b106f7948 yazi: do not preload .crdownload 2026-08-19 21:41:41 +03:00
Sweetbread 48b08d23ff hyprland: add media app binds 2026-08-19 21:41:41 +03:00
Sweetbread 1fb4acea88 hyprland: add media binds 2026-08-19 21:41:41 +03:00
Sweetbread e0bcb87b2c pkgs: add texstudio 2026-08-19 21:41:41 +03:00
Sweetbread 01d3b727a1 system: update 2026-08-19 21:41:41 +03:00
Sweetbread d3c08aa4f5 chore: something... 2026-08-19 21:41:41 +03:00
Sweetbread c6e8cf9847 pkgs: remove libreoffice for chest 2026-08-19 21:41:40 +03:00
Sweetbread 36bd415a4e system: update 2026-08-19 21:41:40 +03:00
Sweetbread 6953af7176 system: change channels 2026-08-19 21:41:40 +03:00
Sweetbread a36956b016 pkgs(chest): turn off some packages 2026-08-19 21:41:40 +03:00
Sweetbread 659627a4f1 style: decrease gaps 2026-08-19 21:41:40 +03:00
Sweetbread a00b0ccb33 system: update nixpkgs-fixed 2026-08-19 21:41:40 +03:00
Sweetbread 8e3d4604c4 style: ags 2026-08-19 21:41:40 +03:00
Sweetbread bb09c5f642 system: update 2026-08-19 21:41:39 +03:00
Sweetbread dbd3b513c2 refactor: move utils to a separate file 2026-08-19 21:41:39 +03:00
Sweetbread c83c94817d pkgs: add krita and gimp 2026-08-19 21:41:39 +03:00
Sweetbread de69e7a17f fix: wallpapers 2026-08-19 21:41:39 +03:00
Chest ec4438fff9 add binwalk 2026-08-19 21:41:39 +03:00
Chest 39681985e2 aagl 2026-08-19 21:41:39 +03:00
Sweetbread 47f7494203 Remove hyprlock 2026-08-19 21:41:39 +03:00
Sweetbread 9990ed351e feat: add intel graphics config 2026-08-19 21:41:38 +03:00
Sweetbread 9033cfe614 feat: add dependencies to host in home-manager 2026-08-19 21:41:38 +03:00
Sweetbread 598bf6a35d pkgs: add pinentry 2026-08-19 21:41:38 +03:00
Sweetbread 454cd36176 fix(ags): set margins 2026-08-19 21:41:38 +03:00
Chest 1a4a7b3918 host: Impreza 2026-08-19 21:41:38 +03:00
Sweetbread 492218b1f4 fix: change nick 2026-08-19 21:41:38 +03:00
Sweetbread 378182cff3 feat: yggdrasil 2026-08-19 21:41:38 +03:00
Sweetbread 2e8f33aa56 style: cursor 2026-08-19 21:41:37 +03:00
Sweetbread b384ef60e0 style: font 2026-08-19 21:41:37 +03:00
Sweetbread 4d9729a4dd system: update 2026-08-19 21:41:37 +03:00
Sweetbread 85cd854889 feat(yazi): add d drive shortcut 2026-08-19 21:41:37 +03:00
Sweetbread 15dee2e15d feat: add my custom dns server 2026-08-19 21:41:37 +03:00
Sweetbread cf52a7e7f3 feat: add pulsemixer 2026-08-19 21:41:37 +03:00
Sweetbread b8745ac460 fix: brightness setting 2026-08-19 21:41:37 +03:00
Sweetbread f88917aaf2 feat: kitty to ghostty 2026-08-19 21:41:36 +03:00
Sweetbread 6a545149e9 pkgs: add some utils 2026-08-19 21:41:36 +03:00
Sweetbread bb8e8c079d feat(ags): add battery bar 2026-08-19 21:41:36 +03:00
Sweetbread 281f0ad2da fix(ags): wifi widget 2026-08-19 21:41:36 +03:00
Sweetbread 97e6f6bd31 feat: postgres 2026-08-19 21:41:36 +03:00
Sweetbread 01aa2b8083 system: Update 2026-08-19 21:41:36 +03:00
Sweetbread ad6e7e332f git: Change mail 2026-08-19 21:41:36 +03:00
Sweetbread 478e184312 pkgs: Add prismlauncher 2026-08-19 21:41:36 +03:00
Sweetbread b2f10ff9ea system: Update 2026-08-19 21:41:35 +03:00
Chest 32c6b50dbe Add pkgs 2026-08-19 21:41:35 +03:00
Sweetbread 02dd50200f system: Update 2026-08-19 21:41:35 +03:00
Sweetbread fe7d4c1851 perf: Home-manager to module
feat: Optionise config
2026-08-19 21:41:35 +03:00
Sweetbread 1111288a47 fix(helix): No end newline 2026-08-19 21:41:35 +03:00
Sweetbread b6fe61969d pkgs: Add trashy 2026-08-19 21:41:35 +03:00
Sweetbread 9c4bee71e2 style: Change opacity and wallpaper 2026-08-19 21:41:35 +03:00
Sweetbread dfddc572b2 system: Update 2026-08-19 21:41:34 +03:00
Sweetbread 81a737a43e pkgs: litecli 2026-08-19 21:41:34 +03:00
Sweetbread aed9a6a713 feat(zsh): lg alias 2026-08-19 21:41:34 +03:00
Sweetbread b3f072d851 style: Reduce gap 2026-08-19 21:41:34 +03:00
Sweetbread d5894374f2 wip: console
Font changes to default after reload
2026-08-19 21:41:34 +03:00
Sweetbread 7df28b1a5d ags: To derivation 2026-08-19 21:41:34 +03:00
Sweetbread 71bb0a839e pkgs: Udiskie 2026-08-19 21:41:34 +03:00
Sweetbread f29c8f07cc system: Update 2026-08-19 21:41:33 +03:00
Sweetbread 40f612bad1 pkgs: Remove extra packages 2026-08-19 21:41:33 +03:00
Sweetbread 20950f6774 style: Btop 2026-08-19 21:41:33 +03:00
Sweetbread 765fd10420 feat(devshell): Add pkgs for helix and switching to zsh 2026-08-19 21:41:33 +03:00
Sweetbread a7359b47b5 fix(starship): Remove extra space 2026-08-19 21:41:33 +03:00
Sweetbread debad3cdae pkgs: Update aagl 2026-08-19 21:41:33 +03:00
Sweetbread 6fb6f6e5b5 pkgs: git-lfs 2026-08-19 21:41:33 +03:00
Sweetbread b6bef9e3ed pkgs: To 24.11 2026-08-19 21:41:32 +03:00
Sweetbread f9ae2cb408 ags: Add keyboard layout widget 2026-08-19 21:41:32 +03:00
Sweetbread b85a81882d docs: Change screenshot 2026-08-19 21:41:32 +03:00
Sweetbread e6f27cd3f1 pkgs: Add Pycharm to chest 2026-08-19 21:41:32 +03:00
Sweetbread ff0d402a7c ags: style 2026-08-19 21:41:32 +03:00
Sweetbread 61677eed09 pkgs: Remove dev packages 2026-08-19 21:41:32 +03:00
Sweetbread b68f55c599 fix: Show GPU stats in BTop 2026-08-19 21:41:32 +03:00
Sweetbread baa89ba1d4 grub: Add theme 2026-08-19 21:41:31 +03:00
Sweetbread b889c1d876 fix: Bootloader 2026-08-19 21:41:31 +03:00
Sweetbread 9d3c053acd fix: Icons 2026-08-19 21:41:31 +03:00
Sweetbread 122ab982e6 feat: ags 2026-08-19 21:41:31 +03:00
Sweetbread d07853a8d1 pkgs: New utils 2026-08-19 21:41:31 +03:00
Sweetbread c7a3b353aa system: Update 2026-08-19 21:41:31 +03:00
Sweetbread 0804b164e1 vpn: Update 2026-08-19 21:41:31 +03:00
Sweetbread b3137f6a21 pkgs: Add rtorrent 2026-08-19 21:41:31 +03:00
Sweetbread 8dab87ee21 syncthing: New device 2026-08-19 21:41:30 +03:00
Sweetbread d94737e8de pkgs: Add aseprite 2026-08-19 21:32:56 +03:00
Sweetbread 25fbc9fee0 pkgs: Add libreoffice 2026-08-19 21:32:55 +03:00
Sweetbread f01634bc64 develop: Add Rust 2026-08-19 21:32:55 +03:00
Sweetbread 1b4638c2f9 feat: Drag and Drop in yazi 2026-08-19 21:32:55 +03:00
Sweetbread 6c543e7478 system: Update 2026-08-19 21:32:55 +03:00
Sweetbread e70c545ecb vpn: Update 2026-08-19 21:32:55 +03:00
Sweetbread eb84bf348a pkgs: Flakify AAGL 2026-08-19 21:32:55 +03:00
Sweetbread 59edb25ebe pkgs: Syncthing 2026-08-19 21:32:55 +03:00
129 changed files with 3934 additions and 1323 deletions
Executable → Regular
View File
Executable → Regular
+1 -1
View File
@@ -5,7 +5,7 @@ creation_rules:
key_groups:
- age:
- *primary
- path_regex: host/(Rias|Senko|Eclipse)/secrets/.+$
- path_regex: host/(Rias|Senko|Inaho|Eclipse)/secrets/.+$
key_groups:
- age:
- *primary
Executable → Regular
View File
Executable → Regular
+42 -7
View File
@@ -1,12 +1,47 @@
# ❄️ My NixOS Config
```bash
git clone https://github.com/Andrey0189/nixos-config
mv nixos-config $HOME/nix # Config is supposed to be in the ~/nix directory
cd $HOME/nix
sudo nixos-rebuild switch --flake .
home-manager switch --flake .
This configuration is based on [&'s config](https://github.com/Andrey0189/nixos-config)
## Users
- [Sweetbread](./user/sweetbread)
- [Chest](./user/chest)
## 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)
![Screenshot](./screenshot.png)
-41
View File
@@ -1,41 +0,0 @@
{
disko.devices = {
disk = {
my-disk = {
device = "/dev/sdb";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
size = "256M";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
swap = {
size = "8G";
content = {
type = "swap";
resumeDevice = true;
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
}
+60
View File
@@ -0,0 +1,60 @@
{ lib
, pkgs
, mumble ? pkgs.mumble
}:
let
# PipeWire 1.4.0 removed client-rt.conf, changing how clients negotiate
# realtime scheduling. Mumble never adapted, so its PipeWire data-loop
# thread stalls mid-negotiation and its own RT watchdog SIGKILLs the
# whole process almost immediately on every launch (confirmed via
# bpftrace: signal_generate shows Mumble's own "data-loop.0" thread
# sending itself SIGKILL). Reproduced identically on both the packaged
# 1.5.915 (Qt5) and a from-source 1.6.870 RC (Qt6) build, so it's the
# shared PipeWire client integration at fault, not Mumble's UI stack.
#
# Upstream: https://github.com/mumble-voip/mumble/issues/6780
# Bisected there to PipeWire 1.2.7 (last known-good) vs 1.4.1+ (broken).
#
# Fix: give Mumble an old, compatible libpipewire-0.3.so to dlopen at
# runtime. The system's actual PipeWire daemon is untouched (still
# whatever version NixOS ships) - only the client library Mumble talks
# through is pinned back.
pipewireGoodPkgs = import (fetchTarball {
url = "https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz";
sha256 = "189lwv8l10bm9fnksfkzy05pm86gmziy9z3bdn13zc8d636ylchj"; # nix-prefetch-url --unpack https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz
}) { inherit (pkgs) system; };
pipewireGood = pipewireGoodPkgs.pipewire;
# Mumble's own build is Qt5-based; QT_PLUGIN_PATH isn't set by its
# wrapper for the platform/sql plugins mumble actually needs when we
# bypass that wrapper below, so it has to be supplied explicitly.
qt5PluginPath = lib.makeSearchPath "lib/qt-${pkgs.qt5.qtbase.version}/plugins" [
pkgs.qt5.qtbase.bin
pkgs.qt5.qtsvg.bin
pkgs.qt5.qtwayland.bin
];
in
pkgs.symlinkJoin {
name = "mumble-pipewire-fixed-${mumble.version}";
paths = [ mumble ];
nativeBuildInputs = [ pkgs.makeWrapper ];
# mumble's own wrapper always prepends its own (broken, too-new)
# PipeWire path in front of anything we set, so wrapping it a second
# time can't win that ordering fight. Instead we skip straight to the
# real unwrapped binary and set env ourselves.
postBuild = ''
rm -f $out/bin/mumble
makeWrapper ${mumble}/bin/.mumble-wrapped $out/bin/mumble \
--prefix LD_LIBRARY_PATH : "${pipewireGood}/lib" \
--set QT_PLUGIN_PATH "${qt5PluginPath}"
'';
meta = mumble.meta // {
description = mumble.meta.description
+ " (patched: pinned PipeWire client lib to 1.2.7 to work around SIGKILL-on-launch with PipeWire >=1.4.0, see mumble#6780)";
};
}
Generated Executable → Regular
+450 -408
View File
File diff suppressed because it is too large Load Diff
Executable → Regular
+78 -88
View File
@@ -3,118 +3,108 @@
nixConfig = {
extra-substituters = [
"https://nix.lair.moe/main"
"https://nix-community.cachix.org"
# "https://cache.garnix.io"
"https://hyprland.cachix.org"
"https://ezkea.cachix.org"
"https://risdeveau.cachix.org"
"https://yazi.cachix.org"
];
extra-trusted-public-keys = [
"main:tR2gNhCBJHKAlVgohPNHBhGnWL55tB8SxXmMWJe5lo8="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
# "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI="
"risdeveau.cachix.org-1:TsoFSVeLl7iKtUYGX7qsvKPjf2vbNLfLC5v3SAdU8r0="
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
];
};
inputs = {
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-fixed.url = "github:nixos/nixpkgs/26d499fc9f1d567283d5d56fcf367edd815dba1d";
sops-nix.url = "github:Mic92/sops-nix";
stylix.url = "github:danth/stylix";
ags.url = "github:Aylur/ags";
ayugram-desktop.url = "github:/ayugram-port/ayugram-desktop/release?submodules=1";
aagl = {
url = "github:ezKEa/aagl-gtk-on-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
ags = {
url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
helix-steel = {
url = "github:mattwparas/helix/steel-event-system";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-fixed, home-manager, ... }@inputs: let
system = "x86_64-linux";
in {
nixosConfigurations = {
Rias = 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/Rias/configuration.nix ];
};
hyprland = {
url = "github:hyprwm/Hyprland/v0.56.1";
# inputs.nixpkgs.follows = "nixpkgs";
};
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 ];
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs = {
hyprland.follows = "hyprland";
# nixpkgs.follows = "nixpkgs";
};
};
devShells."${system}".default = let
pkgs = import nixpkgs { inherit system; };
in pkgs.mkShell {
shellHook = "zsh";
packages = with pkgs; [
cargo
rustc
rust-analyzer
lldb
];
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-pinned.url = "github:nixos/nixpkgs/ec942ba042dad5ef097e2ef3a3effc034241f011";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
waybar = {
url = "github:Alexays/Waybar";
inputs.nixpkgs.follows = "nixpkgs";
};
yazi = {
url = "github:sxyazi/yazi";
inputs.nixpkgs.follows = "nixpkgs";
};
yazi-plugins = {
url = "github:yazi-rs/plugins";
flake = false;
};
};
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-pinned, home-manager, ... }@inputs: let
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 {
nixosConfigurations = {
Rias = mkHost "Rias";
Senko = mkHost "Senko";
Eclipse = mkHost "Eclipse";
Impreza = mkHost "Impreza";
Inaho = mkHost "Inaho";
};
};
}
Executable → Regular
+6 -6
View File
@@ -1,6 +1,4 @@
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
laptop = false;
in {
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
imports = [
./secrets/secrets.nix
./modules/aagl.nix
@@ -17,15 +15,17 @@ in {
(import ../../user/common.nix {
inherit config;
inherit pkgs;
inherit pkgs-unstable;
inherit pkgs-fixed;
inherit pkgs-stable;
inherit pkgs-pinned;
inherit lib;
inherit inputs;
inherit laptop;
name = "chest";
})
];
nixpkgs.config.allowBroken = true;
programs.gamemode.enable = true;
services.printing.enable = true;
virtualisation.virtualbox.host.enable = true;
users.extraGroups.vboxusers.members = [ "chest" ];
}
+4 -2
View File
@@ -27,13 +27,13 @@
fileSystems."/mnt/D" = {
device = "/dev/disk/by-uuid/E030A4DF30A4BDC2";
fsType = "ntfs";
options = ["umask=0022" "gid=100" "uid=1002" "nofail" ];
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
};
fileSystems."/mnt/F" = {
device = "/dev/disk/by-uuid/1C6278FC2848E1EF";
fsType = "ntfs";
options = ["umask=0022" "gid=100" "uid=1002" "nofail" ];
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
};
swapDevices = [ ];
@@ -47,4 +47,6 @@
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
boot.loader.grub.useOSProber = true;
}
Executable → Regular
+2
View File
@@ -2,6 +2,8 @@
imports = [ inputs.aagl.nixosModules.default ];
nix.settings = inputs.aagl.nixConfig; # Set up Cachix
programs.honkers-railway-launcher.enable = true;
programs.sleepy-launcher.enable = true;
programs.anime-game-launcher.enable = true;
networking.hosts."0.0.0.0" = [
"overseauspider.yuanshen.com"
"log-upload-os.hoyoverse.com"
Executable → Regular
View File
+40
View File
@@ -0,0 +1,40 @@
{ pkgs, lib, ... }:
let
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
wallpaper = pkgs.fetchurl {
name = "miku_wallpaper.jpg";
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
};
in {
wayland.windowManager.hyprland.settings = {
monitor = [
{
output = "DP-3";
mode = "1920x1080@165";
position = "0x0";
scale = 1;
}
{
output = "HDMI-A-1";
mode = "preferred";
position = "-1080x0";
scale = 1;
transform = 1;
}
];
workspace_rule = [
{ workspace = "1"; monitor = "DP-3"; default = true; }
{ workspace = "10"; monitor = "HDMI-A-1"; default = true; }
];
on = [
(hyprLua.onStart [
"hyprctl dispatch 'hl.dsp.focus({ 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"
])
];
};
}
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
+6 -12
View File
File diff suppressed because one or more lines are too long
Executable → Regular
+5 -7
View File
@@ -1,6 +1,4 @@
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
laptop = true;
in {
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
imports = [
./secrets/secrets.nix
./modules/grub.nix
@@ -15,17 +13,17 @@ in {
(import ../../user/common.nix {
inherit config;
inherit pkgs;
inherit pkgs-unstable;
inherit pkgs-fixed;
inherit pkgs-stable;
inherit pkgs-pinned;
inherit lib;
inherit inputs;
inherit laptop;
name = "chest";
})
];
nix.settings.cores = 3;
nixpkgs.config.allowBroken = true;
programs.gamemode.enable = true;
hardware.bluetooth.enable = true;
host.laptop = laptop;
host.laptop = true;
}
+16 -14
View File
@@ -13,22 +13,22 @@
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/31247de4-e9c0-4690-8bce-8380377b6872";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-label/NixOS";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/328A-299C";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-label/EFI";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" "nofail" ];
};
fileSystems."/mnt/Windows" =
{ device = "/dev/disk/by-uuid/84E48B00E48AF428";
fsType = "ntfs";
options = [ "umask=0022" "gid=100" "uid=1000" "nofail" ];
};
fileSystems."/mnt/Windows" = {
device = "/dev/disk/by-label/Windows";
fsType = "ntfs";
options = [ "umask=0022" "gid=100" "uid=1000" "nofail" ];
};
swapDevices = [ ];
@@ -41,4 +41,6 @@
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
boot.loader.grub.useOSProber = true;
}
Executable → Regular
View File
+15
View File
@@ -0,0 +1,15 @@
{ pkgs, lib, ... }:
let
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
wallpaper = pkgs.fetchurl {
name = "miku_wallpaper.jpg";
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
};
in {
wayland.windowManager.hyprland.settings.on = [
(hyprLua.onStart [
"${lib.getExe pkgs.swww} img -o eDP-1 ${wallpaper}"
])
];
}
+49
View File
@@ -0,0 +1,49 @@
ThinkPad T480
CPU: Intel i5-8350U
RAM: 16GB planned (8GB stock + 8GB SO-DIMM)
SSD: 256GB NVMe stock; disko assumes `/dev/nvme0n1`
## Installation notes
This host uses `disko` with GPT + unencrypted EFI System Partition + LUKS + Btrfs subvolumes.
Before formatting, verify the target disk:
```bash
lsblk
```
If the internal drive is not `/dev/nvme0n1`, edit `host/Inaho/disko.nix` first.
For a 2.5" SATA SSD/HDD it will usually be `/dev/sda`.
Then partition, format and mount:
```bash
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- \
--mode destroy,format,mount ./host/Inaho/disko.nix
```
This destroys the selected disk.
After that install the host:
```bash
sudo nixos-install --flake .#Inaho
```
The flake contains a new `disko` input. If `flake.lock` has not been updated yet, run:
```bash
nix flake lock --update-input disko
```
## After first boot
Update firmware, especially BIOS/UEFI and Thunderbolt, when batteries are installed and charged:
```bash
sudo fwupdmgr refresh
sudo fwupdmgr get-updates
sudo fwupdmgr update
```
+42
View File
@@ -0,0 +1,42 @@
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
imports = [
inputs.disko.nixosModules.disko
./disko.nix
./secrets/secrets.nix
./modules/grub.nix
./modules/syncthing.nix
../modules/thinkpad.nix
../modules/gpu/intel.nix
(import ../modules/common.nix {
inherit lib;
inherit inputs;
hostname = "Inaho";
})
(import ../../user/common.nix {
inherit config;
inherit pkgs;
inherit pkgs-stable;
inherit pkgs-pinned;
inherit lib;
inherit inputs;
name = "sweetbread";
fullname = "Sweet Bread";
})
];
hardware.bluetooth.enable = true;
host.laptop = true;
hardware.usb-modeswitch.enable = true;
networking.modemmanager.enable = true;
programs.steam = {
enable = true;
gamescopeSession.enable = true;
};
environment.systemPackages = with pkgs; [
pkgs-stable.bottles
];
}
+85
View File
@@ -0,0 +1,85 @@
{ lib, ... }:
let
# Verify with `lsblk` before running disko. For the stock T480 NVMe setup
# this is usually correct; for a 2.5" SATA SSD/HDD change it to /dev/sda.
disk = "/dev/sda";
btrfsMountOptions = [
"compress=zstd"
"noatime"
"ssd"
"discard=async"
];
in {
disko.devices = {
disk = {
main = {
type = "disk";
device = disk;
content = {
type = "gpt";
partitions = {
ESP = {
priority = 1;
name = "ESP";
start = "1M";
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
priority = 2;
name = "cryptsystem";
size = "100%";
content = {
type = "luks";
name = "crypted";
settings = {
# Allows fstrim/discard through LUKS for SSDs.
allowDiscards = true;
};
content = {
type = "btrfs";
extraArgs = [ "-f" "-L" "NixOS" ];
subvolumes = {
"/root" = {
mountpoint = "/";
mountOptions = btrfsMountOptions;
};
"/home" = {
mountpoint = "/home";
mountOptions = btrfsMountOptions;
};
"/nix" = {
mountpoint = "/nix";
mountOptions = btrfsMountOptions;
};
"/log" = {
mountpoint = "/var/log";
mountOptions = btrfsMountOptions;
};
"/swap" = {
mountpoint = "/.swapvol";
swap.swapfile.size = "16G";
};
};
};
};
};
};
};
};
};
};
}
+22
View File
@@ -0,0 +1,22 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
# File systems and swap are declared in ./disko.nix.
# If you regenerate this file after installation, use:
# nixos-generate-config --no-filesystems --root /mnt
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" "thinkpad_acpi" ];
boot.extraModulePackages = [ ];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+13
View File
@@ -0,0 +1,13 @@
{ pkgs, ... }: let
theme = pkgs.fetchFromGitHub {
owner = "Patato777";
repo = "dotfiles";
rev = "cc363921707807d7ad3e36b462f0df793a0fe18a";
hash = "sha256-fpXGFNrzbV6K9hoZRX4tGieTLzhpPeGm6wn8CF4OGow=";
};
in {
boot.loader.grub = {
gfxmodeEfi = "1920x1080";
theme = "${theme}/grub/themes/virtuaverse";
};
}
+10
View File
@@ -0,0 +1,10 @@
{
wayland.windowManager.hyprland.settings.monitor = [
{
output = "eDP-1";
mode = "1920x1080@60";
position = "0x0";
scale = 1;
}
];
}
+39
View File
@@ -0,0 +1,39 @@
{ config, ... }: {
services.syncthing = {
enable = true;
openDefaultPorts = true;
user = "sweetbread";
dataDir = "/home/sweetbread/.config/syncthing";
key = config.sops.secrets.syncthing_key.path;
cert = config.sops.secrets.syncthing_cert.path;
settings = {
devices = {
Rias.id = "EC5AGVN-2RKJDHN-NOSB7PQ-IRYCEEW-NPPDUGX-6QGSLUU-YIT5ZZZ-RVPTHQ6";
Akeno.id = "QDW3WJX-J7ETS4R-32CUAIY-EGNM2RD-ZEHOUW2-CHOEOUG-USZOWTR-HHQS2QX";
Koneko.id = "PJFWQRY-ZFUBGDR-NV7KVBL-UBDQ4HT-KPTYP34-MUDFPJU-4EZUHTT-ZLYRMAB";
};
folders = {
"Music" = {
path = "/home/sweetbread/Music";
devices = [ "Rias" "Akeno" "Koneko" ];
};
"Obsidian" = {
path = "/home/sweetbread/Documents/Obsidian";
devices = [ "Rias" "Akeno" "Koneko" ];
};
"Documents" = {
path = "/home/sweetbread/Documents";
devices = [ "Rias" ];
};
};
};
};
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true";
}
+20
View File
@@ -0,0 +1,20 @@
{
sops = {
age.keyFile = "/root/age.key";
secrets = {
vpn_bolt = {
format = "binary";
sopsFile = ../../Rias/secrets/vpn_bolt.db;
};
syncthing_cert = {
format = "binary";
sopsFile = ./syncthing_cert.pem;
};
syncthing_key = {
format = "binary";
sopsFile = ./syncthing_key.pem;
};
};
};
}
+14
View File
@@ -0,0 +1,14 @@
{
"data": "ENC[AES256_GCM,data:rMr83F9VyGV5dp2XqXGAh3X2sCczUb0chH/2Hn9N9tijfRsOLGqHuy/zy29aOHR0PJ4euTU3bhmxWrBV/7oTnnEfI7DFF0vX4eBDaK8BzwAzrzXHYJOAgcwuYSqEEyWiLvTGABuLhTEto9kIMLxVIssa679s7zQSRwemVJSA3fEdtYD0BLAiO/ZtiAEmitgEt4EBRp9DhJPqlh2YfMmP6DpkDSy0hk+S+0NZg7eyrp7fivldiLzjsYDwCsugFcZQtWOqLMHY0kYhou8c2CKXu8UyqVVx24DyWfBfD1TH2pOk1ZsXFsxhFFKp5wcsfi0xDF1BG4hANcHVa6pR6y5JxNzh53xaH3NuvNJFEQSGJw5fNMuCrDnkYLDpU3xezzjvvxI01y7i2A00zsLli1fc9HA67ZlP1OBzsI7FyMgZlnOXQpbqnkj+kZdYAdOTjjMzQvrPusVS3RvqvcWj1qZtnHa1ZGmWh7xG0J10lQB4uDmTSxWoUUi7VmLXTC16HQNMySd8GbFmD/4Nj+/SxDShgsiug7L4hICjPC8Isosy99tE2wRXpjmMYUdlD7zu/vyEMxVPhkWnJyZZPXG+DjGBc/Diaw4ufYNxUs4yIRDceMArirubt/sN/eUoGOBGVWxvGm0/olTott7Yr+YKRSrDyWo9SWCz1qgz/ydpXm+xE7bPtbj9eAObZwneB/0tZTyo8o1WKd9yUST89m91EMQ31R97yCBwDW19VftWVCZH2w+QHNunih4ZUNiALQS745T2petbvc63iNiZswu0l3qoVM8x3y1RhAPLbsZpwQWSca307iDfBTB6uVW4HwLtL30=,iv:ajC3mjCYKUqS7XGIN64NiJoG6wHMvGdcHhazSO860ms=,tag:31fWG7m2neW2Pft9TjmBGg==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuQUNTSDVIeDRuMmtTWXZD\nU0x4OVJrUStFeW5QV0pOZ2hEZnJZQ09UbW5RCmwxbjhuWis1Q3BCTGtOdS8zNE0w\nL0pDK3dBY1hxZ2dCNG96RlA0dkNWVWMKLS0tIHFld2hUdm11dk5hT2ZtRXpId0VG\nRDM0L05jS0lGcnJBYWVNWElIazdlaUEKugvBGcCzYTZL6aC6mI6GCzhiPFYql75z\nSBfalDmqSVU2k1IBqsNHIYSxzOXwUiGS3MSHJUCf7M2y9X3dHJGeyw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk"
}
],
"lastmodified": "2026-07-21T20:27:59Z",
"mac": "ENC[AES256_GCM,data:lYZH1f3TyvcgqWI9hVOP3l2xImRh+LL0volXVUYSdGBnQTsAJfzMdsol/SsETwNNn+KrANC3ucO0/MXOWDK7ZPJ5Oq9R+OQnM8LK9/5mNfbzgodTw0RaH8FsrrtBCtHn3H2rlrBoPFEArblWKOh0G9iyrmufT09OREGt/G0tE5o=,iv:vmB1CY3sVajvLS8zAS/0I+NgnAOStbUkzQdw6XY45y4=,tag:mZP/eZVn+DJq+OT1ghtOkQ==,type:str]",
"version": "3.13.2"
}
}
+14
View File
@@ -0,0 +1,14 @@
{
"data": "ENC[AES256_GCM,data:2nMwCxU1y0zE5VtnmEf3lT4XyI9e8dokPkipo3TXpxuRJZ9OXCOb0n4pHb4Xx9OlDgAeW2UX70cR1Wtj7QPQx9h/HYZTmUeIP4rvlTPhaxs/2F33ud1lPKceV2DK2q8G/EvPLnlCcLWMvy6BVsqBlNmjAzNonWI=,iv:7H0o0i3zp7K2demt1O2Pw4BNt+2q4PhHBw1K/jC7OH4=,tag:Bx82eo5kQqwlb6egYmopgQ==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2Vzl3M3pFblY5SmRQRUtI\nNWFCbWZJQTJTOWFHdTd1YkJEbXFGOFhBTUNNClBKdWhGdmh3Q2dUNkpMUUU3Zmdq\nUFd1M2twNW1KRGErRHUvc1BLY2pMT3MKLS0tIElVZ0RVVFQrb1FuYnJ0OU44RWZK\nbnpJZnFLR3kzV3VRaytQRDMrYkg5S2sKkr97EwJmtcIsRYH4di+tadTWnWzuCDa9\ngY+CKCVEPUgD1AXSgCwCP2AVd/zaKUbm6d6UA2QzZyqGsRim56WFsQ==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk"
}
],
"lastmodified": "2026-07-21T20:28:23Z",
"mac": "ENC[AES256_GCM,data:ohYjzIYDilW7lsmZFZXpF629yevO2p8laA7Zl0+NCvZ8dB4nthLUePsnLTYCrEo5ADbboM5Cka11FiYbmB1IMR4mEdRwTN37EsQtyYLZbZ+j4XPsuXO0UT0NmWWiFNJlQEWfTVbhaZRDQXcPpVvm+6qQfRub018/0C59oWpmbyA=,iv:SX1QDDUWZyxE0zODAImcGGHJI7KGKYx9/6Q9F+9SVCQ=,tag:AExTZIfAKTCeU9c3Qj+IUw==,type:str]",
"version": "3.13.2"
}
}
+7
View File
@@ -0,0 +1,7 @@
My desktop
- **CPU:** Intel i5-10600KF
- **GPU:** NVidia GeForce RTX 3060 Ti
- **RAM:** 32GB
- **SSD:** 512GB
- **HDD:** 1TB
Executable → Regular
+8 -7
View File
@@ -1,11 +1,9 @@
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
laptop = false;
in {
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
imports = [
./secrets/secrets.nix
./modules/grub.nix
./modules/syncthing.nix
../../modules/host/adb.nix
./modules/rgb.nix
../modules/gpu/nvidia.nix
(import ../modules/common.nix {
@@ -17,11 +15,10 @@ in {
(import ../../user/common.nix {
inherit config;
inherit pkgs;
inherit pkgs-unstable;
inherit pkgs-fixed;
inherit pkgs-stable;
inherit pkgs-pinned;
inherit lib;
inherit inputs;
inherit laptop;
name = "sweetbread";
fullname = "Sweet Bread";
})
@@ -29,4 +26,8 @@ in {
programs.gamemode.enable = true;
services.printing.enable = true;
hardware.opentabletdriver.enable = true;
environment.systemPackages = [ pkgs.android-tools ];
users.users.sweetbread.extraGroups = [ "kvm" ];
}
+7 -3
View File
@@ -11,6 +11,10 @@
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
environment.etc.crypttab.text = ''
storage UUID=9327148b-788a-4c23-ac73-28464ffabe1b none luks
'';
fileSystems."/" = {
device = "/dev/disk/by-label/NixOS";
fsType = "ext4";
@@ -23,9 +27,9 @@
};
fileSystems."/mnt/D" = {
device = "/dev/disk/by-label/Data";
fsType = "ntfs";
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
device = "/dev/mapper/storage";
fsType = "ext4";
options = [ "noatime" "nofail" ];
};
swapDevices = [ ];
Executable → Regular
View File
+50
View File
@@ -0,0 +1,50 @@
{ pkgs, lib, ... }:
let
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
monitor-switcher = pkgs.writers.writeBashBin "monitor_switcher" /*bash*/ ''
MODE=$1
case $MODE in
"tv")
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "1920x1080@60", position = "3840x0", scale = 1 })'
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "3840x2160@60", position = "0x0", scale = 1 })'
notify-send "TV mode"
;;
"mirror")
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "3840x2160@60", position = "0x0", scale = 1 })'
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "preferred", position = "auto", scale = 1, mirror = "HDMI-A-1" })'
notify-send "TV-only mode"
;;
"display"|*)
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", disabled = true })'
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "3440x1440@165", position = "0x0", scale = 1 })'
notify-send "Display mode"
;;
esac
'';
in {
wayland.windowManager.hyprland.settings = {
monitor = [
{
output = "DP-3";
mode = "3440x1440@165";
position = "auto-right";
scale = 1;
}
{
output = "HDMI-A-1";
disabled = true;
}
];
bind = [
(hyprLua.bind "XF86Calculator" (hyprLua.exec "ghostty --title=pulsemixer -e pulsemixer"))
(hyprLua.bind "SUPER + F1" (hyprLua.exec "${lib.getExe monitor-switcher} tv"))
(hyprLua.bind "SUPER + F2" (hyprLua.exec "${lib.getExe monitor-switcher} mirror"))
(hyprLua.bind "SUPER + F3" (hyprLua.exec "${lib.getExe monitor-switcher}"))
];
};
}
+17
View File
@@ -0,0 +1,17 @@
{ pkgs, ... }:{
services.hardware.openrgb = {
enable = true;
package = pkgs.openrgb-with-all-plugins;
};
environment.systemPackages = with pkgs; [
openrgb-with-all-plugins
i2c-tools
pciutils
];
hardware.i2c.enable = true;
boot.kernelModules = [ "i2c-dev" ];
users.groups.i2c.members = [ "sweetbread" ];
}
Executable → Regular
+14 -3
View File
@@ -11,8 +11,9 @@
settings = {
devices = {
Akeno = { id = "QDW3WJX-J7ETS4R-32CUAIY-EGNM2RD-ZEHOUW2-CHOEOUG-USZOWTR-HHQS2QX"; };
Koneko = { id = "PJFWQRY-ZFUBGDR-NV7KVBL-UBDQ4HT-KPTYP34-MUDFPJU-4EZUHTT-ZLYRMAB"; };
Akeno.id = "QDW3WJX-J7ETS4R-32CUAIY-EGNM2RD-ZEHOUW2-CHOEOUG-USZOWTR-HHQS2QX";
Koneko.id = "PJFWQRY-ZFUBGDR-NV7KVBL-UBDQ4HT-KPTYP34-MUDFPJU-4EZUHTT-ZLYRMAB";
Inaho.id = "GEHWQFQ-MPIMQ7R-QEWSOEB-BIZAHSZ-5YOFATK-KDIXFMV-JX3OF6G-ZPNZMA4";
};
folders = {
@@ -33,7 +34,17 @@
"Music" = {
path = "/home/sweetbread/Music";
devices = [ "Akeno" "Koneko" ];
devices = [ "Akeno" "Koneko" "Inaho" ];
};
"Obsidian" = {
path = "/mnt/D/Obsidian";
devices = [ "Koneko" "Inaho" ];
};
"Documents" = {
path = "/home/sweetbread/Documents";
devices = [ "Inaho" ];
};
};
};
Executable → Regular
View File
View File
View File
Executable → Regular
+6 -12
View File
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
My laptop `HP Pavilion 15-cb012ur`
Executable → Regular
+5 -7
View File
@@ -1,6 +1,4 @@
{ config, pkgs, pkgs-unstable, pkgs-fixed, lib, inputs, ...}: let
laptop = true;
in {
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
imports = [
./secrets/secrets.nix
./modules/grub.nix
@@ -15,18 +13,18 @@ in {
(import ../../user/common.nix {
inherit config;
inherit pkgs;
inherit pkgs-unstable;
inherit pkgs-fixed;
inherit pkgs-stable;
inherit pkgs-pinned;
inherit lib;
inherit inputs;
inherit laptop;
name = "sweetbread";
fullname = "Sweet Bread";
})
];
hardware.bluetooth.enable = true;
host.laptop = laptop;
host.laptop = true;
host.nvidia.prime.enable = true;
environment.systemPackages = [ pkgs.dbgate ];
}
+1 -1
View File
@@ -17,7 +17,7 @@
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D706-818C";
device = "/dev/disk/by-partlabel/EFI";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" "nofail" ];
};
Executable → Regular
View File
+10
View File
@@ -0,0 +1,10 @@
{
wayland.windowManager.hyprland.settings.monitor = [
{
output = "eDP-1";
mode = "1920x1080@60";
position = "0x0";
scale = 1;
}
];
}
Executable → Regular
+1 -1
View File
@@ -4,7 +4,7 @@
secrets = {
vpn_bolt = {
format = "binary";
sopsFile = ./vpn_bolt.db;
sopsFile = ../../Rias/secrets/vpn_bolt.db;
};
};
};
-1
View File
@@ -1 +0,0 @@
../../Rias/secrets/vpn_bolt.db
Executable → Regular
+24 -3
View File
@@ -7,14 +7,35 @@
];
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 = {
nix.settings = {
keep-going = true;
extra-substituters = [ "https://nix.lair.moe/main" ];
extra-trusted-public-keys = [ "main:tR2gNhCBJHKAlVgohPNHBhGnWL55tB8SxXmMWJe5lo8=" ];
experimental-features = [ "nix-command" "flakes" ];
};
networking.hostName = hostname;
time.timeZone = lib.mkDefault "Europe/Moscow";
i18n.defaultLocale = lib.mkDefault "ru_RU.UTF-8";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
system.stateVersion = "23.05";
};
}
}
Executable → Regular
+6 -6
View File
@@ -1,22 +1,22 @@
{ config, pkgs, ... }:
{ config, pkgs-stable, ... }:
{
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
extraPackages = with pkgs-stable; [
intel-media-driver
intel-compute-runtime
libvdpau-va-gl
];
extraPackages32 = with pkgs.pkgsi686Linux; [
extraPackages32 = with pkgs-stable.pkgsi686Linux; [
intel-media-driver
];
};
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
nixpkgs.config.packageOverrides = pkgs-stable: {
vaapiIntel = pkgs-stable.vaapiIntel.override { enableHybridCodec = true; };
};
environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs-stable; [
intel-gpu-tools
libva-utils
clinfo
Executable → Regular
+41 -7
View File
@@ -1,11 +1,27 @@
{ config, pkgs, lib, ... }: {
services.xserver.videoDrivers = [ "nvidia" ];
{ config, pkgs-stable, lib, ... }: let
primeCfg = config.host.nvidia.prime;
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 = {
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [nvidia-vaapi-driver intel-media-driver];
extraPackages32 = with pkgs.pkgsi686Linux; [nvidia-vaapi-driver intel-media-driver];
extraPackages = with pkgs-stable; [
# nvidia-vaapi-driver
intel-media-driver
libvdpau-va-gl
];
extraPackages32 = with pkgs-stable.pkgsi686Linux; [ nvidia-vaapi-driver intel-media-driver ];
};
nvidia = {
@@ -18,10 +34,28 @@
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = lib.optionalAttrs config.host.laptop {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
prime = lib.optionalAttrs isPrimeOffload {
offload = {
enable = true;
enableOffloadCmd = true;
};
intelBusId = primeCfg.intelBusId;
nvidiaBusId = primeCfg.nvidiaBusId;
};
};
};
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_DRM_NO_ATOMIC = 1;
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
};
}
Executable → Regular
+4 -4
View File
@@ -1,7 +1,7 @@
{ pkgs-unstable, inputs, ... }: {
{ pkgs, inputs, ... }: {
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs-unstable; [
environment.systemPackages = with pkgs; [
file
tree
wget
@@ -15,12 +15,12 @@
ncdu
tldr
helix
pinentry
pinentry-gnome3
];
fonts = {
enableDefaultPackages = false;
packages = with pkgs-unstable; [
packages = with pkgs; [
jetbrains-mono # Best mono font
noto-fonts-cjk-sans # Japanese
powerline-symbols # Console decoration
+83
View File
@@ -0,0 +1,83 @@
{ config, lib, pkgs, ... }: {
# T480-specific hardware defaults.
hardware = {
enableRedistributableFirmware = true;
trackpoint = {
enable = true;
emulateWheel = true;
};
};
boot = {
supportedFilesystems = [ "btrfs" ];
initrd.availableKernelModules = [
"nvme"
"ahci"
"xhci_pci"
"usb_storage"
"usbhid"
"sd_mod"
"rtsx_pci_sdmmc"
];
kernelModules = [ "kvm-intel" "thinkpad_acpi" ];
kernelParams = [
# Prefer S3/deep sleep when BIOS exposes it. If suspend behaves worse,
# remove this and use the BIOS sleep setting instead.
"mem_sleep_default=deep"
];
};
powerManagement.enable = true;
services = {
# Firmware updates for BIOS/UEFI, Thunderbolt, SSDs where LVFS supports it.
fwupd.enable = true;
# Helps Intel laptops keep sane thermal behaviour under load.
thermald.enable = true;
# Fingerprint reader support. If fprintd does not detect the reader,
# leaving this enabled is harmless; login can still use a password.
fprintd.enable = true;
logind.settings.Login = {
HandleLidSwitch = "suspend-then-hibernate";
HandleLidSwitchExternalPower = "suspend-then-hibernate";
HandlePowerKey = "poweroff";
};
tlp.settings = {
# Preserve batteries when the laptop is usually on AC.
# Raise STOP_* to 100 if maximum autonomy matters more than battery wear.
START_CHARGE_THRESH_BAT0 = 70;
STOP_CHARGE_THRESH_BAT0 = 95;
START_CHARGE_THRESH_BAT1 = 70;
STOP_CHARGE_THRESH_BAT1 = 85;
RESTORE_THRESHOLDS_ON_BAT = 1;
# NVMe/SATA SSD power saving without making the system too sluggish.
AHCI_RUNTIME_PM_ON_AC = "on";
AHCI_RUNTIME_PM_ON_BAT = "auto";
SATA_LINKPWR_ON_AC = "med_power_with_dipm";
SATA_LINKPWR_ON_BAT = "med_power_with_dipm";
# Usually safe on ThinkPads; disable if some USB device randomly disconnects.
USB_AUTOSUSPEND = 1;
};
};
networking.networkmanager.wifi.powersave = true;
environment.systemPackages = with pkgs; [
acpi
lm_sensors
pciutils
powertop
smartmontools
usbutils
nvme-cli
];
}
Executable → Regular
+33 -4
View File
@@ -1,4 +1,4 @@
{
{ pkgs, ... }: {
imports = [
./host/bluetooth.nix
./host/bootloader.nix
@@ -8,18 +8,47 @@
./host/gamemode.nix
./host/gpg.nix
./host/laptop.nix
./host/network.nix
./host/printing.nix
./host/shutdown-on-lan.nix
./host/sound.nix
./host/virtmanager.nix
./host/vpn.nix
./host/network.nix
./host/yggdrasil.nix
./host/mtp.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 = {
udisks2.enable = true;
fstrim.enable = true;
upower.enable = true;
};
-4
View File
@@ -1,4 +0,0 @@
{
programs.adb.enable = true;
users.users.sweetbread.extraGroups = ["adbusers"]; # FIXME: check users
}
Executable → Regular
View File
Executable → Regular
-1
View File
@@ -11,7 +11,6 @@
enable = true;
efiSupport = true;
device = "nodev";
useOSProber = true;
};
};
consoleLogLevel = 0;
Executable → Regular
+2 -2
View File
@@ -1,6 +1,6 @@
{ pkgs, ... }: {
{
console = {
font = "${pkgs.kbd}/share/consolefonts/LatArCyrHeb-19.psfu.gz";
font = "LatArCyrHeb-19";
colors = [
"16161E"
"1A1B26"
Executable → Regular
View File
Executable → Regular
+10 -3
View File
@@ -1,8 +1,15 @@
{
{ lib, ... }: {
environment.variables = {
EDITOR = "hx";
RANGER_LOAD_DEFAULT_RC = "FALSE";
QT_QPA_PLATFORMTHEME = "qt5ct";
GSETTINGS_BACKEND = "keyfile";
# GTK/Electron apps do not consistently use the portal picker unless this
# 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";
};
}
Executable → Regular
+3 -3
View File
@@ -1,4 +1,4 @@
{ config, pkgs, pkgs-unstable, lib, ... }:
{ config, pkgs, pkgs-stable, lib, ... }:
lib.mkIf config.programs.gamemode.enable {
programs.steam = {
@@ -8,9 +8,9 @@ lib.mkIf config.programs.gamemode.enable {
environment.systemPackages = with pkgs; [
mangohud
protonup
protonup-ng
bottles
heroic
pkgs-stable.heroic
prismlauncher
];
Executable → Regular
+1 -1
View File
@@ -1,4 +1,4 @@
{ pkgs, ...}: {
{
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
Executable → Regular
+3 -3
View File
@@ -4,11 +4,11 @@ lib.mkIf config.host.laptop {
services.tlp = {
enable = true;
settings = {
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_AC = "powersave";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
+5
View File
@@ -0,0 +1,5 @@
{ pkgs, ... }: {
environment.systemPackages = [ pkgs.glib ];
programs.fuse.enable = true;
services.gvfs.enable = true;
}
Executable → Regular
+2 -2
View File
@@ -2,14 +2,14 @@
networking = {
enableIPv6 = true;
useDHCP = false;
nameservers = [ "193.222.99.172" "1.1.1.1" ];
nameservers = [ "64.188.64.176" "1.1.1.1" ];
dhcpcd.extraConfig = "nohook resolv.conf";
networkmanager = {
enable = true;
dns = "none";
insertNameservers = [ "193.222.99.172" "1.1.1.1" ];
insertNameservers = [ "64.188.64.176" "1.1.1.1" ];
};
};
}
Executable → Regular
+21 -5
View File
@@ -1,9 +1,25 @@
{ config, lib, ... }:
{ config, lib, pkgs, ... }:
lib.mkIf config.services.printing.enable {
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
services = {
printing.drivers = with pkgs; [
brlaser
];
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
};
hardware.sane = {
enable = true;
extraBackends = with pkgs; [ sane-airscan ];
};
environment.systemPackages = with pkgs; [
sane-frontends
simple-scan
];
}
Executable → Regular
+20 -14
View File
@@ -1,8 +1,8 @@
{ pkgs, lib, ... }:
let
sol = pkgs.writers.writePython3 "shutdown-on-lan.py" {
libraries = [ pkgs.python312Packages.psutil ];
flakeIgnore = [ "E501" "E302" "E305" ];
libraries = ps: [ ps.psutil ];
flakeIgnore = [ "E302" "E305" "E501" "E701" ];
} /*py*/ ''
# https://habr.com/ru/articles/816765/
@@ -21,20 +21,26 @@
ip_addr = mac_addr = None
while not ip_addr or not mac_addr or ip_addr == '127.0.0.1':
net = psutil.net_if_addrs()
for item in net[list(net.keys())[-1]]:
addr = item.address
# В IPv4-адресах разделители - точки
if '.' in addr:
ip_addr = addr
# В MAC-адресах разделители либо тире, либо одинарное двоеточие.
# Двойное двоеточие - это разделители для адресов IPv6
elif ('-' in addr or ':' in addr) and '::' not in addr:
# Приводим MAC-адрес к одному формату. Формат может меняться в зависимости от ОС
mac_addr = addr.replace(':', '-').upper()
nets = psutil.net_if_addrs()
for net in list(nets.keys())[::-1]:
if net in ('lo', 'tun0'): continue
logger.debug(str(net))
for item in nets[net]:
# logger.debug(str(item))
addr = item.address
logger.debug(addr)
# В IPv4-адресах разделители - точки
if '.' in addr:
ip_addr = addr
# В MAC-адресах разделители либо тире, либо одинарное двоеточие.
# Двойное двоеточие - это разделители для адресов IPv6
elif ('-' in addr or ':' in addr) and '::' not in addr:
# Приводим MAC-адрес к одному формату. Формат может меняться в зависимости от ОС
mac_addr = addr.replace(':', '-').upper()
if not ip_addr or not mac_addr or ip_addr == '127.0.0.1':
logger.debug('Не удалось получить IP или MAC-адрес сетевого интерфейса')
logger.error('Не удалось получить IP или MAC-адрес сетевого интерфейса')
sleep(10)
logger.debug(mac_addr)
return ip_addr, mac_addr
def assemble_wol_packet(mac_address: str) -> str:
Executable → Regular
View File
Executable → Regular
+1 -1
View File
@@ -1,4 +1,4 @@
{ pkgs, ... }: {
{
virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true;
}
Executable → Regular
+23 -22
View File
@@ -1,28 +1,29 @@
{ pkgs, pkgs-unstable, config, ...}: {
systemd.services.v2raya = {
{ pkgs-pinned, lib, ... }: {
programs.clash-verge = {
enable = true;
description = "v2rayA gui client";
after = [ "network.target" ];
serviceConfig = {
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";
};
package = pkgs-pinned.clash-verge-rev;
serviceMode = true;
tunMode = true;
autoStart = true;
};
environment.etc = {
"v2raya/ru_geoip.dat".source = pkgs.fetchurl {
name = "geoip.dat";
url = "https://github.com/runetfreedom/russia-blocked-geoip/releases/download/202505050926/geoip.dat";
hash = "sha256-vn7cZigqaHY8ncmWJXik8K7ri6JvEoma4sCp6mG3N0U=";
};
systemd.services.clash-verge.serviceConfig = {
CapabilityBoundingSet = lib.mkForce [
"CAP_NET_ADMIN"
"CAP_NET_RAW"
"CAP_SYS_ADMIN"
"CAP_DAC_OVERRIDE"
"CAP_DAC_READ_SEARCH"
"CAP_SYS_PTRACE"
"CAP_SETUID"
"CAP_SETGID"
"CAP_CHOWN"
"CAP_MKNOD"
];
"v2raya/bolt.db".source = config.sops.secrets.vpn_bolt.path;
AmbientCapabilities = [
"CAP_DAC_READ_SEARCH"
"CAP_SYS_PTRACE"
];
};
}
Executable → Regular
+2 -1
View File
@@ -4,7 +4,8 @@
persistentKeys = true;
settings = {
Peers = [
"tcp://codrs.ru:5001"
"tcp://box.paulll.cc:13337"
"tcp://lair.moe:5001"
];
};
};
Executable → Regular
+16 -12
View File
@@ -1,20 +1,24 @@
{ config, lib, ... }: {
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/wofi.nix
./user/mako.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/desktop.nix
./user/packages/coding.nix
./user/packages/utils.nix
] ;
];
}
-26
View File
@@ -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; });
}
Executable → Regular
View File
Executable → Regular
+13 -1
View File
@@ -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 = {
enable = true;
enableZshIntegration = true;
package = ghosttyWithGL;
settings = {
confirm-close-surface = false;
copy-on-select = false;
title-report = true;
custom-shader = "${shaders}/cursor_warp.glsl";
};
};
}
Executable → Regular
+182 -2
View File
@@ -1,12 +1,114 @@
{
{ inputs, pkgs, lib, config, ... }: let
helixSteel =
inputs.helix-steel.packages.${pkgs.system}.default.overrideAttrs (old: {
cargoBuildFlags = (old.cargoBuildFlags or []) ++ [
"--features"
"steel,git"
];
});
comment-headers = pkgs.fetchurl {
url = "https://github.com/codingvivi/comment-dividers.hx/raw/refs/heads/main/comment_headers.scm";
name = "comment_headers.scm";
hash = "sha256-ohgn6DFJl0rdRJuri6Frs/uUlUsPxMvPHDuw4FS3qEE=";
};
patched-comment-headers = pkgs.runCommand "comment_headers.scm" { } ''
install -m 0644 ${comment-headers} "$out"
${pkgs.python3}/bin/python3 - <<'PY'
from pathlib import Path
import os
import sys
p = Path(os.environ["out"])
s = p.read_text()
start_marker = "(define (get-block-delims)"
end_marker = "(define (delete_till_first_nonwhitespace!)"
try:
start = s.index(start_marker)
end = s.index(end_marker, start)
except ValueError as e:
sys.exit(f"failed to find function markers: {e}")
new_get_block_delims = """(define (get-block-delims)
(helix.static.open_above)
(helix.static.insert_string "test_string")
(helix.static.normal_mode)
(helix.static.extend_to_line_bounds)
(helix.static.trim_selections)
(helix.static.toggle_comments)
(let* ([commented-test-string (helix.static.current-highlighted-text!)]
[strings-without-whitespace (split-whitespace commented-test-string)])
(delete-line-noyank!)
(cond
[(and (> (length strings-without-whitespace) 1)
(equal? (last strings-without-whitespace) "test_string"))
(list (first strings-without-whitespace) "")]
[(> (length strings-without-whitespace) 2)
(list (first strings-without-whitespace) (last strings-without-whitespace))]
[else
(list "" "")])))
"""
s = s[:start] + new_get_block_delims + s[end:]
old = "(make-line line-length fill-pattern #f padding-pattern)"
new = "(make-line line-length \"\" fill-pattern padding-pattern)"
if old not in s:
sys.exit("failed to find insert-divider make-line call")
s = s.replace(old, new)
p.write_text(s)
PY
'';
in {
home.packages = with pkgs; [
asm-lsp
fasm
steel
wakatime-cli
];
home.activation.installWakatimeHx = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
export PATH="${pkgs.steel}/bin:$PATH"
export STEEL_HOME="${config.xdg.dataHome}/steel"
if [ ! -f "$STEEL_HOME/cogs/wakatime/wakatime.scm" ]; then
forge pkg install --git https://github.com/Xerxes-2/wakatime.hx.git
fi
'';
programs.helix = {
enable = true;
package = helixSteel;
defaultEditor = true;
languages = {
language-server.asm-lsp.command = "asm-lsp";
language = [
{
name = "nasm";
file-types = [ "asm" "inc" ];
comment-token = ";";
language-servers = [ "asm-lsp" ];
}
];
};
settings = {
# theme = "catppuccin-mocha";
editor = {
rulers = [ 81 ];
insert-final-newline = false;
indent-guides.render = true;
whitespace.render = {
space = "all";
tab = "all";
@@ -15,8 +117,86 @@
newline = "none";
};
indent-guides.render = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
};
keys.normal = {
space = {
C-a = {
b = ":fasm-build";
r = ":fasm-run";
c = ":fasm-clean";
};
C-c = {
h = ":comment-h1";
j = ":comment-h2";
k = ":comment-h3";
d = ":comment-divider";
};
};
S-down = ["extend_to_line_bounds" "delete_selection" "paste_after"];
S-up = ["extend_to_line_bounds" "delete_selection" "move_line_up" "paste_before"];
};
};
};
xdg.configFile = {
"asm-lsp/.asm-lsp.toml".text = ''
[default_config]
assembler = "fasm"
instruction_set = "x86/x86-64"
[opts]
compiler = "fasm"
diagnostics = true
default_diagnostics = true
'';
"helix/cogs/comment_headers.scm".source = patched-comment-headers;
"helix/helix.scm".text = ''
(require (prefix-in div. "cogs/comment_headers.scm"))
(require (prefix-in helix. "helix/commands.scm"))
(provide comment-h1
comment-h2
comment-h3
comment-divider
fasm-build
fasm-run
fasm-clean)
(define (comment-h1)
(div.insert-h1!))
(define (comment-h2)
(div.insert-h2!))
(define (comment-h3)
(div.insert-h3!))
(define (comment-divider)
(div.insert-divider! 80 "~"))
(define (fasm-build)
(helix.write)
(helix.run-shell-command "just" "build"))
(define (fasm-run)
(helix.write)
(helix.run-shell-command "just" "run"))
(define (fasm-clean)
(helix.run-shell-command "just" "clean"))
'';
"helix/init.scm".text = ''
;; Steel init file
(require "wakatime/wakatime.scm")
'';
};
}
+231
View File
@@ -0,0 +1,231 @@
{ pkgs, lib, config, osConfig, inputs, username, ... }:
let
optImport = path: lib.optional (builtins.pathExists path) path;
hostname = osConfig.networking.hostName;
hyprLua = import ./hyprland/lua.nix { inherit lib; };
inherit (hyprLua) bind bindWithFlags exec onStart;
direction = {
left = "l";
right = "r";
up = "u";
down = "d";
};
workspaceBinds = lib.concatMap (workspace:
let
key = if workspace == 10 then "0" else toString workspace;
workspaceValue = toString workspace;
in [
(bind "SUPER + ${key}" "hl.dsp.focus({ workspace = ${workspaceValue} })")
(bind "SUPER + SHIFT + ${key}" "hl.dsp.window.move({ workspace = ${workspaceValue}, follow = false })")
]
) (lib.range 1 10);
in {
imports = [
./hyprland/zoom.nix
] ++
optImport ../../host/${hostname}/modules/hyprland.nix ++
optImport ../../user/${username}/modules/hyprland.nix;
home.packages = with pkgs; [
ghostty
pamixer
clipse
wl-clipboard
wl-clip-persist
xclip
awww
wifitui
];
wayland.windowManager.hyprland = {
enable = true;
configType = "lua";
xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
# hyprbars # Version mismatch
];
settings = {
config = {
ecosystem = {
no_donation_nag = true;
no_update_news = true;
};
cursor.no_hardware_cursors = 1;
debug = {
disable_logs = false;
enable_stdout_logs = true;
};
general."col.inactive_border" = lib.mkForce "rgba(00000000)";
decoration = {
inactive_opacity = lib.mkDefault 0.95;
border_part_of_window = false;
};
misc.focus_on_activate = true;
input = {
kb_layout = "us,ru";
kb_options = "grp:caps_toggle";
numlock_by_default = true;
follow_mouse = 1;
touchpad.natural_scroll = false;
sensitivity = 0;
};
gestures = {
workspace_swipe_invert = true;
workspace_swipe_distance = 200;
workspace_swipe_forever = true;
};
};
env = [
{ _args = [ "XDG_SESSION_TYPE" "wayland" ]; }
{ _args = [ "QT_QPA_PLATFORM" "wayland" ]; }
{ _args = [ "QT_QPA_PLATFORMTHEME" "xdgdesktopportal" ]; }
{ _args = [ "GTK_USE_PORTAL" "1" ]; }
{ _args = [ "TDESKTOP_USE_GTK_FILE_DIALOG" "1" ]; }
{ _args = [ "NIXOS_OZONE_WL" "1" ]; }
{ _args = [ "ELECTRON_OZONE_PLATFORM_HINT" "auto" ]; }
{ _args = [ "XDG_CURRENT_DESKTOP" "Hyprland" ]; }
{ _args = [ "XDG_SESSION_DESKTOP" "Hyprland" ]; }
{ _args = [ "XCURSOR_SIZE" (toString config.stylix.cursor.size) ]; }
{ _args = [ "XCURSOR_THEME" config.stylix.cursor.name ]; }
{ _args = [ "XDG_SCREENSHOTS_DIR" "~/screens" ]; }
];
gesture = [
{
fingers = 3;
direction = "horizontal";
action = "workspace";
}
];
workspace_rule = [
{
workspace = "w[t1]";
gaps_out = 0;
}
];
window_rule = [
{ match.class = "imv"; float = true; }
{ match.class = "feh"; float = true; }
{ match.class = "mpv"; float = true; }
{ match.title = "Список друзей"; float = true; }
{ match.title = "wifitui"; float = true; }
{ match.title = "pulsemixer"; float = true; }
{ match.title = "clipse"; float = true; }
{ match.title = "clipse"; size = [ 622 652 ]; }
{ match.focus = true; rounding = 0; }
{
match = {
float = false;
workspace = "w[t1]";
};
border_size = 0;
}
];
on = lib.mkBefore [
(onStart [
"systemctl --user start plasma-polkit-agent"
"${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --systemd --all"
"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"
"clipse -listen"
"${lib.getExe' pkgs.udiskie "udiskie"}"
])
];
bind = [
(bind "SUPER + V" (exec "ghostty --title=clipse -e clipse"))
(bind "SUPER + RETURN" (exec "ghostty"))
(bind "SUPER + Q" "hl.dsp.window.close()")
(bind "SUPER + M" "hl.dsp.exit()")
(bind "SUPER + E" (exec "ghostty -e sh -c yazi"))
(bind "SUPER + F" "hl.dsp.window.float({ action = \"toggle\" })")
(bind "SUPER + P" "hl.dsp.window.pseudo({ action = \"toggle\" })")
(bind "SUPER + J" "hl.dsp.layout(\"togglesplit\")")
(bind "SUPER + K" "hl.dsp.layout(\"swapsplit\")")
(bind "SUPER + LEFT" "hl.dsp.focus({ direction = \"${direction.left}\" })")
(bind "SUPER + RIGHT" "hl.dsp.focus({ direction = \"${direction.right}\" })")
(bind "SUPER + UP" "hl.dsp.focus({ direction = \"${direction.up}\" })")
(bind "SUPER + DOWN" "hl.dsp.focus({ direction = \"${direction.down}\" })")
(bind "SUPER + SHIFT + LEFT" "hl.dsp.window.swap({ direction = \"${direction.left}\" })")
(bind "SUPER + SHIFT + RIGHT" "hl.dsp.window.swap({ direction = \"${direction.right}\" })")
(bind "SUPER + SHIFT + UP" "hl.dsp.window.swap({ direction = \"${direction.up}\" })")
(bind "SUPER + SHIFT + DOWN" "hl.dsp.window.swap({ direction = \"${direction.down}\" })")
(bind "SUPER + CTRL + LEFT" "hl.dsp.window.resize({ x = -60, y = 0, relative = true })")
(bind "SUPER + CTRL + RIGHT" "hl.dsp.window.resize({ x = 60, y = 0, relative = true })")
(bind "SUPER + CTRL + UP" "hl.dsp.window.resize({ x = 0, y = -60, relative = true })")
(bind "SUPER + CTRL + DOWN" "hl.dsp.window.resize({ x = 0, y = 60, relative = true })")
] ++ workspaceBinds ++ [
(bind "SUPER + SHIFT + F" "hl.dsp.window.fullscreen({ action = \"toggle\", mode = \"fullscreen\" })")
(bind "SUPER + mouse_down" "hl.dsp.focus({ workspace = \"e-1\" })")
(bind "SUPER + mouse_up" "hl.dsp.focus({ workspace = \"e+1\" })")
(bind "SUPER + F3" (exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set +33%"))
(bind "SUPER + F2" (exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set 33%-"))
(bind "XF86AudioMute" (exec "pamixer -t"))
(bind "XF86AudioMicMute" (exec "pamixer --default-source -m"))
(bind "XF86AudioPlay" (exec "${lib.getExe pkgs.playerctl} play-pause"))
(bind "XF86Explorer" (exec "ghostty -e sh -c yazi"))
(bind "XF86Mail" (exec "thunderbird"))
(bind "XF86WWW" (exec "google-chrome-stable"))
(bind "XF86MonBrightnessDown" (exec "${lib.getExe pkgs.brightnessctl} set 5%-"))
(bind "XF86MonBrightnessUp" (exec "${lib.getExe pkgs.brightnessctl} set +5%"))
(bindWithFlags "XF86AudioRaiseVolume" (exec "pamixer -i 5") { repeating = true; })
(bindWithFlags "XF86AudioLowerVolume" (exec "pamixer -d 5") { repeating = true; })
(bindWithFlags "XF86AudioPrev" (exec "${lib.getExe pkgs.playerctl} position 5-") { click = true; })
(bindWithFlags "XF86AudioNext" (exec "${lib.getExe pkgs.playerctl} position 5+") { click = true; })
(bindWithFlags "XF86AudioPrev" (exec "${lib.getExe pkgs.playerctl} previous") { long_press = true; })
(bindWithFlags "XF86AudioNext" (exec "${lib.getExe pkgs.playerctl} next") { long_press = true; })
(bindWithFlags "SUPER + mouse:272" "hl.dsp.window.drag()" { mouse = true; })
(bindWithFlags "SUPER + mouse:273" "hl.dsp.window.resize()" { mouse = true; })
];
};
};
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" ];
};
};
};
}
+35
View File
@@ -0,0 +1,35 @@
{ lib }:
let
inline = lib.generators.mkLuaInline;
quote = builtins.toJSON;
in rec {
inherit inline;
exec = command: "hl.dsp.exec_cmd(${quote command})";
bind = keys: dispatcher: {
_args = [
keys
(inline dispatcher)
];
};
bindWithFlags = keys: dispatcher: flags: {
_args = [
keys
(inline dispatcher)
flags
];
};
onStart = commands: {
_args = [
"hyprland.start"
(inline (
"function()\n"
+ lib.concatMapStringsSep "\n" (command: " hl.exec_cmd(${quote command})") commands
+ "\nend"
))
];
};
}
+32
View File
@@ -0,0 +1,32 @@
{ lib, ... }:
let
hyprLua = import ./lua.nix { inherit lib; };
inherit (hyprLua) bind bindWithFlags;
resetZoom = ''function()
hl.config({ cursor = { zoom_factor = 1 } })
end'';
zoomIn = ''function()
local current = hl.get_config("cursor.zoom_factor")
hl.config({ cursor = { zoom_factor = current * 1.1 } })
end'';
zoomOut = ''function()
local current = hl.get_config("cursor.zoom_factor")
hl.config({ cursor = { zoom_factor = math.max(1, current * 0.9) } })
end'';
in {
wayland.windowManager.hyprland.settings.bind = [
(bind "SUPER + SHIFT + mouse_up" resetZoom)
(bind "SUPER + SHIFT + mouse_down" resetZoom)
(bind "SUPER + SHIFT + minus" resetZoom)
(bind "SUPER + SHIFT + KP_SUBTRACT" resetZoom)
(bind "SUPER + SHIFT + 0" resetZoom)
(bindWithFlags "SUPER + equal" zoomIn { repeating = true; })
(bindWithFlags "SUPER + minus" zoomOut { repeating = true; })
(bindWithFlags "SUPER + KP_ADD" zoomIn { repeating = true; })
(bindWithFlags "SUPER + KP_SUBTRACT" zoomOut { repeating = true; })
];
}
Executable → Regular
+6 -2
View File
@@ -1,7 +1,11 @@
{ config, pkgs, lib, ... }:
let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
in
lib.mkIf config.programs.hyprlock.enable {
wayland.windowManager.hyprland.settings.exec-once = [ "hyprlock" ];
wayland.windowManager.hyprland.settings.on = [
(hyprLua.onStart [ "hyprlock" ])
];
programs.hyprlock = let
image = pkgs.fetchurl {
Executable → Regular
+12 -20
View File
@@ -1,21 +1,13 @@
{ config, pkgs, ... }:
let
colors = config.lib.stylix.colors;
in {
home.packages = [ pkgs.mako ];
xdg.configFile."mako/config".text = ''
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
{ config, lib, ... }: let
colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent};
in {
services.mako = {
enable = true;
[urgency=high]
border-color=#${colors.base09}
[urgency=low]
border-color=#${colors.base04}
'';
}
settings = {
border-color = lib.mkForce accent;
default-timeout = 5000;
};
};
}
Executable → Regular
+4 -4
View File
@@ -1,11 +1,11 @@
{ config, pkgs, ... }: let
icon = pkgs.fetchurl {
url = "https://preview.redd.it/a2nga4jvjy291.png?width=640&crop=smart&auto=webp&s=7d1458b41101c960bc13c28a6b92c5a6ddc20210";
name = "nixos-chan.png";
sha256 = "sha256-dAms/+CgYrao2b8omXEdS/HnjGUa++ol5jjpvej39Og=";
url = "https://cloud.lair.moe/pub/nixos-chan.webp?raw";
name = "nixos-chan.webp";
sha256 = "sha256-0majB9ljjMdZwvOijEgWdFKxWLje5tHgXHBJUWZfHfY=";
};
in {
home.packages = [ pkgs.neofetch ];
home.packages = [ pkgs.fastfetch ];
xdg.configFile."neofetch/config.conf".text = ''
print_info() {
info title
Executable → Regular
+3 -3
View File
@@ -1,7 +1,7 @@
{ pkgs-fixed, lib, host, ... }:
{ pkgs-pinned, lib, osConfig, ... }:
lib.mkIf (!host.laptop) {
home.packages = with pkgs-fixed; [
lib.mkIf (!osConfig.host.laptop) {
home.packages = with pkgs-pinned; [
(blender.override { cudaSupport = true; })
aseprite
krita
-8
View File
@@ -1,8 +0,0 @@
{ pkgs-stable, ... }: {
home.packages = with pkgs-stable; [
vscode
jetbrains.pycharm-community
jetbrains.idea-community
android-studio
];
}
View File
+8 -4
View File
@@ -1,11 +1,15 @@
{ pkgs, inputs, pkgs-fixed, ... }: {
{ pkgs, pkgs-stable, ... }: {
home.packages = with pkgs; [
google-chrome
inputs.ayugram-desktop.packages.${pkgs.system}.ayugram-desktop
ayugram-desktop
vesktop
obs-studio
mpv
imhex
obsidian
pkgs-fixed.thunderbird
pkgs-stable.qbittorrent
thunderbird
libreoffice
pear-desktop
( pkgs.callPackage ../../../drv/mumble.nix {} )
];
}
+3 -3
View File
@@ -1,4 +1,4 @@
{ stdenv, lib, config, colors, ... }:
{ stdenv, colors, accent ? colors.base0B, ... }:
stdenv.mkDerivation {
name = "AGS theme";
@@ -9,9 +9,9 @@
echo \$bg: \#${colors.base00}\; > colors.scss
echo \$surface0: \#${colors.base02}\; >> 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 = ''
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File

Some files were not shown because too many files have changed in this diff Show More