Compare commits

...

348 Commits

Author SHA1 Message Date
c0d1341448 niri: redo a lot
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-19 13:21:31 +03:00
bba55dc973 try to fix styling
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-15 15:32:05 +03:00
d48559e6d8 modules/shared/user: apps
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-15 15:32:05 +03:00
c18c1d0060 stylix: geist fonts for sandcastle
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-15 15:32:05 +03:00
bec0e9d43a flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-15 15:32:05 +03:00
3937656ce1 cleanup the mess
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-13 13:55:45 +03:00
6554808614 unused stuff
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-13 13:55:45 +03:00
8a35e18e4e modules/home/desktop/niri/services/swaync/default.nix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-12 15:36:36 +03:00
930417968f hosts/eldrid/cb-audio-fix: update
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-12 15:15:12 +03:00
7d0e089e3f use hostId for luks disks
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-12 15:15:12 +03:00
d135a13a5a niri/swaync: still hate it
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-10 13:21:04 +03:00
9c0e7c4cae flake.lock: bump
flake.nix: add ghostty
modules/home/programs/terminal/ghostty.nix: switch to ghostty flake

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-07 13:09:26 +03:00
c65a7997e2 change colorscheme
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-07 13:09:26 +03:00
61d4307a10 modules/home/desktop/niri/programs/waybar/default.nix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-07 13:09:26 +03:00
81c866645f modules/shared/nixos/nix/common.nix: use upstream lix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-04 16:31:09 +03:00
1065479388 flake.nix: switch to nixpkgs/master
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-04 16:02:54 +03:00
5d9782d733 finish niri rice
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-02 20:14:50 +03:00
67009df2a9 desktop/niri: blueman
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-02 19:06:12 +03:00
547e41d3f9 stylix: new theme
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-02 19:06:12 +03:00
8fe81eb9cd niri/walker: rework
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-01 12:44:58 +03:00
e599e4c5c4 niri/waybar: some fixes, new module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-01 10:30:28 +03:00
b42de80180 desktop/niri: 1px border
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-01 00:34:05 +03:00
2093304e4c niri/waybar: polished
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-07-01 00:02:37 +03:00
e30f4a74cd niri/waybar: initial rework
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-30 22:11:35 +03:00
7c72e527e7 niri/waybar: now
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-29 17:45:14 +03:00
f854f65029 niri/waybar: now pixel perfect
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-29 17:40:05 +03:00
9034502635 switch to lix flake
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-29 14:42:57 +03:00
24b195b766 flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-29 14:42:57 +03:00
1ae179eb85 hosts/dunamis/configuration.nix: rose-pine-moon
modules/nixos/system/stylix/default.nix: change serif to inter

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-28 17:35:18 +03:00
efaae1a801 modules/nixos/system/common.nix: systemd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-28 17:35:18 +03:00
27f29769e2 desktop/niri/default.nix: force mimeapps.list
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-28 17:35:18 +03:00
c586cc93d8 home/desktop/niri/programs/default.nix: remove
nixos/desktop/niri/default.nix: fix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-28 17:35:18 +03:00
5526b559cf modules/shared/nixos/default.nix: refactor keyd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-21 16:21:24 +03:00
47c88ecf63 modules/nixos/desktop/niri/default.nix: add gvfs
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-19 11:18:49 +03:00
71d94e52a8 desktop/niri: change settings
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-19 10:28:48 +03:00
268e527db6 flake.lock: bump
flake.nix: less repeated inputs

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-19 10:28:48 +03:00
f3bf120805 rework modules
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-19 10:23:34 +03:00
422b0551db hosts/eldrid/misc/undervolt.nix: add
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-19 10:23:34 +03:00
ac28a3442f hosts/morphius: enable iio for autorotate
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 18:50:26 +03:00
078351becd stylix: new theme
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 18:27:24 +03:00
46be9aa879 some options
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 18:27:24 +03:00
8f91352720 hosts/sarien/disko/disk-main.nix: remove
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 18:27:24 +03:00
d3ce08e765 misc/stylix: new wallpaper
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 00:22:46 +03:00
5859b9d469 flake.nix: sort
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-18 00:22:46 +03:00
a1cac8803a hosts: cleanup
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 17:35:36 +03:00
4054e42e21 desktop/niri: nest programs
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 17:35:36 +03:00
89ff07ac7b hosts/dunamis: switch to niri
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 17:35:36 +03:00
7641390aba desktop/niri: enable animations
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 15:01:22 +03:00
539a1d8713 hosts/dunamis/configuration.nix: remove TODO
hosts/legion: autologin, secure boot, tpm

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 15:01:22 +03:00
b3ac24719a move xdg.userDirs config to modules/shared/user
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 14:33:53 +03:00
f8d4b52394 services/kanshi: change
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 14:33:53 +03:00
4abde43c61 hosts: rename module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 14:33:53 +03:00
686e36b144 niri/services/kanshi: some more config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 14:10:55 +03:00
0bdff5ef5b restructure
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 14:10:55 +03:00
02a8c645e9 modules/nixos: rename config to shared
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 12:35:52 +03:00
8217a70b34 config/security: add pam.sshAgentAuth
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 12:27:29 +03:00
34795ac894 desktop/niri: Mod+X to hide/show waybar
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-17 12:27:29 +03:00
a876874791 move kanshi to niri module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-15 17:08:45 +03:00
6dbd2b86a2 move display config to kanshi
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-15 16:43:45 +03:00
a4e5add644 desktop/niri: tweak copyq
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
cc31b858f7 desktop/niri: use autoLogin module for greetd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
e669331366 config/boot/loader: set timeout to 0
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
453fda9a36 desktop/niri: disable animations
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
e2f6ed72ed modules/home/programs/editor: some lsp work
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
8a4af44494 user/programs: enable zellij
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-14 17:26:23 +03:00
0c28f1e978 hosts/eldrid: update id's
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-13 00:21:37 +03:00
1dc168ce63 README.md: add GLF OS credits
and adapt various config elements from it

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-13 00:15:20 +03:00
e170e9d2b7 editor/helix: use nil instead of nixd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 22:40:19 +03:00
002b06bb91 nixos/config: add slim module from nuschtos
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 13:30:29 +03:00
f39a105caf modules/nixos/config/services.nix: enable avahi
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 13:30:29 +03:00
432fad779a hosts/dunamis/users/user/flatpak.nix: an app
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 13:30:29 +03:00
590238d3e9 desktop/gnome: restructure packages
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 13:30:29 +03:00
fff9e50163 hosts/dunamis/configuration.nix: switch to gnome
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-12 13:30:29 +03:00
161a5917f6 distibuted-build: change to ssh-ng
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-11 17:58:39 +03:00
e828500be7 distributed-build: move to modules/config/nix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-11 13:32:46 +03:00
0db2cbfe19 modules/nixos/config/services: disable speechd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-11 01:19:17 +03:00
590a94af56 user/flatpak: add comments, add/remove programs
hosts/dunamis/users/user/programs: bleh

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-11 00:38:51 +03:00
c6d5a071b4 flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-11 00:38:51 +03:00
9534e50252 desktop/gnome: select layouts individually
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-08 15:04:40 +03:00
989c740184 hosts/sarien: switch to gnome
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-08 15:04:40 +03:00
f6f5121d1e hosts/sarien: add swap
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-08 15:04:40 +03:00
391886ef59 dunamis/user/programs: libadwaita apps
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-08 15:04:40 +03:00
0aec9e92c1 dunamis/misc/nix-ssh-serve.nix: rename
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-08 14:59:09 +03:00
7662e9cd6e desktop/gnome: add extension, change shortcut
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-07 18:48:56 +03:00
5c11830083 desktop/gnome.nix: fix autologin
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-07 18:48:56 +03:00
4397eec2a1 hosts/morphius: set hostId, autologin
change boot.loader.timeout to 0

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-07 18:48:56 +03:00
3cd27e0e79 desktop/gnome: move to 25.11 opts, add exdludePackages
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-07 16:42:33 +03:00
572314fe46 flake.nix: PR that fixes nix/lix bug w/ sshServe
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 16:55:29 +03:00
854a3be744 hosts/dunamis: move nix.sshServe to misc
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 16:55:29 +03:00
a5a2e9ceac user/programs: remove devenv
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 16:55:29 +03:00
c58b5489d8 desktop/gnome: better theming
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 15:15:10 +03:00
4fb2c8cc12 hosts/morphius: change desktop, colors
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 15:15:10 +03:00
08deff70bc desktop/hyprland: refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 15:15:10 +03:00
920c75e997 desktop/niri: lisgd for touchscreen gestures
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-06 15:15:09 +03:00
2108320d1d flake.lock: bump
flake.nix: restructure, add some inputs.*.follows

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-05 00:44:24 +03:00
463e6f1630 desktop/niri: screencast block for materialgram
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-05 00:44:24 +03:00
16eb328cf5 dunamis/user/programs.nix: add gpu-screen-recorder-gtk
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-05 00:44:24 +03:00
672f28c75c hosts/dunamis/disko/disk-main.nix: refactor
hosts/sarien/disko/default.nix: source dunamis/disko/disk-main.nix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-06-05 00:44:24 +03:00
f5a5f4b87c desktop/niri: change focus-ring to border
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-30 16:52:21 +03:00
95671a0343 stylix: add gruvbox-dark-pale
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-30 16:52:21 +03:00
b63073cab7 config/nix: try to fix distributed builds
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-29 14:40:08 +03:00
a22109abba hosts/morphius: user conf default to ghostty term
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-28 16:01:18 +03:00
af05ec7980 hosts/morphius: switch desktop to niri
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-28 16:01:18 +03:00
ddd039c803 hosts/morphius: enable zramSwap
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-28 16:01:18 +03:00
8ae65a6752 desktop/niri: hotfix for other desktops
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-28 16:01:18 +03:00
d81c644665 desktop/niri: add border around walker
programs/syncthing: add morphius
config/users: add morphius

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-28 15:53:36 +03:00
f0ecc5bdb9 hosts/morphius: some changes
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-27 22:19:55 +03:00
7139cfb640 hosts/morphius: init new device
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-27 16:55:14 +03:00
5dfa9d62c4 flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-25 22:19:01 +03:00
aff9f72f2c desktop/niri: add gnome-text-editor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-25 22:19:01 +03:00
7bc1d7e36a hosts: move additional config to misc/
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-24 23:04:03 +03:00
f213931b6f hosts/sarien: add autologin
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-24 13:22:44 +03:00
52dcc3279e refactor modules/desktop
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-24 13:01:05 +03:00
56bad06595 README.md: update
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:57:04 +03:00
afd1d00116 README.md: update
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
14eaee2bbc desktop/niri: switch polkit-gnome to soteria, update layout, keybinds
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
43334d6dbd config/nix: fix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
d70b2f7f8a hosts: bump system.stateVersion
flake.lock: bump

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
38579e3cb4 config/security: new sysctls
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
6658a54631 user/programs.nix: new programs
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
9d51e09afe editor/zed: add fsharp
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
30fcac5ff6 hosts/dunamis: switch theme
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-22 09:55:19 +03:00
fce3a4ff0c desktop/niri: waybar modules now round pills
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-15 11:13:44 +03:00
8ee252f59c flake.lock: bump
flake.nix: remove catppuccin

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-15 11:13:44 +03:00
807265c4bc LICENSE: change to actual MIT
Explanation: The version previously committed is a custom version of MIT-0,
modified to better reflect the nature of this project, as Nix code and related
files are not able to function as computer programs. However, upon further
consideration, it was determined that:
- Nix operates like an interpreted language, e.g., Python, and thus is
  susceptible to be treated as software.
- There's already a precedent of licensing Nix code under MIT.

This commit should be treated as a correction to license text and not as an
act of relicensing, as it is clearly stated in the original commit that the
intention was to relicense the project under an unmodified MIT license, as
identified in SPDX.

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-11 21:50:03 +03:00
d6db686273 disko: add autodefrag mount optiton
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-11 17:44:48 +03:00
4e2702dfd1 editor/helix: add config for fsharp
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-11 17:44:48 +03:00
487a413bca desktop/niri: change struts
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-11 17:44:48 +03:00
34fe54974c move power saving and home row mods to module
cleanup

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-11 17:44:48 +03:00
0fe66b9671 LICENSE: change license to MIT
The rationale is the Unlicense's sloppy wording and the fact that MIT License is
generally more recognized and also used in the official nixpkgs repository [1].
The only difference between licenses is a condition of including a copyright
notice when reusing large portions of the work. Thus, MIT license provides the
same level of dedication to the public domain with no additional restrictions
and is therefore considered a better reflection of the author's values and a
compatible solution for relicensing this project.

From this point, all work in this public repository is retroactively relicensed
under the MIT license, with no additional obligations applied to any copy of
the work being used in any scenario, as described in the MIT license, prior to
this point.

[1] see 3225b228e8/COPYING

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-10 20:47:30 +03:00
07838aa669 waybar restyle, new themes
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-09 19:18:44 +03:00
1a4f54d7bc user/flatpak: new music player
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-07 19:34:02 +03:00
1f3d819061 hosts/legion: finalise
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-07 19:32:25 +03:00
38193c62ec nixos/config: add nvidia vaapi option
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-07 17:31:41 +03:00
7f073e121c hosts/legion: move to new structure
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-07 17:25:09 +03:00
75990ccc86 programs/walker: more config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-06 23:17:02 +03:00
561d02b173 hosts/sarien: theme back to nord
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-06 23:17:02 +03:00
4cf90e6dfa flatpak: omg cool apps
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-06 23:17:02 +03:00
6c7305c24d programs/walker: some config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-06 17:00:04 +03:00
260502c6ce restructure, add walker
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-06 00:17:38 +03:00
ee3a505d38 stylix: fix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-05 13:36:25 +03:00
4fdb88bca4 desktop/plasma: use gnome keyring
because it's used on every other desktop and signal client works only with it

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-05 13:27:08 +03:00
338dc7454f modules/config: fix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-05 13:27:08 +03:00
1aad949947 stylix: change himalaya monospace font
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 20:38:05 +03:00
8701ea20c6 hosts/eldrid: add the actual module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 19:47:27 +03:00
4652ce19db move around security
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 19:38:26 +03:00
9510cc48e2 fix some things
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 19:18:25 +03:00
03bcc94645 more work on hosts/ and modules/config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 18:50:39 +03:00
a87f912600 hosts/sarien: new theme
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 18:12:28 +03:00
b55a50ada8 modules/config: init new module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-04 18:12:28 +03:00
6ae0a38f62 flake.lock: bump mysecrets
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 23:44:09 +03:00
5a6daf52ca hosts: source modules from workstation
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 23:29:08 +03:00
7e2458b322 hosts: move to new structure
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 23:08:55 +03:00
5fe09a598a hosts/sarien: split up
modules/stylix: change wallpaper

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 22:09:18 +03:00
83949480c8 facter: move hardware config to mysecrets
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 14:46:32 +03:00
86ea201653 hosts/dunamis: add userborn
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
3bf0d20c63 editor/helix: config for python
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
9eca8b59d3 desktop/cosmic: small refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
5393154b91 hosts/dunamis: break up disko
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
a349e3803d hosts/dunamis: break up nix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
5e8f5bf7f3 hosts/dunamis: break up boot
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
6279b93b1e hosts/dunamis: back to niri
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
019ea4247a replace nixos-hardware with nixos-facter
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-05-03 13:31:37 +03:00
8c9ab14a76 desktop/niri: experimental refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-28 22:54:55 +03:00
9bee43fc50 networking: random mac
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-28 22:53:03 +03:00
38e0f83009 hosts/disko: move disk to a variable
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-28 22:53:03 +03:00
37d57cdfb5 user/programs: refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-28 22:53:03 +03:00
3b5775f58b flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-28 22:53:03 +03:00
3cf1a29d54 desktop/cosmic
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-27 22:02:07 +03:00
17b2c4b55d desktop/plasma: fix 'cause stylix broke everything
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-27 12:10:16 +03:00
566c25977b hosts/eldrid: turn back into workstation
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-27 12:10:16 +03:00
a8f0bb0740 flake: fix stylix commit (helix broken)
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-26 23:21:20 +03:00
12a1ba83bf shell/fish: add atuin
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-26 23:21:20 +03:00
607997ce93 user/programs: bluetuith and duf
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-22 23:31:20 +03:00
a6bdb95d98 hosts/sarien: give up on hostname
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-22 18:27:06 +03:00
8e96d4dc5a bump flake.lock
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-22 18:27:06 +03:00
2083f9b87b user/flatpak: make some horror
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-22 17:37:59 +03:00
a4ed75ef0e terminal/ghostty: csd
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-19 15:56:20 +03:00
a2573aa83f hosts/legion: fix lanzaboote
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-19 15:56:20 +03:00
de6ce28912 desktop/niri: move to hostName id, change waybar
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-18 15:43:10 +03:00
02bc6fce53 hosts/legion: some additions
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-18 15:43:10 +03:00
693da19c7f virtual/podman: make podman a backend
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-18 15:43:10 +03:00
351be99134 modules/home/programs/syncthing.nix: add legion
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-16 00:45:15 +03:00
37653a6adb modules/home/common: refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-16 00:45:15 +03:00
b9816afe0b move server to another host
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 19:49:35 +03:00
e5ce669b0a add new host key
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 18:56:45 +03:00
4097c07eca modules/home/desktop/niri/default.nix: widths
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 15:41:20 +03:00
1f0e446c9f desktop/niri: smaller gaps, new defaults
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 14:20:56 +03:00
8e4e86265d misc/stylix: change font to inter
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 14:03:39 +03:00
a9ab285559 desktop/niri: minimal waybar
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 14:03:39 +03:00
d1878d8fe2 modules/home/desktop/niri/default.nix: fix, ghostty
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 13:28:31 +03:00
e96d402f1e modules/home/desktop/niri/default.nix: refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 13:11:52 +03:00
7f620d0c54 hosts/legion/: use workstation modules
stylix: add sulphurpool theme

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 12:42:00 +03:00
6d393175f6 hosts/legion: init
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-15 00:03:26 +03:00
84080b8952 flake.lock: bump secrets
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-14 23:58:10 +03:00
b287e815a7 hosts/dunamis/users/user/flatpak.nix: sort, remove tg
hosts/dunamis/users/user/programs.nix: add zoxide

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-14 23:53:41 +03:00
8b0cdf252e flake.lock: bump flake.lock
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-14 13:06:47 +03:00
a0e3d4699d minor programs change
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-14 13:06:47 +03:00
4f325df7b7 modules/home/desktop/niri/default.nix: malayalam numbers
we'll see how well that goes

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 01:44:16 +03:00
bc2d3e4dae fuzzel.dpi-aware back to false
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 01:44:16 +03:00
f5e5b30f76 change to allow multiple portal configs
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 00:38:37 +03:00
419d56cf58 flatpak auto-update, new apps
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 00:38:37 +03:00
d53f48e628 get scx scheduler back, kernel loglevel to 0
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 00:38:37 +03:00
a73f488069 modules/home/desktop/niri/default.nix: make fuzzel more round
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-12 00:38:37 +03:00
4c5a461712 hosts/dunamis/programs.nix: add mosh
modules/home/desktop/niri/default.nix: change tab bar
modules/home/programs/terminal/wezterm.nix: fix keybinds
modules/nixos/desktop/niri.nix: auto-unlock gnome-keyring

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-10 15:38:34 +03:00
4166160eb9 modules/nixos/system/misc/stylix/default.nix: whoops
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-09 14:08:37 +03:00
19167d4f99 modules/nixos/system/misc/stylix/default.nix: change font from slab
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-09 13:26:14 +03:00
8ab24f899f hosts/dunamis/users/user/programs.nix: go back to yazi
modules/home/programs/console/yazi.nix: add more open rules

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-09 13:26:14 +03:00
b8b5ec3404 modules/nixos/system/common.nix: add LESS var
modules/nixos/system/default.nix: import commonn

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-08 17:59:35 +03:00
6cf1a99d8d modules/nixos/desktop/niri.nix: remove hyprlock key
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-08 16:50:59 +03:00
bcb77e3b21 another one bites the rust
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-08 16:39:34 +03:00
47f75d84ec modules/home/programs/shell/fish.nix: cleanup
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-07 13:39:24 +03:00
4e5f1a4a3a modules/home/programs/shell/fish.nix: add batman for paging
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-07 13:27:12 +03:00
ab17c1ce64 modules/home/programs/shell/oh-my-posh.nix: lil gup
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-07 12:42:15 +03:00
7814204ae6 flake.lock: determinate removed
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-07 12:42:15 +03:00
dd8be2c147 flake.nix: remove determinate
hosts/dunamis/nix.nix: replace with lix
hosts/eldrid/nix.nix: replace with lix
hosts/sarien/nix.nix: replace with lix
packages/wl-tray-bridge/default.nix: remove

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-07 12:36:00 +03:00
27fe6b6b8d hosts/dunamis/nix.nix: set lix
hosts/eldrid/nix.nix: set lix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 18:13:50 +03:00
da8e2c9efa w
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 18:08:19 +03:00
fa6e2f9e21 hosts/eldrid/nix.nix: fix ssh key
hosts/sarien/nix.nix: fix ssh key

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 14:11:35 +03:00
3190945028 flake.lock: bump
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 14:06:43 +03:00
5c6c489d86 hosts/dunamis/users/user/programs.nix: theme fzf with stylix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 14:06:43 +03:00
a128cea529 flake.nix: remove lix input
flake.lock: remove lix input

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 14:06:43 +03:00
465ed96e8e hosts/sarien/disko.nix: add /tmp mount
hosts/eldrid/disko.nix: add /tmp mount

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:56:41 +03:00
bef474ed78 hosts/dunamis/nix.nix: sync nix
hosts/eldrid/nix.nix: sync nix
hosts/sarien/nix.nix: sync nix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:54:47 +03:00
85f1c4b917 hosts/dunamis/programs.nix: sync programs
hosts/eldrid/configuration.nix: sync programs
hosts/sarien/configuration.nix: sync programs

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:54:47 +03:00
b5ed7d822e hosts/dunamis/sops.nix: add hostname workaround
hosts/eldrid/sops.nix: add hostname workaround
hosts/sarien/sops.nix: add hostname workaround

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:54:47 +03:00
1f0bbc9daf sync sops and users
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:54:47 +03:00
d5521a468d flake.lock: update secrets
hosts/dunamis/users.nix: update secrets
hosts/sarien/users.nix: update secrets

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:54:47 +03:00
150c8676d2 add determinate nix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 13:24:17 +03:00
adced908d0 modules/nixos/system/misc/stylix/default.nix: try slab font
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-06 12:15:37 +03:00
676315644a turn poor guy into a minecraft server
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-05 20:37:43 +03:00
a107419818 hosts/sarien/sops.nix: overcomplicate for no reason
hosts/sarien/configuration.nix: change theme to helios

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-05 17:52:39 +03:00
07814e5d0e add (un)license
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-03 19:32:26 +03:00
633b65616e hosts/eldrid/configuration.nix: remove import
hosts/sarien/configuration.nix: remove import

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-03 19:25:14 +03:00
cd32750a9d hosts/dunamis/configuration.nix: switch theme
modules/home/desktop/niri/default.nix: redo strings
modules/nixos/system/misc/default.nix: redo imports
modules/nixos/system/misc/{stylix.nix => stylix/default.nix}: self-telling

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-03 19:13:34 +03:00
6fc63520e9 steal stylix from MaxMur
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-03 18:30:11 +03:00
211e509628 steal from MaxMur
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-03 18:30:11 +03:00
f31ca59f58 Back out "add cosmic again"
This backs out commit 572bca9ec7.
2025-04-03 01:06:14 +03:00
572bca9ec7 add cosmic again
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 21:23:37 +03:00
81ff294468 redo pipewire module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 16:51:32 +03:00
435b741506 modules/home/desktop/plasma/default.nix: remove stylix line
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 16:51:32 +03:00
7b30ddce63 modules/home/desktop/niri/default.nix: redo variables
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 16:51:32 +03:00
a0037fdb0f hosts/sarien/boot.nix: add security kernel params
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 16:51:32 +03:00
201db59fce hosts/eldrid/hardware.nix: fix permssions
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 16:51:32 +03:00
a103cb45db use workstation flatpak config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-02 15:09:58 +03:00
4ff3adb3ee Back out "test cosmic"
This backs out commit 86b77311f5.
2025-04-02 14:02:59 +03:00
4c5c44afaa hosts/dunamis/users/user/programs.nix: remove vial
hosts/sarien/users/user/flatpak.nix: use dunamis flatpak
modules/home/desktop/niri/default.nix: add coffee bind

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-01 18:35:31 +03:00
86b77311f5 test cosmic
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-01 14:53:09 +03:00
ad35103c27 hosts/dunamis/users/user/flatpak.nix: add apps
hosts/dunamis/users/user/programs.nix: disable fallback apps

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-01 14:08:37 +03:00
4dbd9378cd modules/nixos/desktop/niri.nix: add secret portal config
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-01 01:18:06 +03:00
50d5b54150 modules/home/programs/shell/fish.nix: add joshuto alias
hosts/dunamis/users.nix: concat in the function

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 23:09:29 +03:00
23acb87339 modules/home/programs/terminal/wezterm.nix: fix, refactor
modules/home/programs/shell/oh-my-posh.nix: fix, refactor

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 16:45:24 +03:00
d4849e9319 modules/home/desktop/hyprland/default.nix: small refactor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 16:45:24 +03:00
a86f3f9c15 hosts/dunamis/users/user/programs.nix: move to wezterm
modules/home/desktop/niri/default.nix: move to wezterm

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 16:45:24 +03:00
386d3f9007 add joshuto file manager
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 16:45:24 +03:00
9f9479b576 make home manager modules composable
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 01:15:45 +03:00
0f09e27daf hosts/dunamis/users/user/programs.nix: add more programs
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-31 00:42:07 +03:00
5b35a48358 modules/home/desktop/niri/default.nix: use functions to generate content
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 21:01:06 +03:00
51f669c7b2 hosts/sarien/disko.nix: change device to disk/by-id
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 16:02:55 +03:00
6da4854c51 remove way-edges
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 15:57:05 +03:00
0b99f0dbd3 hosts/dunamis/configuration.nix: simplify
hosts/dunamis/users/user/home-configuration.nix: simplify
hosts/dunamis/users.nix: simplify
modules/nixos/desktop/plasma.nix: simplify

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 15:57:05 +03:00
99b62d5194 sarien: move to nixos-hardware
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 15:57:05 +03:00
1d80084950 modules/nixos/system/default.nix: fix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 01:56:02 +02:00
351aa5e530 add nixos-hardware
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 01:49:31 +02:00
d8b372c165 modules/home/desktop/default.nix: sort, remove /default.nix
modules/home/programs/default.nix: sort, remove /default.nix
modules/nixos/desktop/default.nix: sort, remove /default.nix
modules/nixos/system/default.nix: sort, remove /default.nix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 00:41:10 +02:00
686c3f73f9 modules/home/desktop/niri/default.nix: WIP move to id's
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 00:41:10 +02:00
dc1ebb3655 hosts/dunamis/programs.nix: restructure
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 00:41:10 +02:00
0f510c7431 hosts/dunamis/networking.nix: add hostId
hosts/sarien/networking.nix: add hostId

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 00:41:10 +02:00
079654ef48 flake.nix: add nixos-hardware
hosts/dunamis/hardware.nix: add nixos-hardware

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-30 00:41:10 +02:00
277ba48671 sync sops
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 23:15:49 +02:00
0826503309 hosts/sarien/networking.nix: something
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 23:15:49 +02:00
3f602f925f flake.lock: update mysecrets
hosts/dunamis/sops.nix: make it more composable

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 20:42:18 +02:00
ce52cc55d0 sync stylix modules
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 15:15:21 +02:00
a83068d010 run "statix fix"
hosts/dunamis/sops.nix: fix w/ statix
hosts/dunamis/users/user/home-configuration.nix: fix w/ statix
hosts/eldrid/users/user/home-configuration.nix: fix w/ statix
modules/home/desktop/gnome/default.nix: fix w/ statix
modules/home/desktop/hyprland/default.nix: fix w/ statix
modules/home/desktop/niri/default.nix: add swayosd, move bar to the bottom, fix w/ statix
modules/nixos/system/security/basic.nix: fix w/ statix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 14:37:17 +02:00
ab6611a231 hosts/dunamis/boot.nix: add lanzaboote
hosts/dunamis/services.nix: disable scx because module.sig_enforce and/or lockdown=confidentiality break it

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-29 14:37:17 +02:00
a366ae47b6 hosts/sarien/users/user/programs.nix: add pueue
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 22:58:24 +02:00
a19a3e5cc1 add power-saving module
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 22:56:21 +02:00
2745bd1e35 do the same for two other hosts
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 22:53:08 +02:00
b7f95a14c3 hosts/eldrid/users/user/home-configuration.nix: home-manager state follows system
modules/home/desktop/niri/default.nix: change evince to papers
modules/nixos/system/wireless/wifi.nix: simplify

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 16:39:21 +02:00
08408c5602 break up into reusable modules
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 16:39:21 +02:00
28f935cfd0 hosts/dunamis/users/user/flatpak.nix: add ungoogled chromium
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 16:39:21 +02:00
d3e4ee75f0 hosts/eldrid/stylix.nix: change cursor
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 16:16:12 +02:00
897a472d60 add lanzaboote
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 16:16:12 +02:00
852c5b0655 hosts/dunamis/users/user/programs.nix: disable zed
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-28 12:10:00 +02:00
ba42cb9617 hosts/sarien/configuration.nix: change stylix to dark
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-27 16:07:54 +02:00
55e10575a6 modules/home/desktop/niri/default.nix: add kbd brightness
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-27 15:19:05 +02:00
228fda644b hosts/dunamis/hardware.nix: some security kernel opts
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-27 15:19:05 +02:00
81e293df91 flake.lock: update flake.lock
flake.nix: update lix

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-27 15:19:05 +02:00
ccaffb1967 hosts/eldrid/users/user/flatpak.nix: add materialgram
modules/home/desktop/niri/default.nix: change icons

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 17:20:07 +02:00
8cd8b47273 cleanup, reorganise, syncthing 2025-03-26 16:33:45 +02:00
d4b568a0d5 hosts/dunamis/users/user/programs.nix: sort home.programs, add script shortcut
modules/home/desktop/niri/default.nix: remove Alt keybinds

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 16:28:51 +02:00
453fdd779e hosts/dunamis/users/user/programs.nix: add pueue
modules/home/desktop/niri/default.nix: add wpctl volume limit
modules/home/programs/shell/fish.nix: add aliases

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 14:01:17 +02:00
f5e63bf1ca else
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 00:32:38 +02:00
b348993f22 eldrid disko 2025-03-26 00:27:55 +02:00
d9df333e58 eldrid
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 00:11:00 +02:00
9286d95f0a hosts/dunamis/configuration.nix: sshServe.write = true;
modules/home/desktop/niri/default.nix: animation slowdown to 0.8

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-26 00:00:02 +02:00
6dc7762d90 another one
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-25 22:52:11 +02:00
002e6a43c8 hosts/sarien/disko.nix: move /nix to subvol, set noexec, rename
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-25 16:46:00 +02:00
441c7ea119 flake.lock: update mysecrets
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-25 14:51:16 +02:00
8464dc0084 yeah
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-25 14:42:38 +02:00
98039c2ea0 hosts/sarien/configuration.nix: add dnscrypt-proxy
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-25 14:40:09 +02:00
bb0a0ccb1c sync w/ laptop
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-24 14:56:32 +02:00
1d46820135 too lazy to describe
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-24 14:18:13 +02:00
ef76c91365 modules/home/programs/syncthing.nix: add phone
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-20 00:05:37 +02:00
ddf57f8c37 modules/home/programs/shell/fish.nix: change direnv to silent
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-20 00:04:39 +02:00
ac4bd81a63 modules/home/desktop/niri/default.nix: rice, nord
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-20 00:04:18 +02:00
21407383dc hosts/dunamis/users/user/programs.nix: comment out neve
hosts/sarien/users/user/programs.nix: comment out neve
modules/home/programs/editor/default.nix: comment out neve

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-20 00:03:41 +02:00
f810a5e4fc hosts/dunamis/configuration.nix: add catppuccin
hosts/dunamis/stylix-light.nix: change to nord
hosts/dunamis/stylix.nix: change to nord

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-20 00:03:41 +02:00
3b8fbacf70 flake.nix: add catppuccin/nix
hosts/dunamis/catppuccin.nix: add module
hosts/dunamis/users/user/catppuccin.nix: add module

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-19 23:59:18 +02:00
b21320ce2a modules/home/programs/editor/helix.nix: add keybind, change lsp
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-19 23:57:50 +02:00
620bb5c70a flake.lock: update
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-19 23:50:32 +02:00
ced43bf7eb hosts/dunamis/disko.nix: fix
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-18 02:44:08 +02:00
ba84325990 flake.nix: structure overhaul
hosts/dunamis/disko.nix: add tmpfs mount for /tmp (nix builds fail because of noexec on /)
modules/home/desktop/default.nix: remove walker

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-18 02:40:20 +02:00
7b388dc05e hosts/pixel/users/droid/programs.nix: remove stylix line
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-18 01:34:30 +02:00
e3571d1549 guys i've installed nix on my smartphomn
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-18 01:29:11 +02:00
c596686866 modules/home/desktop/niri/default.nix: fix wrong layout name
Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-17 20:39:09 +02:00
88db51d7a1 flake.lock: update mysecrets
hosts/dunamis/configuration.nix: add dnscrypt
hosts/dunamis/sops.nix: add another ssh key
hosts/dunamis/users/user/home-configuration.nix: import sops.nix
hosts/dunamis/users/user/sops.nix: link public keys
modules/home/desktop/niri/default.nix: redo layout string insertion

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-17 20:29:33 +02:00
a0d70778a4 hosts/dunamis/users/user/programs.nix: add jujutsu
modules/home/programs/shell/fish.nix: "jf" alias for jf-fzf

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-03-16 21:02:07 +02:00
99c7a60a3f hosts/sarien/users/user/programs.nix: add jujutsu 2025-03-16 19:19:44 +02:00
fb9deae428 remove walker 2025-03-16 18:18:07 +02:00
326f5ade5b niri config now pretty 2025-03-16 14:10:39 +02:00
8ba265f835 gtklok 2025-03-16 01:08:34 +02:00
6248e108a9 fix a space 2025-03-14 18:58:46 +02:00
4607b47fca niri 2025-03-14 18:49:25 +02:00
d2c2330b11 fix 2025-03-13 13:18:22 +02:00
760aa03e49 hyprland's persistent wraps 2025-03-12 16:09:47 +02:00
0549fb9fd3 sarien 2025-03-12 16:03:45 +02:00
04174ccd34 syncthing 2025-03-12 15:46:52 +02:00
2be4d3f258 o 2025-03-11 19:00:26 +02:00
bedc098445 p 2025-03-11 18:41:53 +02:00
c8faedb86b m 2025-03-11 18:31:11 +02:00
1133eeca2f omp experiments 2025-03-11 17:56:23 +02:00
847fba9be2 groupbar 2025-03-11 16:02:20 +02:00
0b16eab5cf bump flake.lock 2025-03-10 19:34:02 +02:00
0ae01b9a4f minor cleanup 2025-03-10 19:22:57 +02:00
56ca1f6efb scratchpad 2025-03-10 18:21:48 +02:00
98f3894f44 another one bites the disk 2025-03-10 17:37:02 +02:00
fca6f291ec idk 2025-03-09 14:21:08 +02:00
3e3922be09 t 2025-03-07 18:09:14 +02:00
fb7a0b7483 some laptop tweaks 2025-03-07 18:02:53 +02:00
78acefc0fb smashing panel rework 2025-03-07 17:38:39 +02:00
efd7fd542e git hyprland 2025-03-07 13:13:58 +02:00
37f0fc43b1 Wed Mar 5 14:30:42 EET 2025 2025-03-05 16:30:49 +02:00
a0bc023158 Wed Mar 5 14:20:06 EET 2025 2025-03-05 16:20:17 +02:00
63b039e9e8 uutils, ssh-agent 2025-03-04 16:40:42 +02:00
13c357d32a .ssh/config to sops 2025-03-04 13:24:18 +02:00
d880ca20ca sops fix, vaapi 2025-03-04 13:08:15 +02:00
25549279f2 fit 2025-03-03 18:50:51 +02:00
160 changed files with 8113 additions and 5703 deletions

20
LICENSE Normal file
View File

@ -0,0 +1,20 @@
// SPDX-License-Identifier: MIT
Copyright 2025 unexplrd@linerds.us
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,6 +1,17 @@
<h1>So what is this?</h1>
<p>This is a personal config based on <a href="https://github.com/numtide/blueprint">Blueprint</a>, and it's pretty usable. If one wants to use it, they have to change and adapt it for their own use case, for that please visit the original repo, as it contains the necessary documentation.</p>
<h2>TODOs:</h2>
<ul>
<li>i'll put that in when i recall what i wanted to add</li>
</ul>
# NixOS Configuration
## So what is this?
This is a personal NixOS config based on
[Blueprint](https://github.com/numtide/blueprint).
This repo is mainly used to sync changes between devices. If you want to
use it - it's pretty composable, so modules can be integrated in your
configs without much hassle.
## Credits
Configurations I took code/ideas from:
- [github:TheMaxMur/NixOS-Configuration](https://github.com/TheMaxMur/NixOS-Configuration)
- [github:nix-community/srvos](https://github.com/nix-community/srvos)
- [github:cloud-gouv/securix](https://github.com/cloud-gouv/securix)
- [GLF OS](https://www.gaminglinux.fr/glf-os/en)
Thx a lot <3

1237
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -2,45 +2,104 @@
description = "unexplrd's personal configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
nix-flatpak.url = "github:gmodena/nix-flatpak";
stylix.url = "github:danth/stylix";
nixvim.url = "github:nix-community/nixvim";
lix = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
# lix = {
# url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.1.tar.gz";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# neve = {
# inputs.nixvim.follows = "nixvim";
# url = "git+https://gitea.linerds.us/unexplrd/Neve";
# };
# nixvim.url = "github:nix-community/nixvim";
systems.url = "github:nix-systems/default";
blueprint = {
url = "github:numtide/blueprint";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
};
chaotic = {
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
};
};
disko = {
url = "github:nix-community/disko/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
ghostty = {
url = "github:ghostty-org/ghostty";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.inputs.systems.follows = "systems";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
neve = {
url = "git+https://gitea.linerds.us/unexplrd/Neve";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixvim.follows = "nixvim";
hyprland = {
url = "github:hyprwm/Hyprland";
inputs = {
systems.follows = "systems";
nixpkgs.follows = "nixpkgs";
};
};
hyprsunset = {
url = "github:hyprwm/hyprsunset";
inputs = {
hyprland-protocols.follows = "hyprland/hyprland-protocols";
hyprutils.follows = "hyprland/hyprutils";
hyprwayland-scanner.follows = "hyprland/hyprwayland-scanner";
nixpkgs.follows = "nixpkgs";
systems.follows = "hyprland/systems";
};
};
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.2";
inputs.nixpkgs.follows = "nixpkgs";
};
mysecrets = {
url = "git+ssh://gitea@gitea.linerds.us/unexplrd/nix-secrets";
flake = false;
};
nix-flatpak.url = "github:gmodena/nix-flatpak";
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs = {
nixpkgs-stable.follows = "nixpkgs-stable";
nixpkgs.follows = "nixpkgs";
};
};
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
# workaround for `unexpected Nix daemon error: error: serialised integer 7022364302122705765 is too large for type 'j'`
# url = "github:NixOS/nixpkgs/pull/413627/head";
};
sops-nix = {
url = "github:mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:danth/stylix";
inputs = {
# home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
};
walker = {
url = "github:abenz1267/walker";
inputs.nixpkgs.follows = "nixpkgs";
inputs = {
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
};
mysecrets.url = "git+ssh://gitea@gitea.linerds.us/unexplrd/nix-secrets";
mysecrets.flake = false;
};
outputs = inputs: inputs.blueprint {inherit inputs;};

View File

@ -1,5 +0,0 @@
{
nix.settings = {
secret-key-files = /var/nix/cache-priv-key.pem;
};
}

View File

@ -1,85 +1,42 @@
{
pkgs,
inputs,
...
}: {
{inputs, ...}: {
imports = with inputs; [
chaotic.nixosModules.default
lix.nixosModules.default
self.modules.shared.nixos
self.nixosModules.desktop
self.nixosModules.system
./hardware-conf.nix
./programs.nix
./stylix.nix
./users.nix
./sops.nix
./disko
./misc
];
desktop = {
hyprland.enable = true;
# plasma.enable = true;
};
nix = {
# package = pkgs.lix;
settings.experimental-features = ["nix-command" "flakes"];
};
system.stateVersion = "25.05";
time.timeZone = "Europe/Kyiv";
locale.ukrainian.enable = true;
networking = {
networkmanager.enable = true;
hostId = "c7f6c4a1";
hostName = "dunamis";
# required for syncthing
firewall = {
allowedTCPPorts = [22000];
allowedUDPPorts = [21027 22000];
};
};
boot = {
kernelPackages = pkgs.linuxPackages_cachyos;
# kernelPackages = pkgs.linuxPackages_latest;
plymouth.enable = true;
loader.efi.canTouchEfiVariables = true;
loader.systemd-boot = {
enable = true;
consoleMode = "auto";
};
};
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
console = {
earlySetup = true;
packages = [pkgs.terminus_font];
font = "${pkgs.terminus_font}/share/consolefonts/ter-c18n.psf.gz";
};
desktop.niri.enable = true;
environment.memoryAllocator.provider = "mimalloc";
services = {
# hardware.openrgb.enable = true;
flatpak.enable = true;
fstrim.enable = true;
fwupd.enable = true;
openssh.enable = true;
};
services.scx = {
services.displayManager.autoLogin = {
enable = true;
scheduler = "scx_flash";
user = "user";
};
security.basic.enable = true;
virtual = {
libvirt.enable = true;
podman.enable = false;
module = {
config = {
secureBoot = true;
tpmDiskUnlock = true;
vaapi = "intel-media-driver";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
misc = {
opentabletdriver.enable = false;
qmk-vial.enable = true;
};
virt.libvirt.enable = true;
};
wireless.bluetooth.enableBlueman = true;
opentabletdriver.enable = false;
qmk-vial.enable = true;
}

View File

@ -0,0 +1,19 @@
{
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/disk/by-id/nvme-eui.000000000000000100a075244b5d6185";
in {
imports = with inputs; [
disko.nixosModules.disko
];
disko.devices.nodev = {
"/tmp" = {
fsType = "tmpfs";
mountOptions = ["rw" "nosuid" "nodev"];
};
};
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
}

View File

@ -0,0 +1,62 @@
{
disk,
hostId,
}: {
type = "disk";
device = disk;
content = {
type = "gpt";
partitions = {
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"umask=0077"
"fmask=0022"
"dmask=0022"
"noexec"
"nosuid"
"nodev"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-" + hostId;
initrdUnlock = true;
settings.allowDiscards = true;
content = let
mountOptions = ["autodefrag" "compress-force=zstd" "noatime"];
in {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@nixos-root" = {
mountpoint = "/";
mountOptions = mountOptions ++ ["noexec"];
};
"@home" = {
mountpoint = "/home";
inherit mountOptions;
};
"@storage" = {
mountpoint = "/storage";
inherit mountOptions;
};
"@nix" = {
mountpoint = "/nix";
inherit mountOptions;
};
};
};
};
};
};
};
}

View File

@ -1,78 +0,0 @@
{
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
wireless.bluetooth.enable = true;
services.logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
boot = {
kernelModules = ["kvm-amd"];
extraModulePackages = [];
initrd = {
luks.devices."luks-fe586da4-b164-4362-bcdf-9c5dd6c69a2b".device = "/dev/disk/by-uuid/fe586da4-b164-4362-bcdf-9c5dd6c69a2b";
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
kernelModules = [
"i915"
];
systemd.enable = true;
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/79ce18b8-3a9e-4cd0-be62-60972686f44a";
fsType = "btrfs";
options = [
"noatime"
"compress=zstd"
"subvol=@nixos-root"
];
};
"/home" = {
device = "/dev/disk/by-uuid/79ce18b8-3a9e-4cd0-be62-60972686f44a";
fsType = "btrfs";
options = [
"noatime"
"compress=zstd"
"subvol=@home"
];
};
"/storage" = {
device = "/dev/disk/by-uuid/79ce18b8-3a9e-4cd0-be62-60972686f44a";
fsType = "btrfs";
options = [
"noatime"
"compress=zstd"
"subvol=@storage"
];
};
"/boot" = {
device = "/dev/disk/by-uuid/976C-7EE6";
fsType = "vfat";
options = ["fmask=0022" "dmask=0022"];
};
};
swapDevices = [];
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
vpl-gpu-rt
];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,6 @@
{
imports = [
# ./minecraft.nix
# ./nix-ssh-serve.nix
];
}

View File

@ -0,0 +1,23 @@
{
networking.firewall.allowedTCPPorts = [25565];
networking.firewall.allowedUDPPorts = [25565];
virtualisation.oci-containers = {
backend = "podman";
containers.minecraft = {
image = "docker.io/itzg/minecraft-server:java17-alpine";
volumes = ["/storage/minecraft:/data"];
ports = ["25565:25565"];
environment = {
DIFFICULTY = "easy";
EULA = "true";
GUI = "false";
INIT_MEMORY = "6G";
MAX_MEMORY = "6G";
ONLINE_MODE = "false";
TYPE = "forge";
VERSION = "1.20.1";
VIEW_DISTANCE = "8";
};
};
};
}

View File

@ -1,18 +0,0 @@
{pkgs, ...}: {
programs.neovim = {
enable = false;
viAlias = true;
vimAlias = true;
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 7d --keep 3";
flake = "/home/user/.config/nixos";
};
programs.fish.enable = true;
environment.systemPackages = with pkgs; [
helix
nushell
];
}

View File

@ -1,24 +0,0 @@
{inputs, ...}: let
secretsPath = builtins.toString inputs.mysecrets;
in {
imports = [
inputs.sops-nix.nixosModules.sops
];
sops = {
age = {
sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = true;
};
defaultSopsFile = "${secretsPath}/secrets.yaml";
secrets = {
"user-password-hashed" = {};
"ssh-private-dunamis-user" = {
path = "/home/user/.ssh/id_ed25519";
mode = "0400";
owner = "user";
};
};
};
}

View File

@ -1,54 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = [
inputs.stylix.nixosModules.stylix
];
environment.systemPackages = with pkgs; [
#papirus-icon-theme
nerd-fonts.iosevka
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/tomorrow-night.yaml";
polarity = "dark";
cursor = {
package = pkgs.google-cursor;
name = "GoogleDot-Blue";
size = 24;
};
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/9m/wallhaven-9mwzwk.jpg";
name = "wallhaven-9mwzwk";
sha256 = "0pj2k30mfhqr02dzdj40z62awmy58s5gg5mm4xzxiialclbd5n8d";
};
opacity.terminal = 0.9;
fonts = {
sizes = {
applications = 13;
desktop = 14;
popups = 13;
terminal = 15;
};
serif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
sansSerif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
monospace = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
}

View File

@ -1,37 +0,0 @@
{
inputs,
config,
pkgs,
...
}: let
sopSec = config.sops.secrets;
secrets = inputs.mysecrets;
in {
nix.settings.trusted-users = [
"user"
"remotebuild"
];
users.mutableUsers = false;
users.users = {
user = {
hashedPasswordFile = sopSec."user-password-hashed".path;
# passwordFile = config.sops.secrets.user-password.path;
isNormalUser = true;
extraGroups = ["wheel" "video" "libvirtd" "dialout"];
shell = pkgs.fish;
openssh.authorizedKeys.keyFiles = [
"${secrets}/ssh/id_ed25519_sarien_user.pub"
"${secrets}/ssh/id_ed25519_eldrid_user.pub"
];
};
remotebuild = {
isNormalUser = true;
createHome = false;
group = "remotebuild";
openssh.authorizedKeys.keyFiles = [
"${secrets}/ssh/id_ed25519_eldrid_rmbuild.pub"
];
};
};
users.groups.remotebuild = {};
}

View File

@ -1,113 +0,0 @@
{inputs, ...}: {
imports = [
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
services.flatpak = {
enable = true;
uninstallUnmanaged = true;
remotes = [
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
{
name = "hero-persson";
location = "https://hero-persson.github.io/unmojang-flatpak/index.flatpakrepo";
}
];
packages = [
# misc
"app.zen_browser.zen"
"net.mullvad.MullvadBrowser"
"com.obsproject.Studio"
"com.bitwarden.desktop"
"com.github.tchx84.Flatseal"
"org.qbittorrent.qBittorrent"
# "com.transmissionbt.Transmission"
"com.usebottles.bottles"
"com.logseq.Logseq"
"org.octave.Octave"
"io.github.martchus.syncthingtray"
# chatting
"org.signal.Signal"
"im.riot.Riot"
"org.telegram.desktop"
"io.github.spacingbat3.webcord"
# "dev.vencord.Vesktop"
"org.mozilla.Thunderbird"
# media
"org.atheme.audacious"
"io.freetubeapp.FreeTube"
#"io.github.celluloid_player.Celluloid"
# "io.mpv.Mpv"
# gaming
#"com.github._0negal.Viper"
"com.valvesoftware.Steam"
"net.lutris.Lutris"
"com.heroicgameslauncher.hgl"
{
appId = "org.unmojang.FjordLauncher";
origin = "hero-persson";
}
"org.freedesktop.Platform.VulkanLayer.MangoHud//24.08"
"org.freedesktop.Platform.VulkanLayer.gamescope//24.08"
];
overrides = {
"global" = {
# Force Wayland by default
Context = {
sockets = ["wayland" "!x11" "!fallback-x11"];
filesystems = [
"xdg-run/pipewire-0"
"xdg-config/gtk-3.0:ro"
"xdg-config/gtk-4.0:ro"
# "~/.local/share/fonts:ro"
"~/.local/share/icons:ro"
# "~/.nix-profile/share/icons:ro"
# "~/.nix-profile/share/fonts:ro"
"/nix/store:ro"
];
};
Environment = {
XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
#GTK_THEME = "adw-gtk3";
};
};
"io.github.martchus.syncthingtray".Context.filesystems = ["/storage/games/heroic/Factorio/game/saves"];
"org.octave.Octave".Context.sockets = ["x11"];
"org.octave.Octave".Environment = {QT_QPA_PLATFORM = "xcb";};
"com.valvesoftware.Steam" = {
Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/steam"];
};
Environment = {
STEAM_FORCE_DESKTOPUI_SCALING = "1.3";
};
};
"org.signal.Signal" = {
Environment = {
SIGNAL_PASSWORD_STORE = "gnome-libsecret";
};
};
"net.lutris.Lutris".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/lutris" "~/games/lutris"];
};
"com.heroicgameslauncher.hgl".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/heroic" "~/games/heroic"];
};
"com.usebottles.Bottles" = {
Context = {
sockets = ["x11" "wayland"];
};
};
};
};
}

View File

@ -1,16 +1 @@
{inputs, ...}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
self.homeModules.desktop
self.homeModules.programs
./programs.nix
./flatpak.nix
];
desktop.hyprland.enable = true;
home = {
stateVersion = "25.05";
sessionPath = [
"$HOME/.local/bin"
];
};
}
{flake, ...}: {imports = [flake.modules.shared.user];}

View File

@ -1,68 +0,0 @@
{pkgs, ...}: {
shell = {
fish.enable = true;
nushell.enable = false;
oh-my-posh.enable = true;
};
console.yazi.enable = true;
stylix.targets.fzf.enable = false;
programs = {
bat.enable = true;
btop = {
enable = true;
settings.update_ms = 200;
};
eza.enable = true;
fd.enable = true;
fzf = {
enable = true;
defaultOptions = ["--color=16"];
};
pay-respects.enable = true;
nix-index.enable = true;
nix-index-database.comma.enable = true;
gitui.enable = true;
git = {
enable = true;
delta.enable = true;
signing.format = "ssh";
aliases = {
cl = "clone";
co = "checkout";
pom = "push origin main";
};
};
ripgrep.enable = true;
};
terminal = {
ghostty.enable = true;
kitty.enable = true;
};
editor = {
helix.enable = true;
neve.enable = true;
zed.enable = true;
};
home.packages = with pkgs; [
alejandra # nix formatter
flatpak # flatpak cli
trashy # trash cli
procs # ps in rust
ouch # archive manager in runt
dust # du in rust
fend # calc in rust
moar # better pager
tree # tree util
rbw # bitwarden cli in rust
pinentry-qt # pinentry for rbw
vial # qmk keyboard configuring app
waycheck # check wayland protocols
virt-manager # libvirt gui
];
systemd.user.settings.Manager.DefaultEnvironment.PAGER = "moar";
}

View File

@ -1,20 +0,0 @@
{inputs, ...}: let
secretsPath = builtins.toString inputs.mysecrets;
in {
imports = with inputs; [
sops-nix.homeManagerModules.sops
];
sops = {
age.keyFile = "/var/lib/sops-nix/key.txt";
defaultSopsFile = "${secretsPath}/secrets.yaml";
validateSopsFiles = false;
secrets = {
"ssh/private/dunamis-user" = {
path = "/home/user/.ssh/id_ed25519";
};
};
};
}

View File

@ -1,94 +1,50 @@
# device-specific setup
{
pkgs,
inputs,
config,
...
}: {
{inputs, ...}: {
imports = with inputs; [
chaotic.nixosModules.default
lix.nixosModules.default
self.modules.shared.nixos
self.nixosModules.desktop
self.nixosModules.system
./hardware-conf.nix
./programs.nix
./stylix.nix
./users.nix
./sops.nix
./disko
./hardware
./misc
];
desktop = {
hyprland.enable = true;
};
nix = {
settings.experimental-features = ["nix-command" "flakes"];
distributedBuilds = true;
settings.builders-use-substitutes = true;
buildMachines = [
{
hostName = "dunamis";
sshUser = "remotebuild";
system = "x86_64-linux";
sshKey = config.sops.secrets."ssh-private-eldrid-rmbuild".path;
supportedFeatures = ["nixos-test" "big-parallel" "kvm" "benchmark"];
publicHostKey = builtins.readFile "${inputs.mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
}
];
};
system.stateVersion = "25.05";
time.timeZone = "Europe/Kyiv";
locale.ukrainian.enable = true;
networking = {
networkmanager.enable = true;
hostId = "14f63637";
hostName = "eldrid";
# required for syncthing
firewall = {
allowedTCPPorts = [22000];
allowedUDPPorts = [21027 22000];
};
};
boot = {
# kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages_cachyos;
plymouth.enable = true;
loader.efi.canTouchEfiVariables = true;
loader.systemd-boot = {
enable = true;
consoleMode = "auto";
};
};
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
console = {
earlySetup = true;
packages = [pkgs.terminus_font];
font = "${pkgs.terminus_font}/share/consolefonts/ter-c18n.psf.gz";
};
desktop.niri.enable = true;
services = {
power-profiles-daemon.enable = true;
flatpak.enable = true;
fstrim.enable = true;
openssh.enable = true;
};
services.scx = {
services.displayManager.autoLogin = {
enable = true;
scheduler = "scx_flash";
user = "user";
};
security.basic.enable = true;
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024; # eight gigs
}
];
virtual = {
libvirt.enable = true;
podman.enable = false;
module = {
config = {
laptop.homeRowMods = true;
powerSave = true;
secureBoot = true;
useIwd = true;
vaapi = "intel-media-driver";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
misc = {
qmk-vial.enable = true;
};
};
wireless.bluetooth.enableBlueman = true;
opentabletdriver.enable = false;
qmk-vial.enable = true;
}

View File

@ -0,0 +1,19 @@
{
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a44022ad0";
in {
imports = with inputs; [
disko.nixosModules.disko
];
disko.devices.nodev = {
"/tmp" = {
fsType = "tmpfs";
mountOptions = ["rw" "nosuid" "nodev"];
};
};
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
}

View File

@ -0,0 +1,88 @@
{
disk,
hostId,
}: {
type = "disk";
device = disk;
content = {
type = "gpt";
partitions = {
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"umask=0077"
"fmask=0022"
"dmask=0022"
"noexec"
"nosuid"
"nodev"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-" + hostId;
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@nixos" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"noatime"
# "noexec"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@flatpak" = {
mountpoint = "/var/lib/flatpak";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@storage" = {
mountpoint = "/storage";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@swap" = {
mountpoint = "/swap";
mountOptions = [
"compress=zstd"
"noatime"
# "noexec"
];
};
# "@nix" = {
# mountpoint = "/nix";
# mountOptions = [
# "compress=zstd"
# "noatime"
# ];
# };
};
};
};
};
};
};
}

View File

@ -1,201 +0,0 @@
{
config,
lib,
pkgs,
# modulesPath,
...
}: let
cb-ucm-conf = pkgs.alsa-ucm-conf.overrideAttrs {
wttsrc = pkgs.fetchFromGitHub {
owner = "WeirdTreeThing";
repo = "chromebook-ucm-conf";
rev = "b6ce2a7";
hash = "sha256-QRUKHd3RQmg1tnZU8KCW0AmDtfw/daOJ/H3XU5qWTCc=";
};
postInstall = ''
cp -R $wttsrc/common/* $out/share/alsa/ucm2/common
cp -R $wttsrc/codecs/* $out/share/alsa/ucm2/codecs
cp -R $wttsrc/platforms/* $out/share/alsa/ucm2/platforms
cp -R $wttsrc/sof-rt5682 $out/share/alsa/ucm2/conf.d
cp -R $wttsrc/sof-cs42l42 $out/share/alsa/ucm2/conf.d
'';
};
in {
boot.initrd.availableKernelModules = ["ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" "xe" "i915"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/fc3d843d-54c6-4b2f-ac56-77f81600745e";
fsType = "btrfs";
options = ["subvol=@nixos,compress=zstd"];
};
boot.initrd.luks.devices."luks".device = "/dev/disk/by-uuid/cbd7d98e-745b-4828-b868-42881bad353d";
fileSystems."/home" = {
device = "/dev/disk/by-uuid/fc3d843d-54c6-4b2f-ac56-77f81600745e";
fsType = "btrfs";
options = ["subvol=@home,compress=zstd"];
};
fileSystems."/var/lib/flatpak" = {
device = "/dev/disk/by-uuid/fc3d843d-54c6-4b2f-ac56-77f81600745e";
fsType = "btrfs";
options = ["subvol=@flatpak,compress=zstd"];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D38C-AA51";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
fileSystems."/swap" = {
device = "/dev/disk/by-uuid/fc3d843d-54c6-4b2f-ac56-77f81600745e";
fsType = "btrfs";
options = ["subvol=@swap,compress=zstd"];
};
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024; # eight gigs
}
];
wireless = {
wifi.enable = true;
bluetooth.enable = true;
};
networking.useDHCP = lib.mkDefault true;
# intel ax201 wifi card firmware
hardware.enableRedistributableFirmware = true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
# physically broken touchscreen
services.udev.extraRules = "ACTION==\"add|change\", KERNELS==\"input[0-9]*\", SUBSYSTEMS==\"input\", ATTRS{id/vendor}==\"27c6\", ATTRS{id/product}==\"0e84\", ENV{LIBINPUT_IGNORE_DEVICE}=\"1\"";
services.keyd = {
enable = true;
keyboards.internal = {
ids = [
"k:0001:0001"
"k:18d1:5044"
"k:18d1:5052"
"k:0000:0000"
"k:18d1:5050"
"k:18d1:504c"
"k:18d1:503c"
"k:18d1:5030"
"k:18d1:503d"
"k:18d1:505b"
"k:18d1:5057"
"k:18d1:502b"
"k:18d1:5061"
];
settings = {
main = {
f1 = "back";
f2 = "forward";
f3 = "refresh";
f4 = "f11";
f5 = "scale";
f6 = "brightnessdown";
f7 = "brightnessup";
f8 = "mute";
f9 = "volumedown";
f10 = "volumeup";
back = "back";
forward = "forward";
refresh = "refresh";
zoom = "f11";
scale = "scale";
brightnessdown = "brightnessdown";
brightnessup = "brightnessup";
mute = "mute";
volumedown = "volumedown";
volumeup = "volumeup";
sleep = "coffee";
a = "lettermod(alt, a, 200, 150)";
s = "lettermod(meta, s, 200, 150)";
d = "lettermod(control, d, 200, 150)";
f = "lettermod(shift, f, 200, 150)";
j = "lettermod(shift, j, 200, 150)";
k = "lettermod(control, k, 200, 150)";
l = "lettermod(meta, l, 200, 150)";
";" = "lettermod(alt, ;, 200, 150)";
};
meta = {
f1 = "f1";
f2 = "f2";
f3 = "f3";
f4 = "f4";
f5 = "f5";
f6 = "f6";
f7 = "f7";
f8 = "f8";
f9 = "f9";
f10 = "f10";
back = "f1";
forward = "f2";
refresh = "f3";
zoom = "f4";
scale = "f5";
brightnessdown = "f6";
brightnessup = "f7";
mute = "f8";
volumedown = "f9";
volumeup = "f10";
sleep = "f12";
};
alt = {
backspace = "delete";
meta = "capslock";
brightnessdown = "kbdillumdown";
brightnessup = "kbdillumup";
f6 = "kbdillumdown";
f7 = "kbdillumup";
};
control = {
f5 = "print";
scale = "print";
};
controlalt = {
backspace = "C-A-delete";
};
};
};
};
system.replaceDependencies.replacements = [
{
original = pkgs.alsa-ucm-conf;
replacement = cb-ucm-conf;
}
];
services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" ''
rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.*" },
},
},
apply_properties = {
["api.alsa.headroom"] = 4096,
},
}
table.insert(alsa_monitor.rules,rule)
'')
];
boot = {
extraModprobeConfig = ''
options snd-intel-dspcfg dsp_driver=3
'';
};
}

View File

@ -0,0 +1,11 @@
{
imports = [
./laptop
];
services = {
logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
};
}

View File

@ -0,0 +1,86 @@
{pkgs, ...}: let
cb-ucm-conf = with pkgs;
alsa-ucm-conf.overrideAttrs {
wttsrc = fetchFromGitHub {
owner = "WeirdTreeThing";
repo = "alsa-ucm-conf-cros";
rev = "a4f0ed6cf59163fb571c33a81a6b40b6f53ed57d";
hash = "sha256-H0BsRzHSEJ6XCZB/Rvb3w+uGCzr+kAvAwcHWqYEtp6w=";
};
unpackPhase = ''
runHook preUnpack
tar xf "$src"
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/alsa
cp -r alsa-ucm*/ucm2 $out/share/alsa
runHook postInstall
'';
};
in {
environment = {
systemPackages = [pkgs.sof-firmware];
sessionVariables.ALSA_CONFIG_UCM2 = "${cb-ucm-conf}/share/alsa/ucm2";
etc = {
"wireplumber/main.lua.d/51-increase-headroom.lua".text = ''
rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.*" },
},
},
apply_properties = {
["api.alsa.headroom"] = 4096,
},
}
table.insert(alsa_monitor.rules,rule)
'';
};
};
system.replaceDependencies.replacements = [
{
original = pkgs.alsa-ucm-conf;
replacement = cb-ucm-conf;
}
];
boot.extraModprobeConfig = ''
options snd-intel-dspcfg dsp_driver=3
'';
services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" ''
rule = {
matches = {
{
{ "node.name", "matches", "alsa_output.*" },
},
},
apply_properties = {
["api.alsa.headroom"] = 4096,
},
}
table.insert(alsa_monitor.rules,rule)
'')
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-avs-dmic.lua" ''
rule = {
matches = {
{
{ "node.nick", "equals", "Internal Microphone" },
},
},
apply_properties = {
["audio.format"] = "S16LE",
},
}
table.insert(alsa_monitor.rules, rule)
'')
];
}

View File

@ -0,0 +1,94 @@
{
services.keyd = {
enable = true;
keyboards.internal = {
ids = [
"k:0001:0001"
"k:18d1:5044"
"k:18d1:5052"
"k:0000:0000"
"k:18d1:5050"
"k:18d1:504c"
"k:18d1:503c"
"k:18d1:5030"
"k:18d1:503d"
"k:18d1:505b"
"k:18d1:5057"
"k:18d1:502b"
"k:18d1:5061"
];
settings = {
main = {
f1 = "back";
f2 = "forward";
f3 = "refresh";
f4 = "f11";
f5 = "scale";
f6 = "brightnessdown";
f7 = "brightnessup";
f8 = "mute";
f9 = "volumedown";
f10 = "volumeup";
f13 = "printscreen";
back = "back";
forward = "forward";
refresh = "refresh";
zoom = "f11";
scale = "scale";
brightnessdown = "brightnessdown";
brightnessup = "brightnessup";
mute = "mute";
volumedown = "volumedown";
volumeup = "volumeup";
sleep = "coffee";
a = "lettermod(alt, a, 200, 150)";
s = "lettermod(meta, s, 200, 150)";
d = "lettermod(control, d, 200, 150)";
f = "lettermod(shift, f, 200, 150)";
j = "lettermod(shift, j, 200, 150)";
k = "lettermod(control, k, 200, 150)";
l = "lettermod(meta, l, 200, 150)";
";" = "lettermod(alt, ;, 200, 150)";
};
meta = {
f1 = "f1";
f2 = "f2";
f3 = "f3";
f4 = "f4";
f5 = "f5";
f6 = "f6";
f7 = "f7";
f8 = "f8";
f9 = "f9";
f10 = "f10";
back = "f1";
forward = "f2";
refresh = "f3";
zoom = "f4";
scale = "f5";
brightnessdown = "f6";
brightnessup = "f7";
mute = "f8";
volumedown = "f9";
volumeup = "f10";
sleep = "f12";
};
alt = {
backspace = "delete";
meta = "capslock";
brightnessdown = "kbdillumdown";
brightnessup = "kbdillumup";
f6 = "kbdillumdown";
f7 = "kbdillumup";
};
control = {
f5 = "print";
scale = "print";
};
controlalt = {
backspace = "C-A-delete";
};
};
};
};
}

View File

@ -0,0 +1,7 @@
{
imports = [
./cb-audio-fix.nix
./cb-keyboard.nix
./touchscreen-fix.nix
];
}

View File

@ -0,0 +1,3 @@
{
services.udev.extraRules = "ACTION==\"add|change\", KERNELS==\"input[0-9]*\", SUBSYSTEMS==\"input\", ATTRS{id/vendor}==\"27c6\", ATTRS{id/product}==\"0e84\", ENV{LIBINPUT_IGNORE_DEVICE}=\"1\"";
}

View File

@ -0,0 +1,6 @@
{
imports = [
# ./distributed-build.nix
./undervolt.nix
];
}

View File

@ -0,0 +1,7 @@
{
services.undervolt = {
enable = true;
# coreOffset = -150;
turbo = 1;
};
}

View File

@ -1,18 +0,0 @@
{pkgs, ...}: {
programs.neovim = {
enable = false;
viAlias = true;
vimAlias = true;
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 7d --keep 3";
flake = "/home/user/.config/nixos";
};
programs.fish.enable = true;
environment.systemPackages = with pkgs; [
helix
# nushell
];
}

View File

@ -1,25 +0,0 @@
{inputs, ...}: let
secretsPath = builtins.toString inputs.mysecrets;
in {
imports = [
inputs.sops-nix.nixosModules.sops
];
sops = {
age = {
sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = true;
};
defaultSopsFile = "${secretsPath}/secrets.yaml";
secrets = {
"user-password-hashed" = {};
"ssh-private-eldrid-rmbuild" = {};
"ssh-private-eldrid-user" = {
path = "/home/user/.ssh/id_ed25519";
mode = "0400";
owner = "user";
};
};
};
}

View File

@ -1,54 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = [
inputs.stylix.nixosModules.stylix
];
environment.systemPackages = with pkgs; [
#papirus-icon-theme
nerd-fonts.iosevka
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/tomorrow-night.yaml";
polarity = "dark";
cursor = {
package = pkgs.google-cursor;
name = "GoogleDot-Blue";
size = 24;
};
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/9m/wallhaven-9mwzwk.jpg";
name = "wallhaven-9mwzwk";
sha256 = "0pj2k30mfhqr02dzdj40z62awmy58s5gg5mm4xzxiialclbd5n8d";
};
opacity.terminal = 0.9;
fonts = {
sizes = {
applications = 13;
desktop = 14;
popups = 13;
terminal = 15;
};
serif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
sansSerif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
monospace = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
}

View File

@ -1,15 +0,0 @@
{pkgs, ...}: {
nix.settings.trusted-users = ["user"];
users.users = {
user = {
isNormalUser = true;
extraGroups = ["wheel" "video" "libvirtd" "dialout"];
shell = pkgs.fish;
};
# work = {
# isNormalUser = true;
# extraGroups = ["video"];
# shell = pkgs.nushell;
# };
};
}

View File

@ -1,110 +0,0 @@
{inputs, ...}: {
imports = [
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
services.flatpak = {
enable = true;
remotes = [
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
{
name = "hero-persson";
location = "https://hero-persson.github.io/unmojang-flatpak/index.flatpakrepo";
}
];
packages = [
# misc
"io.github.zen_browser.zen"
"net.mullvad.MullvadBrowser"
"com.obsproject.Studio"
"com.bitwarden.desktop"
"com.github.tchx84.Flatseal"
"org.qbittorrent.qBittorrent"
# "com.transmissionbt.Transmission"
"com.usebottles.bottles"
"com.logseq.Logseq"
"io.github.martchus.syncthingtray"
# chatting
"org.signal.Signal"
"im.riot.Riot"
"org.telegram.desktop"
"io.github.spacingbat3.webcord"
"org.mozilla.Thunderbird"
# media
"org.atheme.audacious"
"io.freetubeapp.FreeTube"
#"io.github.celluloid_player.Celluloid"
# "io.mpv.Mpv"
# gaming
#"com.github._0negal.Viper"
"net.lutris.Lutris"
"com.heroicgameslauncher.hgl"
{
appId = "org.unmojang.FjordLauncher";
origin = "hero-persson";
}
"org.freedesktop.Platform.VulkanLayer.MangoHud//24.08"
"org.freedesktop.Platform.VulkanLayer.gamescope//24.08"
];
overrides = {
"global" = {
# Force Wayland by default
Context = {
sockets = ["wayland" "!x11" "!fallback-x11"];
filesystems = [
"xdg-run/pipewire-0"
"xdg-config/gtk-3.0:ro"
"xdg-config/gtk-4.0:ro"
# "~/.local/share/fonts:ro"
"~/.local/share/icons:ro"
# "~/.nix-profile/share/icons:ro"
# "~/.nix-profile/share/fonts:ro"
"/nix/store:ro"
];
};
Environment = {
XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
#GTK_THEME = "adw-gtk3";
};
};
"io.github.martchus.syncthingtray".Context.filesystems = ["/storage/games/heroic/Factorio/game/saves"];
"org.octave.Octave".Context.sockets = ["x11"];
"org.octave.Octave".Environment = {QT_QPA_PLATFORM = "xcb";};
"com.valvesoftware.Steam" = {
Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/steam"];
};
Environment = {
STEAM_FORCE_DESKTOPUI_SCALING = "1.3";
};
};
"org.signal.Signal" = {
Environment = {
SIGNAL_PASSWORD_STORE = "gnome-libsecret";
};
};
"net.lutris.Lutris".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/lutris" "~/games/lutris"];
};
"com.heroicgameslauncher.hgl".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/heroic" "~/games/heroic"];
};
"com.usebottles.Bottles" = {
Context = {
sockets = ["x11" "wayland"];
filesystems = ["/home/user/docs/nure/tex-template/assets/BridgeKSG"];
};
};
};
};
}

View File

@ -1,15 +1 @@
{inputs, ...}: {
imports = with inputs; [
self.homeModules.desktop
self.homeModules.programs
./programs.nix
./flatpak.nix
];
desktop.hyprland.enable = true;
home = {
stateVersion = "25.05";
sessionPath = [
"$HOME/.local/bin"
];
};
}
{flake, ...}: {imports = [flake.modules.shared.user];}

View File

@ -1,58 +0,0 @@
{pkgs, ...}: {
shell = {
fish.enable = true;
oh-my-posh.enable = true;
};
console.yazi.enable = true;
programs = {
bat.enable = true;
btop = {
enable = true;
settings.update_ms = 200;
};
eza.enable = true;
fd.enable = true;
fzf.enable = true;
gitui.enable = true;
git = {
enable = true;
delta.enable = true;
signing.format = "ssh";
aliases = {
cl = "clone";
co = "checkout";
pom = "push origin main";
};
};
ripgrep.enable = true;
};
terminal = {
ghostty.enable = true;
kitty.enable = true;
};
editor = {
helix.enable = true;
neve.enable = true;
};
home.packages = with pkgs; [
alejandra # nix formatter
flatpak # flatpak cli
trashy # trash cli
procs # ps in rust
dust # du in rust
fend # calc in rust
tree # tree util
rbw # bitwarden cli in rust
pinentry-qt # pinentry for rbw
zip # zip util
vial # qmk keyboard configuring app
unzip # unzip util
waycheck # check wayland protocols
virt-manager # libvirt gui
];
}

View File

@ -0,0 +1,41 @@
{inputs, ...}: {
imports = with inputs; [
self.modules.shared.nixos
self.nixosModules.desktop
self.nixosModules.system
./disko
./hardware
./misc
];
networking = {
hostId = "45b00123";
hostName = "legion";
};
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
module = {
config = {
laptop.homeRowMods = true;
powerSave = true;
secureBoot = true;
tpmDiskUnlock = true;
vaapi = "nvidia";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
virt.libvirt.enable = true;
};
}

View File

@ -0,0 +1,21 @@
{
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk-main = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B";
disk-second = "/dev/disk/by-id/nvme-WDC_PC_SN730_SDBPNTY-1T00-1101_21114D802446";
in {
imports = with inputs; [
disko.nixosModules.disko
];
disko.devices.nodev = {
"/tmp" = {
fsType = "tmpfs";
mountOptions = ["rw" "nosuid" "nodev"];
};
};
disko.devices.disk.main = import ./disk-main.nix {inherit disk-main hostId;};
disko.devices.disk.second = import ./disk-second.nix {inherit disk-second hostId;};
}

View File

@ -0,0 +1,75 @@
{
disk-main,
hostId,
}: {
type = "disk";
device = disk-main;
content = {
type = "gpt";
partitions = {
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"umask=0077"
"fmask=0022"
"dmask=0022"
"noexec"
"nosuid"
"nodev"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-" + hostId;
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@root-nixos" = {
mountpoint = "/";
mountOptions = [
"autodefrag"
"compress=zstd"
"noatime"
# "noexec"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"autodefrag"
"compress=zstd"
"noatime"
];
};
"@swap" = {
mountpoint = "/swap";
mountOptions = [
# "compress=zstd"
"noatime"
];
};
# "@nix" = {
# mountpoint = "/nix";
# mountOptions = [
# "compress-force=zstd"
# "noatime"
# ];
# };
};
};
};
};
};
};
}

View File

@ -0,0 +1,35 @@
{
disk-second,
hostId,
}: {
type = "disk";
device = disk-second;
content = {
type = "gpt";
partitions = {
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-${hostId}-second";
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@storage" = {
mountpoint = "/storage";
mountOptions = [
"autodefrag"
"compress=zstd"
"noatime"
];
};
};
};
};
};
};
};
}

View File

@ -0,0 +1,11 @@
{
imports = [
./nvidia.nix
];
services = {
logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
};
}

View File

@ -0,0 +1,36 @@
{
config,
lib,
...
}: {
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"nvidia-x11"
];
services.xserver.videoDrivers = ["nvidia"];
hardware = {
nvidia-container-toolkit.enable = true;
nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.beta;
open = true;
modesetting.enable = true;
nvidiaSettings = false;
dynamicBoost.enable = true;
powerManagement = {
enable = false;
# finegrained = true;
};
prime = {
# sync.enable = true;
# reverseSync.enable = true;
# allowExternalGpu = true;
offload = {
enable = true;
enableOffloadCmd = true;
};
amdgpuBusId = "PCI:6:0:0";
nvidiaBusId = "PCI:1:0:0";
};
};
};
}

View File

@ -0,0 +1,5 @@
{
imports = [
# ./distributed-build.nix
];
}

View File

@ -0,0 +1 @@
{flake, ...}: {imports = [flake.modules.shared.user];}

View File

@ -0,0 +1,47 @@
{inputs, ...}: {
imports = with inputs; [
self.nixosModules.desktop
self.nixosModules.system
self.modules.shared.nixos
./disko
./hardware
./misc
];
networking = {
hostId = "bd1b5837";
hostName = "morphius";
};
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
desktop.gnome.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024;
}
];
module = {
config = {
secureBoot = true;
tpmDiskUnlock = true;
powerSave = true;
useIwd = true;
vaapi = "intel-media-driver";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
};
}

View File

@ -0,0 +1,19 @@
{
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/nvme0n1";
in {
imports = with inputs; [
disko.nixosModules.disko
];
disko.devices.nodev = {
"/tmp" = {
fsType = "tmpfs";
mountOptions = ["rw" "nosuid" "nodev"];
};
};
disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
}

View File

@ -0,0 +1,80 @@
{
disk,
hostId,
...
}: {
type = "disk";
device = disk;
content = {
type = "gpt";
partitions = {
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"umask=0077"
"fmask=0022"
"dmask=0022"
"noexec"
"nosuid"
"nodev"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-" + hostId;
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@nixos-root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"noatime"
"noexec"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@storage" = {
mountpoint = "/storage";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [
"compress-force=zstd"
"noatime"
];
};
"@swap" = {
mountpoint = "/swap";
mountOptions = [
"noatime"
];
};
};
};
};
};
};
};
}

View File

@ -0,0 +1,12 @@
{
imports = [
# ./laptop
];
hardware.sensor.iio.enable = true;
services = {
logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
};
}

View File

@ -0,0 +1,5 @@
{
imports = [
# ./distributed-build.nix
];
}

View File

@ -0,0 +1 @@
{flake, ...}: {imports = [flake.modules.shared.user];}

View File

@ -1,78 +1,54 @@
# device-specific setup
{
pkgs,
inputs,
...
}: {
{inputs, ...}: {
imports = with inputs; [
chaotic.nixosModules.default
lix.nixosModules.default
self.nixosModules.desktop
self.nixosModules.system
./hardware-conf.nix
./programs.nix
./stylix.nix
./users.nix
./sops.nix
self.modules.shared.nixos
./disko
./hardware
./misc
];
desktop = {
hyprland.enable = true;
};
nix.settings.experimental-features = ["nix-command" "flakes"];
system.stateVersion = "25.05";
time.timeZone = "Europe/Kyiv";
locale.ukrainian.enable = true;
networking = {
networkmanager.enable = true;
hostName = "vylxae";
# required for syncthing
firewall = {
allowedTCPPorts = [22000];
allowedUDPPorts = [21027 22000];
};
hostId = "31150fae";
hostName = "sarien";
};
boot = {
# kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages_cachyos;
plymouth.enable = true;
loader.efi.canTouchEfiVariables = true;
loader.systemd-boot = {
enable = true;
consoleMode = "auto";
};
};
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
console = {
earlySetup = true;
packages = [pkgs.terminus_font];
font = "${pkgs.terminus_font}/share/consolefonts/ter-c18n.psf.gz";
};
desktop.niri.enable = true;
services = {
power-profiles-daemon.enable = true;
flatpak.enable = true;
fstrim.enable = true;
openssh.enable = true;
};
services.scx = {
services.displayManager.autoLogin = {
enable = true;
scheduler = "scx_flash";
user = "user";
};
security.basic.enable = true;
swapDevices = [
{
device = "/swap/swapfile";
size = 4 * 1024;
priority = 100;
}
{
device = "/swap/hibernate";
size = 16 * 1024;
priority = 1;
}
];
virtual = {
libvirt.enable = true;
podman.enable = false;
module = {
config = {
laptop.homeRowMods = true;
powerSave = true;
useIwd = true;
vaapi = "intel-media-driver";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
misc.qmk-vial.enable = true;
virt.libvirt.enable = true;
};
wireless.bluetooth.enableBlueman = true;
opentabletdriver.enable = false;
qmk-vial.enable = true;
}

View File

@ -0,0 +1,20 @@
{
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/disk/by-id/nvme-eui.0025385911b36714";
in {
imports = with inputs; [
disko.nixosModules.disko
];
disko.devices.nodev = {
"/tmp" = {
fsType = "tmpfs";
mountOptions = ["rw" "nosuid" "nodev"];
};
};
# same partitioning setup
disko.devices.disk.main = import ../../dunamis/disko/disk-main.nix {inherit disk hostId;};
}

View File

@ -1,107 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
# pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
wireless = {
wifi.enable = true;
bluetooth.enable = true;
};
services.logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
boot = {
kernelModules = ["kvm-intel"];
extraModulePackages = [];
kernelParams = [
"i915.enable_guc=2"
"i915.enable_fbc=1"
"i915.enable_psr=2"
];
initrd = {
luks.devices."luks-149371a0-a41f-4c43-8935-cb199508c66a".device = "/dev/disk/by-uuid/149371a0-a41f-4c43-8935-cb199508c66a";
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "sr_mod" "rtsx_pci_sdmmc"];
kernelModules = ["i915"];
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/6b850c3a-c7a2-461d-bce5-c631df4226bf";
fsType = "btrfs";
options = ["subvol=@nixos,compress=zstd"];
};
"/home" = {
device = "/dev/disk/by-uuid/6b850c3a-c7a2-461d-bce5-c631df4226bf";
fsType = "btrfs";
options = ["subvol=home,compress=zstd"];
};
"/storage" = {
device = "/dev/disk/by-uuid/6b850c3a-c7a2-461d-bce5-c631df4226bf";
fsType = "btrfs";
options = ["subvol=@storage,compress=zstd"];
};
"/boot" = {
device = "/dev/disk/by-uuid/F195-F7C0";
fsType = "vfat";
options = ["umask=0077"];
};
};
swapDevices = [];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.thermald.enable = true;
services.upower.enable = true;
powerManagement.powertop.enable = true;
services.udev.extraHwdb = ''
evdev:input:b0011v0001p0001eAB83*
KEYBOARD_KEY_d5=sysrq
KEYBOARD_KEY_d4=leftmeta
KEYBOARD_KEY_95=brightnessdown
KEYBOARD_KEY_91=brightnessup
'';
services.keyd = {
enable = true;
keyboards = {
default = {
ids = ["0001:0001"];
settings = {
main = {
camera = "brightnessdown";
prog1 = "brightnessup";
# home row mods
a = "lettermod(alt, a, 200, 150)";
s = "lettermod(meta, s, 200, 150)";
d = "lettermod(control, d, 200, 150)";
f = "lettermod(shift, f, 200, 150)";
j = "lettermod(shift, j, 200, 150)";
k = "lettermod(control, k, 200, 150)";
l = "lettermod(meta, l, 200, 150)";
";" = "lettermod(alt, ;, 200, 150)";
};
};
};
};
};
}

View File

@ -0,0 +1,11 @@
{
imports = [
./laptop
];
services = {
logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
};
}

View File

@ -0,0 +1,5 @@
{
imports = [
./keyboard-fix.nix
];
}

View File

@ -0,0 +1,21 @@
{
services = {
udev.extraHwdb = ''
evdev:input:b0011v0001p0001eAB83*
KEYBOARD_KEY_d5=sysrq
KEYBOARD_KEY_d4=leftmeta
KEYBOARD_KEY_95=brightnessdown
KEYBOARD_KEY_91=brightnessup
'';
keyd = {
enable = true;
keyboards.default = {
ids = ["0001:0001"];
settings.main = {
camera = "brightnessdown";
prog1 = "brightnessup";
};
};
};
};
}

View File

@ -0,0 +1,5 @@
{
imports = [
# ./distributed-build.nix
];
}

View File

@ -1,18 +0,0 @@
{pkgs, ...}: {
programs.neovim = {
enable = false;
viAlias = true;
vimAlias = true;
};
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 7d --keep 3";
flake = "/home/user/.config/nixos";
};
programs.fish.enable = true;
environment.systemPackages = with pkgs; [
helix
nushell
];
}

View File

@ -1,24 +0,0 @@
{inputs, ...}: let
secretsPath = builtins.toString inputs.mysecrets;
in {
imports = [
inputs.sops-nix.nixosModules.sops
];
sops = {
age = {
sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = true;
};
defaultSopsFile = "${secretsPath}/secrets.yaml";
secrets = {
"user-password-hashed" = {};
"ssh-private-sarien-user" = {
path = "/home/user/.ssh/id_ed25519";
mode = "0400";
owner = "user";
};
};
};
}

View File

@ -1,54 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = [
inputs.stylix.nixosModules.stylix
];
environment.systemPackages = with pkgs; [
#papirus-icon-theme
nerd-fonts.iosevka
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/tomorrow-night.yaml";
polarity = "dark";
cursor = {
package = pkgs.google-cursor;
name = "GoogleDot-Blue";
size = 24;
};
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/9m/wallhaven-9mwzwk.jpg";
name = "wallhaven-9mwzwk";
sha256 = "0pj2k30mfhqr02dzdj40z62awmy58s5gg5mm4xzxiialclbd5n8d";
};
opacity.terminal = 0.9;
fonts = {
sizes = {
applications = 13;
desktop = 14;
popups = 13;
terminal = 15;
};
serif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
sansSerif = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Propo";
};
monospace = {
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
}

View File

@ -1,24 +0,0 @@
{
inputs,
config,
pkgs,
...
}: let
sopSec = config.sops.secrets;
secrets = inputs.mysecrets;
in {
nix.settings.trusted-users = ["user"];
users.mutableUsers = false;
users.users = {
user = {
hashedPasswordFile = sopSec."user-password-hashed".path;
isNormalUser = true;
extraGroups = ["wheel" "video" "libvirtd" "dialout"];
shell = pkgs.fish;
openssh.authorizedKeys.keyFiles = [
"${secrets}/ssh/id_ed25519_sarien_user.pub"
"${secrets}/ssh/id_ed25519_eldrid_user.pub"
];
};
};
}

View File

@ -1,111 +0,0 @@
{inputs, ...}: {
imports = [
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
services.flatpak = {
enable = true;
uninstallUnmanaged = true;
remotes = [
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
{
name = "hero-persson";
location = "https://hero-persson.github.io/unmojang-flatpak/index.flatpakrepo";
}
];
packages = [
# misc
"io.github.zen_browser.zen"
"net.mullvad.MullvadBrowser"
"com.obsproject.Studio"
"com.bitwarden.desktop"
"com.github.tchx84.Flatseal"
"org.qbittorrent.qBittorrent"
# "com.transmissionbt.Transmission"
"com.usebottles.bottles"
"com.logseq.Logseq"
"io.github.martchus.syncthingtray"
# chatting
"org.signal.Signal"
"im.riot.Riot"
"org.telegram.desktop"
"io.github.spacingbat3.webcord"
"org.mozilla.Thunderbird"
# media
"org.atheme.audacious"
"io.freetubeapp.FreeTube"
#"io.github.celluloid_player.Celluloid"
# "io.mpv.Mpv"
# gaming
#"com.github._0negal.Viper"
"net.lutris.Lutris"
"com.heroicgameslauncher.hgl"
{
appId = "org.unmojang.FjordLauncher";
origin = "hero-persson";
}
"org.freedesktop.Platform.VulkanLayer.MangoHud//24.08"
"org.freedesktop.Platform.VulkanLayer.gamescope//24.08"
];
overrides = {
"global" = {
# Force Wayland by default
Context = {
sockets = ["wayland" "!x11" "!fallback-x11"];
filesystems = [
"xdg-run/pipewire-0"
"xdg-config/gtk-3.0:ro"
"xdg-config/gtk-4.0:ro"
# "~/.local/share/fonts:ro"
"~/.local/share/icons:ro"
# "~/.nix-profile/share/icons:ro"
# "~/.nix-profile/share/fonts:ro"
"/nix/store:ro"
];
};
Environment = {
XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
#GTK_THEME = "adw-gtk3";
};
};
"io.github.martchus.syncthingtray".Context.filesystems = ["/storage/games/heroic/Factorio/game/saves"];
"org.octave.Octave".Context.sockets = ["x11"];
"org.octave.Octave".Environment = {QT_QPA_PLATFORM = "xcb";};
"com.valvesoftware.Steam" = {
Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/steam"];
};
Environment = {
STEAM_FORCE_DESKTOPUI_SCALING = "1.3";
};
};
"org.signal.Signal" = {
Environment = {
SIGNAL_PASSWORD_STORE = "gnome-libsecret";
};
};
"net.lutris.Lutris".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/lutris" "~/games/lutris"];
};
"com.heroicgameslauncher.hgl".Context = {
sockets = ["x11" "wayland"];
filesystems = ["/storage/games/heroic" "~/games/heroic"];
};
"com.usebottles.Bottles" = {
Context = {
sockets = ["x11" "wayland"];
filesystems = ["/home/user/docs/nure/tex-template/assets/BridgeKSG"];
};
};
};
};
}

View File

@ -1,16 +1 @@
{inputs, ...}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
self.homeModules.desktop
self.homeModules.programs
./programs.nix
./flatpak.nix
];
desktop.hyprland.enable = true;
home = {
stateVersion = "25.05";
sessionPath = [
"$HOME/.local/bin"
];
};
}
{flake, ...}: {imports = [flake.modules.shared.user];}

View File

@ -1,68 +0,0 @@
{pkgs, ...}: {
shell = {
fish.enable = true;
nushell.enable = false;
oh-my-posh.enable = true;
};
console.yazi.enable = true;
stylix.targets.fzf.enable = false;
programs = {
bat.enable = true;
btop = {
enable = true;
settings.update_ms = 200;
};
eza.enable = true;
fd.enable = true;
fzf = {
enable = true;
defaultOptions = ["--color=16"];
};
pay-respects.enable = true;
nix-index.enable = true;
nix-index-database.comma.enable = true;
gitui.enable = true;
git = {
enable = true;
delta.enable = true;
signing.format = "ssh";
aliases = {
cl = "clone";
co = "checkout";
pom = "push origin main";
};
};
ripgrep.enable = true;
};
terminal = {
ghostty.enable = true;
kitty.enable = true;
};
editor = {
helix.enable = true;
neve.enable = true;
zed.enable = true;
};
home.packages = with pkgs; [
alejandra # nix formatter
flatpak # flatpak cli
trashy # trash cli
procs # ps in rust
ouch # archive manager in runt
dust # du in rust
fend # calc in rust
moar # better pager
tree # tree util
rbw # bitwarden cli in rust
pinentry-qt # pinentry for rbw
vial # qmk keyboard configuring app
waycheck # check wayland protocols
virt-manager # libvirt gui
];
systemd.user.settings.Manager.DefaultEnvironment.PAGER = "moar";
}

View File

@ -0,0 +1,4 @@
{
imports = [
];
}

View File

@ -1,14 +0,0 @@
{config, ...}: {
xdg.userDirs = {
enable = true;
createDirectories = true;
templates = "${config.home.homeDirectory}/temps";
publicShare = "${config.home.homeDirectory}/pub";
desktop = "${config.home.homeDirectory}/desktop";
download = "${config.home.homeDirectory}/downloads";
documents = "${config.home.homeDirectory}/docs";
pictures = "${config.home.homeDirectory}/pics";
videos = "${config.home.homeDirectory}/vids";
music = "${config.home.homeDirectory}/music";
};
}

View File

@ -0,0 +1,94 @@
{
osConfig,
config,
pkgs,
lib,
...
}:
with lib; let
inherit (osConfig.module.stylix) theme;
cfg = config.desktop.cosmic;
in {
options = {
desktop.cosmic.enable =
mkEnableOption "enable cosmic desktop";
};
config = mkIf cfg.enable {
stylix.targets = {
qt.enable = false;
gtk.enable = false;
};
home.packages = with pkgs; [
helvum
loupe
papers
junction
celluloid
mission-center
dconf
libnotify
playerctl
wdisplays
pwvucontrol
wl-clipboard
];
gtk = {
enable = true;
iconTheme = {
name =
if config.stylix.polarity == "dark"
then "Papirus-Dark"
else "Papirus-Light";
package =
if (removeSuffix "-light" theme) == "nord"
then pkgs.papirus-nord
else pkgs.papirus-icon-theme;
};
};
qt = {
enable = true;
platformTheme.name = "gtk3";
};
services = {
gnome-keyring = {
enable = true;
components = ["secrets"];
};
};
dconf.settings = {
"org/gnome/desktop/wm/preferences" = {
button-layout = "icon:minimize,maximize,close";
};
"org/gnome/desktop/interface" = {
icon-theme = config.gtk.iconTheme.name;
};
};
xdg = {
mime.enable = true;
mimeApps = {
enable = true;
defaultApplications = let
file_manager = ["org.gnome.Nautilus.desktop"];
image_viewer = ["org.gnome.Loupe.desktop"];
pdf_reader = ["org.gnome.Papers.desktop"];
video_player = ["io.github.celluloid_player.Celluloid.desktop"];
web_browser = ["re.sonny.Junction.desktop"];
in {
"application/pdf" = pdf_reader;
"image/jpeg" = image_viewer;
"image/png" = image_viewer;
"inode/directory" = file_manager;
"text/html" = web_browser;
"video/mp4" = video_player;
"video/mpeg" = video_player;
"video/x-matroska" = video_player;
"video/x-mpeg" = video_player;
"x-scheme-handler/about" = web_browser;
"x-scheme-handler/http" = web_browser;
"x-scheme-handler/https" = web_browser;
"x-scheme-handler/unknown" = web_browser;
};
};
};
};
}

View File

@ -1,9 +1,10 @@
{inputs, ...}: {
{
imports = [
inputs.walker.homeManagerModules.default
./common/xdg-userdirs.nix
./hyprland/default.nix
./niri/default.nix
./plasma/default.nix
# ./common
./cosmic
./gnome
./hyprland
./niri
./plasma
];
}

View File

@ -0,0 +1,263 @@
{
osConfig,
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.desktop.gnome;
inherit (config.lib.stylix) colors;
in {
options = {
desktop.gnome.enable =
mkEnableOption "enable gnome desktop";
};
config = mkIf cfg.enable {
home.packages =
(with pkgs.gnomeExtensions; [
# extensions
alphabetical-app-grid
app-icons-taskbar
caffeine
pano
removable-drive-menu
space-bar
switcher
tactile
window-is-ready-remover
])
++ (with pkgs; [
# regular packages
junction
celluloid
mission-center
dconf
pwvucontrol
wl-clipboard
]);
programs.gnome-shell.extensions = [
{package = pkgs.gnomeExtensions.alphabetical-app-grid;}
{package = pkgs.gnomeExtensions.app-icons-taskbar;}
{package = pkgs.gnomeExtensions.caffeine;}
{package = pkgs.gnomeExtensions.pano;}
{package = pkgs.gnomeExtensions.removable-drive-menu;}
{package = pkgs.gnomeExtensions.space-bar;}
{package = pkgs.gnomeExtensions.switcher;}
{package = pkgs.gnomeExtensions.tactile;}
{package = pkgs.gnomeExtensions.window-is-ready-remover;}
];
gtk = {
enable = true;
iconTheme = let
name =
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
then "Gruvbox-Plus-Dark"
else if config.stylix.polarity == "dark"
then "Papirus-Dark"
else "Papirus-Light";
package =
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
then pkgs.gruvbox-plus-icons
else if (lib.strings.hasPrefix "rose-pine" osConfig.module.stylix.theme)
then pkgs.papirus-icon-theme.override {color = "indigo";}
else if (lib.strings.hasPrefix "nord" osConfig.module.stylix.theme)
then pkgs.papirus-icon-theme.override {color = "nordic";}
else pkgs.papirus-icon-theme;
in {inherit name package;};
};
qt = {
enable = true;
platformTheme.name = lib.mkForce "adwaita";
};
dconf.settings = with lib.hm.gvariant; {
"org/gnome/desktop/a11y/applications" = {
screen-reader-enabled = false;
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
apps = ["org.gnome.baobab.desktop" "org.gnome.FileRoller.desktop" "org.gnome.DiskUtility.desktop" "org.gnome.Connections.desktop" "org.gnome.seahorse.Application.desktop" "org.gnome.Loupe.desktop" "org.gnome.Evince.desktop" "org.gnome.font-viewer.desktop" "org.freedesktop.GnomeAbrt.desktop" "nm-connection-editor.desktop" "org.gnome.DejaDup.desktop" "org.gnome.tweaks.desktop" "org.gnome.Usage.desktop"];
categories = ["X-GNOME-Utilities"];
name = "X-GNOME-Utilities.directory";
translate = true;
};
"org/gnome/desktop/input-sources" = {
mru-sources = [(mkTuple ["xkb" "us"])];
# sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
xkb-options = ["terminate:ctrl_alt_bksp"];
};
"org/gnome/desktop/interface" = {
# accent-color = "slate";
clock-show-seconds = true;
color-scheme = "prefer-dark";
enable-animations = true;
gtk-enable-primary-paste = false;
scaling-factor = mkUint32 1;
toolbar-style = "text";
toolkit-accessibility = false;
};
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
};
"org/gnome/desktop/peripherals/keyboard" = {
delay = 250;
repeat-interval = 25;
};
"org/gnome/desktop/peripherals/touchpad" = {
two-finger-scrolling-enabled = true;
};
"org/gnome/desktop/search-providers" = {
disabled = ["org.gnome.Epiphany.desktop"];
sort-order = ["org.gnome.Settings.desktop" "org.gnome.Contacts.desktop" "org.gnome.Nautilus.desktop"];
};
"org/gnome/desktop/wm/keybindings" = {
close = ["<Control><Super>q"];
move-to-monitor-down = ["<Shift><Control><Super>Down"];
move-to-monitor-left = ["<Shift><Control><Super>Left"];
move-to-monitor-right = ["<Shift><Control><Super>Right"];
move-to-monitor-up = ["<Shift><Control><Super>Up"];
move-to-workspace-1 = ["<Control><Super>1"];
move-to-workspace-2 = ["<Control><Super>2"];
move-to-workspace-3 = ["<Control><Super>3"];
move-to-workspace-4 = ["<Control><Super>4"];
move-to-workspace-5 = ["<Control><Super>5"];
move-to-workspace-last = ["<Shift><Control><Super>End"];
move-to-workspace-left = ["<Control><Super>Left"];
move-to-workspace-right = ["<Control><Super>Right"];
switch-input-source = ["<Super>Space"];
switch-input-source-backward = ["<Shift><Super>Space"];
switch-to-workspace-1 = ["<Super>1"];
switch-to-workspace-2 = ["<Super>2"];
switch-to-workspace-3 = ["<Super>3"];
switch-to-workspace-4 = ["<Super>4"];
switch-to-workspace-left = ["<Super>Left"];
switch-to-workspace-right = ["<Super>Right"];
};
"org/gnome/desktop/wm/preferences" = {
auto-raise = true;
button-layout = "icon:close";
};
"org/gnome/epiphany" = {
ask-for-default = false;
};
"org/gnome/mutter" = {
dynamic-workspaces = true;
experimental-features = ["scale-monitor-framebuffer"];
workspaces-only-on-primary = true;
};
"org/gnome/nm-applet" = {
disable-connected-notifications = true;
};
"org/gnome/settings-daemon/plugins/color" = {
night-light-enabled = true;
night-light-schedule-automatic = false;
};
"org/gnome/shell" = {
enabled-extensions = [
"AlphabeticalAppGrid@stuarthayhurst"
"appindicatorsupport@rgcjonas.gmail.com"
"aztaskbar@aztaskbar.gitlab.com"
"caffeine@patapon.info"
"drive-menu@gnome-shell-extensions.gcampax.github.com"
"pano@elhan.io"
"space-bar@luchrioh"
"switcher@landau.fi"
"tactile@lundal.io"
"user-theme@gnome-shell-extensions.gcampax.github.com"
];
};
"org/gnome/shell/app-switcher" = {
current-workspace-only = true;
};
"org/gnome/shell/extensions/caffeine" = {
indicator-position-max = 1;
};
"org/gnome/shell/extensions/space-bar/appearance" = {
application-styles = ".space-bar {n -natural-hpadding: 12px;n}nn.space-bar-workspace-label.active {n margin: 0 4px;n background-color: rgba(255,255,255,0.3);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive.empty {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,0.5);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}";
};
"org/gnome/shell/extensions/space-bar/behavior" = {
show-empty-workspaces = false;
};
"org/gnome/shell/extensions/switcher" = {
activate-after-ms = mkUint32 0;
activate-by-key = mkUint32 1;
fade-enable = true;
font-size = mkUint32 24;
icon-size = mkUint32 24;
max-width-percentage = mkUint32 60;
only-current-workspace = true;
show-executables = false;
show-switcher = ["<Super>space"];
workspace-indicator = true;
};
"org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; {
favorites = true;
icon-size = 25;
icon-style = "REGULAR";
# intellihide = true;
main-panel-height = mkTuple [true 40];
position-offset = 4;
prefs-visible-page = "";
show-apps-button = mkTuple [true 0];
show-panel-activities-button = true;
show-weather-by-clock = "LEFT";
taskbar-spacing = 2;
# update-notifier-project-version = 30;
};
"org/gnome/shell/extensions/tactile" = {
background-color = "#${colors.base00}";
border-color = "#${colors.base0D}";
border-size = 3;
col-3 = 0;
gap-size = 6;
layout-2-col-1 = 1;
layout-2-row-2 = 0;
layout-3-col-1 = 2;
layout-3-col-2 = 1;
layout-3-col-3 = 0;
layout-3-row-2 = 0;
monitor-1-layout = 3;
text-color = "#${colors.base05}";
tile-0-2 = ["z"];
tile-1-1 = ["r"];
tile-1-2 = ["x"];
tile-2-0 = ["f"];
tile-2-1 = ["s"];
tile-2-2 = ["c"];
tile-3-0 = ["p"];
tile-3-1 = ["t"];
tile-3-2 = ["d"];
};
"org/gnome/software" = {
download-updates = false;
download-updates-notify = false;
first-run = false;
};
"org/gnome/tweaks" = {
show-extensions-notice = false;
};
};
};
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,458 @@
{
config,
osConfig,
perSystem,
launcher,
lockscreen,
# pkgs,
# lib,
...
}: let
inherit (config.lib.stylix) colors;
# inherit (lib) mkIf;
hostname = osConfig.networking.hostName;
cursorSize = config.stylix.cursor.size;
fontName = config.stylix.fonts.sansSerif.name;
keyboard =
if hostname == "eldrid"
then "chromeos"
else "platform";
xdgPictures =
config.xdg.userDirs.pictures;
# ifLaptop = mkIf (hostname != "dunamis");
in {
enable = true;
systemd = {
enable = true;
variables = [
"--all"
];
};
package = perSystem.hyprland.hyprland;
portalPackage = perSystem.hyprland.xdg-desktop-portal-hyprland;
# plugins = with pkgs.hyprlandPlugins; [
# hyprspace
# hy3
# hyprscroller
# ];
settings = {
input = {
kb_layout = "us,ua";
resolve_binds_by_sym =
if hostname == "dunamis"
then 0
else 1;
repeat_rate = 50;
repeat_delay = 300;
# mouse
accel_profile = "flat";
sensitivity = 0;
};
device = [
{
name = "ite-tech.-inc.-ite-device(8910)-keyboard";
kb_variant = "colemak_dh,";
}
{
name = "at-translated-set-2-keyboard";
kb_variant = "colemak_dh,";
}
{
name = "keyd-virtual-keyboard";
kb_variant = "colemak_dh,";
}
];
xwayland.force_zero_scaling = true;
monitor = [
", preferred, auto, 1"
"desc:AOC 27V2G5 0x0000026C, addreserved, 0, 300, 0, 0"
"desc:Samsung Electric Company S24R65x H4TMA03291, preferred, 0x0, 1, bitdepth, 10, vrr, 1"
"desc:Philips Consumer Electronics Company 27M2N5500 UK02418033254, 2560x1440@180.00Hz, 0x0, 1.3333333, bitdepth, 10, vrr, 1"
"desc:BOE 0x08E8, preferred, 1920x0, 1.2, bitdepth, 10"
"desc:LG Display 0x068B, preferred, 1920x0, 1.2, bitdepth, 10"
"desc:Chimei Innolux Corporation 0x1406, preferred, 1920x0, 1.2"
"desc:KDC 0x0000, preferred, 1920x0, 1.25"
];
env = [
"ELECTRON_OZONE_PLATFORM_HINT,auto"
"QT_QPA_PLATFORM,wayland"
"QT_QPA_PLATFORMTHEME,gtk3"
"XCURSORSIZE,${toString cursorSize}"
"GSK_RENDERER,ngl"
];
decoration = {
shadow.enabled = false;
# drop_shadow = false;
blur = {
size = 8;
passes = 3;
};
# shadow_offset = "0 5";
# "col.shadow" = "rgba(00000099)";
rounding = 12;
};
misc = {
font_family = fontName;
disable_splash_rendering = true;
disable_hyprland_logo = true;
# vfr = true;
};
bezier = [
"easeOutQuad, 0.25, 0.46, 0.45, 0.94"
"easeOutExpo, 0.19, 1, 0.22, 1"
];
animation = [
"workspaces, 1, 3, easeOutExpo, slidefade 20%"
"windows, 1, 3, easeOutExpo, popin 80%"
"layers, 1, 2, easeOutExpo, fade"
];
plugin = [
{
overview = {
gapsIn = 12;
gapsOut = 24;
exitOnClick = true;
centerAligned = true;
showNewWorkspace = false;
showEmptyWorkspace = false;
affectStrut = false;
};
hyprexpo = {
columns = 3;
gap_size = 8;
#bg_col = "rgb(111111)";
workspace_method = "first 1"; # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = true; # laptop touchpad
gesture_fingers = 3; # 3 or 4
gesture_distance = 400; # how far is the "max"
gesture_positive = false; # positive = swipe down. Negative = swipe up.;
};
}
{
hy3 = {
autotile = true;
tab_first_window = false;
tabs = {
render_text = true;
height = 24;
padding = 8;
rounding = 8;
text_height = 14;
text_center = true;
text_font = fontName;
"col.active" = "0xff${colors.base00}";
"col.inactive" = "0xff${colors.base00}";
"col.urgent" = "0xff${colors.base00}";
"col.active.text" = "0xff${colors.base0D}";
"col.inactive.text" = "0xff${colors.base05}";
"col.urgent.text" = "0xff${colors.base09}";
"col.active.border" = "0xff${colors.base00}";
"col.inactive.border" = "0xff${colors.base00}";
"col.urgent.border" = "0xff${colors.base00}";
};
};
}
{
scroller = {
column_widths = "onethird onehalf twothirds one";
window_heights = "onethird onehalf twothirds one";
gesture_scroll_fingers = 3;
gesture_overview_fingers = 3;
jump_labels_font = fontName;
jump_labels_color = "0xff${colors.base0A}";
};
}
];
dwindle = {
force_split = 2;
default_split_ratio = 1.2;
};
master = {
mfact = 0.6;
};
"$mod" = "SUPER";
"$modShift" = "$mod SHIFT";
"$modCtrl" = "$mod CTRL";
"$modShiftCtrl" = "$mod SHIFT CTRL";
"$left" = "N";
"$down" = "E";
"$up" = "I";
"$right" = "O";
"$terminal" = "ghostty";
"$launcher" = launcher;
"$screenLocker" = lockscreen;
"$webBrowser" = "io.github.zen_browser.zen";
"$clipboardManager" = "copyq menu";
general = {
"col.active_border" = "0xff${colors.base0D}";
"col.inactive_border" = "0xff${colors.base03}";
gaps_in = 4;
gaps_out = 8;
border_size = 3;
allow_tearing = true;
layout = "dwindle";
};
group = {
"col.border_active" = "0xff${colors.base0D}";
"col.border_inactive" = "0xff${colors.base03}";
"col.border_locked_active" = "0xff${colors.base0A}";
"col.border_locked_inactive" = "0xff${colors.base0F}";
groupbar = {
height = 16;
rounding = 0;
indicator_height = 0;
gradient_rounding = 4;
font_size = 14;
gradients = true;
font_family = fontName;
"text_color" = "0xff${colors.base00}";
"col.active" = "0xff${colors.base0D}";
"col.inactive" = "0xff${colors.base03}";
};
};
binds.scroll_event_delay = 0;
cursor.persistent_warps = true;
bind = [
"$mod, Return, exec, $terminal"
"$mod, Space, exec, $launcher"
# "$modShift, Space, exec, $launcher"
"$modCtrl, Q, killactive"
"$modCtrl, M, fullscreen"
"$modCtrl, G, togglefloating"
"$mod, G, pin"
"$mod, T, togglegroup"
"$mod, period, changegroupactive, f"
"$mod, comma, changegroupactive, b"
"$modCtrl, period, movewindoworgroup, r"
"$modCtrl, comma, movewindoworgroup, l"
"$mod, Tab, cyclenext,"
"$modShift, Tab, cyclenext, prev"
"$mod, Tab, bringactivetotop,"
"$modShift, U, focusurgentorlast"
"$modCtrl, L, exec, $screenLocker"
"$modCtrl, B, exec, $webBrowser"
"$modCtrl, V, exec, $clipboardManager"
"$modCtrl, K, focuswindow, title:(Meet:.*)"
# ", Print, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -o -r -c '\#\#00000000')\" -t ppm - | ${pkgs.satty}/bin/satty --filename - --fullscreen --output-filename ${xdgPictures}/screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png"
", Print, exec, hyprshot -z -m region -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
"CTRL, Print, exec, hyprshot -z -m window -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
"SHIFT, Print, exec, hyprshot -z -m output -o ${xdgPictures}/screenshots -f screenshot-$(date '+%Y%m%d-%H:%M:%S').png"
## navigation
"$mod, $left, movefocus, l"
"$mod, $down, movefocus, d"
"$mod, $up, movefocus, u"
"$mod, $right, movefocus, r"
"$modShift, $left, workspace, e-1"
"$modShift, $right, workspace, e+1"
"$mod, left, movefocus, l"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
"$mod, right, movefocus, r"
"$modShift, W, focuscurrentorlast"
"$mod, mouse_down, workspace, e-1"
"$mod, mouse_up, workspace, e+1"
"$modShift, left, workspace, e-1"
"$modShift, right, workspace, e+1"
"$modCtrl, $left, movewindow, l"
"$modCtrl, $down, movewindow, d"
"$modCtrl, $up, movewindow, u"
"$modCtrl, $right, movewindow, r"
"$modCtrl, left, movewindow, l"
"$modCtrl, up, movewindow, u"
"$modCtrl, down, movewindow, d"
"$modCtrl, right, movewindow, r"
# workspaces
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, togglespecialworkspace"
"$modShiftCtrl, 1, movetoworkspace, 1"
"$modShiftCtrl, 2, movetoworkspace, 2"
"$modShiftCtrl, 3, movetoworkspace, 3"
"$modShiftCtrl, 4, movetoworkspace, 4"
"$modShiftCtrl, 5, movetoworkspace, 5"
"$modShiftCtrl, 6, movetoworkspace, 6"
"$modShiftCtrl, 7, movetoworkspace, 7"
"$modShiftCtrl, 8, movetoworkspace, 8"
"$modShiftCtrl, 9, movetoworkspace, 9"
"$modShiftCtrl, 0, movetoworkspace, special"
"$mod, Q, workspace, 1"
"$mod, W, workspace, 2"
"$mod, F, workspace, 3"
"$mod, P, workspace, 4"
"$mod, B, workspace, 5"
"$mod, J, workspace, 6"
"$mod, L, workspace, 7"
"$mod, U, workspace, 8"
"$mod, Y, workspace, 9"
"$mod, apostrophe, togglespecialworkspace"
"$modShiftCtrl, Q, movetoworkspace, 1"
"$modShiftCtrl, W, movetoworkspace, 2"
"$modShiftCtrl, F, movetoworkspace, 3"
"$modShiftCtrl, P, movetoworkspace, 4"
"$modShiftCtrl, B, movetoworkspace, 5"
"$modShiftCtrl, J, movetoworkspace, 6"
"$modShiftCtrl, L, movetoworkspace, 7"
"$modShiftCtrl, U, movetoworkspace, 8"
"$modShiftCtrl, Y, movetoworkspace, 9"
"$modShiftCtrl, apostrophe, movetoworkspace, special"
"$modShiftCtrl, $left, movetoworkspace, e-1"
"$modShiftCtrl, $right, movetoworkspace, e+1"
"$modShiftCtrl, left, movetoworkspace, e-1"
"$modShiftCtrl, right, movetoworkspace, e+1"
''$mod ALT, mouse_down, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.25}')"''
''$mod ALT, mouse_up, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.25}')"''
"$mod ALT, mouse:274, exec, hyprctl keyword cursor:zoom_factor 1" # middle wheel click
];
# binde = [
# "$mod, comma, resizeactive, -10 0"
# "$mod, period, resizeactive, 10 0"
# "$modShift, comma, resizeactive, 0 -10"
# "$modShift, period, resizeactive, 0 10"
# ];
bindl = [
"$mod, Escape, exec, hyprctl switchxkblayout all next"
", switch:on:Lid Switch, exec, hyprctl keyword monitor 'eDP-1, disable'"
", switch:off:Lid Switch, exec, hyprctl keyword monitor 'eDP-1, preferred, 1920x0, 1.2'"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPrev, exec, playerctl previous"
", XF86AudioNext, exec, playerctl next"
"$modShiftCtrl ALT, Q, exit"
];
binde = [
", XF86MonBrightnessUp, exec, brightnessctl s 5%+"
", XF86MonBrightnessDown, exec, brightnessctl s 5%-"
"ALT, XF86MonBrightnessUp, exec, brightnessctl s 5%+ -d ${keyboard}::kbd_backlight"
"ALT, XF86MonBrightnessDown, exec, brightnessctl s 5%- -d ${keyboard}::kbd_backlight"
", XF86KbdBrightnessUp, exec, brightnessctl s 5%+ -d ${keyboard}::kbd_backlight"
", XF86KbdBrightnessDown, exec, brightnessctl s 5%- -d ${keyboard}::kbd_backlight"
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
gestures = {
workspace_swipe = true;
workspace_swipe_fingers = 3;
workspace_swipe_distance = 300;
};
workspace = [
"1, defaultName:general"
"2, defaultName:web"
"3, defaultName:chat"
"4, defaultName:code"
"5, defaultName:uni"
"6, defaultName:games"
"7, defaultName:system"
"8, defaultName:media"
"9, defaultName:tray"
# "10, defaultName:"
];
windowrulev2 = [
## tray/misc utilities
# file picker
"float, class:xdg-desktop-portal-gtk"
"size <50% <90%, class:xdg-desktop-portal-gtk"
"center 1, class:xdg-desktop-portal-gtk"
# xdp-hyprland stream picker
"float, initialTitle:MainPicker"
# general apps
"float, class:(com.saivert.pwvucontrol)"
"float, class:(re.sonny.Junction)"
"float, class:(com.github.hluk.copyq)"
"float, class:(nm-connection-editor)"
"float, class:(.blueman-manager-wrapped)"
# telegram
"maximize, initialTitle:Медіапереглядач"
"noborder, title:TelegramDesktop"
"keepaspectratio, title:TelegramDesktop"
"noblur, title:TelegramDesktop"
"float, title:TelegramDesktop"
"pin, title:TelegramDesktop"
# any chromium-based
"noborder, title:Картинка в картинці"
"keepaspectratio, title:Картинка в картинці"
"noblur, title:Картинка в картинці"
"float, title:Картинка в картинці"
"pin, title:Картинка в картинці"
# and firefox
"noborder, title:Picture-in-Picture"
"keepaspectratio, title:Picture-in-Picture"
"noblur, title:Picture-in-Picture"
"float, title:Picture-in-Picture"
"pin, title:Picture-in-Picture"
# screenshot editor
"noanim, class:com.gabm.satty"
"float, class:com.gabm.satty"
"rounding 0, class:com.gabm.satty"
"size 100% 100%, class:com.gabm.satty"
"move 0 0, class:com.gabm.satty"
"pin, class:com.gabm.satty"
## games
"float, class:(com.mojang.minecraft.java-edition)"
"immediate, class:(com.mojang.minecraft.java-edition)"
# cs2
"immediate, class:(cs2)"
# deadlock
# "float, class:(steam_app_1422450)"
"fullscreen, class:(steam_app_1422450)"
"immediate, class:(steam_app_1422450)"
"immediate, initialTitle:(Ghostrunner)"
# dead by daylight
"immediate, class:deadbydaylight-egs-shipping.exe"
## workspace assignments
"workspace name:chat, class:org.telegram.desktop"
"workspace name:chat, class:org.signal.Signal"
"workspace name:chat, class:im.riot.Riot"
"workspace name:chat, class:WebCord"
"workspace name:games, class:com.heroicgameslauncher.hgl"
"workspace name:games, class:net.lutris.Lutris"
"workspace name:games, class:steam"
# "workspace name:game, class:"
];
};
extraConfig = ''
bind = $modShift, R, submap, resize
submap = resize
binde = , right, resizeactive, 10 0
binde = , left, resizeactive, -10 0
binde = , up, resizeactive, 0 -10
binde = , down, resizeactive, 0 10
binde = , $right, resizeactive, 10 0
binde = , $left, resizeactive, -10 0
binde = , $up, resizeactive, 0 -10
binde = , $down, resizeactive, 0 10
bind = , escape, submap, reset
submap = reset
'';
}

View File

@ -0,0 +1,23 @@
{
osConfig,
config,
inputs,
pkgs,
lib,
...
}: let
inherit (lib) mkIf mkDefault getExe;
inherit (config.lib.stylix) colors;
inherit (osConfig.networking) hostName;
ifLaptop = mkIf (hostName != "dunamis");
in {
imports = with inputs; [
walker.homeManagerModules.default
];
options = config.desktop.hyprland.enable {
# programs.fuzzel = import ./fuzzel {inherit config mkDefault;};
programs.walker = import ./walker {inherit config inputs pkgs;};
programs.waybar = import ./waybar {inherit colors config getExe ifLaptop pkgs;};
programs.hyprlock = import ./hyprlock {inherit config pkgs;};
};
}

View File

@ -0,0 +1,23 @@
{
config,
mkDefault,
}: {
enable = true;
settings = {
main = {
terminal = "$TERMINAL -e";
fields = "filename,name,generic,keywords,categories,exec";
dpi-aware = false;
width = 20;
horizontal-pad = 12;
vertical-pad = 12;
show-actions = true;
match-mode = "fuzzy";
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
};
border = mkDefault {
width = 3;
radius = 12;
};
};
}

View File

@ -0,0 +1,94 @@
{
config,
pkgs,
...
}: let
inherit (config.stylix) colors;
in {
enable = true;
settings = {
general = {
disable_loading_bar = true;
#grace = 300;
hide_cursor = true;
no_fade_in = false;
};
background = [
{
path = "screenshot";
blur_passes = 4;
blur_size = 8;
}
];
input-field = [
{
size = "274, 50";
rounding = 12;
outline_thickness = 3;
position = "0, 0";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_family = "${config.stylix.fonts.serif.name}";
font_color = "rgb(${colors.base05})";
inner_color = "rgb(${colors.base00})";
outer_color = "rgb(${colors.base0D})";
check_color = "rgb(${colors.base0A})";
fail_color = "rgb(${colors.base08})";
placeholder_text = "locked...";
fail_text = "wrong";
shadow_passes = 0;
}
];
shape = [
{
rounding = 12;
#border_size = 3;
size = "274, 50";
color = "rgb(${colors.base00})";
border_color = "rgb(${colors.base0D})";
position = "0, 60";
halign = "center";
valign = "center";
}
{
rounding = 12;
#border_size = 3;
size = "274, 50";
color = "rgb(${colors.base00})";
border_color = "rgb(${colors.base0D})";
position = "0, -60";
halign = "center";
valign = "center";
}
];
label = [
{
monitor = "";
text = "$LAYOUT"; #"cmd[update:1000] ${pkgs.uutils-coreutils-noprefix}/bin/echo $(${pkgs.uutils-coreutils-noprefix}/bin/date +%H:%M:%S)";
text_align = "center";
font_size = 16;
font_family = "${config.stylix.fonts.serif.name}";
outer_color = "rgb(${colors.base00})";
color = "rgb(${colors.base05})";
position = "0, 60";
halign = "center";
valign = "center";
}
{
monitor = "";
text = "cmd[update:1000] ${pkgs.uutils-coreutils-noprefix}/bin/echo $(${pkgs.uutils-coreutils-noprefix}/bin/date +'%m/%d %a %T')";
text_align = "center";
font_size = 16;
font_family = "${config.stylix.fonts.serif.name}";
outer_color = "rgb(${colors.base00})";
color = "rgb(${colors.base05})";
position = "0, -60";
halign = "center";
valign = "center";
}
];
};
}

View File

@ -0,0 +1,307 @@
{
config,
pkgs,
...
}: {
enable = true;
package = pkgs.walker;
runAsService = true;
config = {
activation_mode.labels = "neiotsra";
as_window = false;
disabled = [
"bookmarks"
"clipboard"
"custom_commands"
"translation"
"websearch"
];
builtins = {
applications = {
actions.enabled = true;
context_aware = true;
name = "applications";
placeholder = "Applications";
prioritize_new = true;
refresh = true;
show_generic = true;
show_icon_when_single = true;
show_sub_when_single = true;
weight = 10;
};
calc = {
icon = "accessories-calculator";
min_chars = 4;
name = "calc";
placeholder = "Calculator";
weight = 5;
};
clipboard = {
image_height = 300;
max_entries = 10;
name = "clipboard";
placeholder = "Clipboard";
switcher_only = true;
weight = 5;
};
commands = {
icon = "utilities-terminal";
name = "commands";
placeholder = "Commands";
switcher_only = true;
weight = 8;
};
custom_commands = {
icon = "utilities-terminal";
name = "custom_commands";
placeholder = "Custom Commands";
weight = 5;
};
dmenu = {
name = "dmenu";
placeholder = "Dmenu";
switcher_only = true;
weight = 5;
};
emojis = {
history = true;
name = "emojis";
placeholder = "Emojis";
switcher_only = true;
typeahead = true;
weight = 5;
};
finder = {
concurrency = 8;
icon = "folder";
ignore_gitignore = true;
name = "finder";
placeholder = "Finder";
refresh = true;
switcher_only = true;
weight = 5;
};
runner = {
generic_entry = false;
history = true;
icon = "utilities-terminal";
name = "runner";
placeholder = "Runner";
refresh = true;
typeahead = true;
weight = 5;
};
ssh = {
history = true;
icon = "preferences-system-network";
name = "ssh";
placeholder = "SSH";
refresh = true;
switcher_only = true;
weight = 5;
};
switcher = {
name = "switcher";
placeholder = "Switcher";
prefix = "/";
weight = 5;
};
websearch = {
icon = "applications-internet";
name = "websearch";
placeholder = "Websearch";
weight = 5;
};
windows = {
icon = "view-restore";
name = "windows";
placeholder = "Windows";
weight = 10;
};
};
disable_click_to_close = false;
force_keyboard_focus = true;
list = {
max_entries = 50;
show_initial_entries = true;
single_click = true;
};
search = {
delay = 0;
force_keyboard_focus = true;
history = true;
placeholder = "Search...";
};
};
theme = {
layout = {
ui = {
anchors = {
bottom = false;
left = false;
right = false;
top = false;
};
window = {
h_align = "center";
v_align = "center";
box = {
width = 450;
h_align = "center";
v_align = "center";
# spacing = 12;
orientation = "vertical";
search = {
margins = {
start = 8;
top = 8;
end = 8;
bottom = 0;
};
h_align = "top";
};
scroll = {
overlay_scrolling = true;
list = {
margins = {
bottom = 8;
top = 4;
start = 8;
end = 8;
};
item = {
icon.theme = "${config.gtk.iconTheme.name}";
spacing = 4;
activation_label = {
x_align = 0.5;
y_align = 0.5;
width = 32;
};
text = {
h_align = "start";
h_expand = true;
revert = true;
wrap = true;
};
};
};
};
};
};
};
};
style = let
inherit (config.lib.stylix) colors;
in ''
@define-color base00 #${colors.base00};
@define-color base01 #${colors.base01};
@define-color base02 #${colors.base02};
@define-color base03 #${colors.base03};
@define-color base04 #${colors.base04};
@define-color base05 #${colors.base05};
@define-color base06 #${colors.base06};
@define-color base07 #${colors.base07};
@define-color base08 #${colors.base08};
@define-color base09 #${colors.base09};
@define-color base0A #${colors.base0A};
@define-color base0B #${colors.base0B};
@define-color base0C #${colors.base0C};
@define-color base0D #${colors.base0D};
@define-color base0E #${colors.base0E};
@define-color base0F #${colors.base0F};
#window,
#box,
#search,
#password,
#input,
#typeahead,
#spinner,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#sub,
#activationlabel {
all: unset;
}
#window {
background: @base00;
color: @base05;
border-radius: 20px;
border: 3px solid @base0D;
}
#box {
background: @base00;
}
#search {
background: @base01;
border-radius: 12px 12px 6px 6px;
padding: 8px;
}
#password,
#input,
#typeahead {
background: none;
box-shadow: none;
border-radius: 12px;
}
#input > *:first-child,
#typeahead > *:first-child {
margin-right: 12px;
border-radius: 0px;
}
#typeahead {
color: @base05;
}
#input placeholder {
opacity: 0.5;
}
#list {
padding: 8px;
border-radius: 6px 6px 12px 12px;
background: @base01;
}
child {
box-shadow: none;
}
child:selected,
child:hover {
box-shadow: none;
border-radius: 8px;
background: @base02;
}
#item {
padding: 4px;
}
#sub {
font-size: smaller;
opacity: 0.5;
}
#activationlabel {
opacity: 0.5;
}
.activation #activationlabel {
opacity: 1;
color: @base05;
}
'';
};
}

View File

@ -0,0 +1,331 @@
{
colors,
config,
getExe,
ifLaptop,
pkgs,
...
}: {
enable = true;
systemd = {
enable = true;
target = "graphical-session.target";
};
settings = {
bar-0 = {
# layer = "top";
position = "bottom";
height = 24;
spacing = 6;
# margin-left = 33 + 3;
# margin-right = 33 + 3;
margin-left = 8;
margin-right = 8;
margin-bottom = 8;
reload_style_on_change = true;
modules-left = [
"hyprland/language"
"hyprland/workspaces"
"wlr/taskbar"
];
modules-center = ["clock"];
modules-right = [
(ifLaptop "group/laptop")
"wireplumber"
"tray"
"privacy"
(ifLaptop "power-profiles-daemon")
"idle_inhibitor"
"custom/notification"
];
"niri/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
general = "󰘧";
web = "󰖟";
chat = "󰻞";
code = "󰅩";
uni = "󱆀";
games = "󰺶";
system = "󰢻";
media = "󱜐";
tray = "󱊖";
};
};
"niri/language" = {
format = "{}";
format-en = "🇺🇸";
format-uk = "🇺🇦";
};
"custom/separator" = {
format = "󰝠";
interval = "once";
tooltip = false;
};
"group/laptop" = {
orientation = "inherit";
modules = [
"battery"
"backlight"
];
};
"backlight" = {
format = "{icon} {percent}%";
format-icons = [
"󰃚"
"󰃛"
"󰃜"
"󰃝"
"󰃞"
"󰃟"
"󰃠"
];
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "󰅶";
deactivated = "󰾪";
};
};
"tray" = {
icon-size = 20;
spacing = 6;
};
"clock" = {
interval = 1;
format = "{:%H:%M:%S}";
tooltip-format = "{:%d.%m.%Y}";
};
battery = {
states = {
good = 95;
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-full = "󱟢 {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󰚥 {capacity}%";
format-alt = "{icon} {time}";
format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
};
mpris = {
format = "{player_icon} {dynamic}";
format-paused = "{status_icon} <i>{dynamic}</i>";
playing-len = 30;
playing-paused = 30;
player-icons = {
default = "";
mpv = "🎵";
};
status-icons = {paused = "";};
};
"upower" = {
icon-size = 16;
format = "{percentage}";
hide-if-empty = true;
tooltip = true;
tooltip-spacing = 20;
};
"power-profiles-daemon" = {
format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true;
format-icons = {
default = "󱡮";
performance = "󱡮";
balanced = "";
power-saver = "";
};
};
"wireplumber" = {
scroll-step = 3;
format = "{icon} {volume}%";
format-muted = "󰖁";
format-icons = ["󰕿" "󰖀" "󰕾"];
on-click = getExe pkgs.pwvucontrol;
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
};
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "󱅫";
none = "󰂚";
dnd-notification = "󰂛";
dnd-none = "󰂛";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
"privacy" = {
icon-spacing = 2;
icon-size = 16;
transition-duration = 250;
screenshare = {
type = "screenshare";
tooltip = true;
tooltip-icon-size = 24;
};
audio-in = {
type = "audio-in";
tooltip = true;
tooltip-icon-size = 24;
};
};
"wlr/taskbar" = {
format = "{icon}";
icon-size = 20;
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
tooltip-format = "{title}";
on-click = "activate";
};
};
};
style = ''
@define-color base00 #${colors.base00};
@define-color base01 #${colors.base01};
@define-color base02 #${colors.base02};
@define-color base03 #${colors.base03};
@define-color base04 #${colors.base04};
@define-color base05 #${colors.base05};
@define-color base06 #${colors.base06};
@define-color base07 #${colors.base07};
@define-color base08 #${colors.base08};
@define-color base09 #${colors.base09};
@define-color base0A #${colors.base0A};
@define-color base0B #${colors.base0B};
@define-color base0C #${colors.base0C};
@define-color base0D #${colors.base0D};
@define-color base0E #${colors.base0E};
@define-color base0F #${colors.base0F};
* {
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome;
font-weight: 500;
font-size: 100%;
}
window#waybar {
background-color: transparent;
color: @base05;
}
.modules-center {
background-color: transparent;
}
.mpris.stopped {
background-color: transparent;
}
.modules-left,
.modules-center,
.modules-right {
/* border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
border-top-left-radius: 0px;
border-top-right-radius: 0px; */
background-color: @base00;
border-radius: 24px;
border: 3px solid @base0D;
color: @base05;
padding: 0 0.4em;
}
tooltip {
background: @base01;
border: 1px solid @base0E;
}
tooltip label {
color: @base05;
}
button {
box-shadow: inset 0 -3px transparent;
border-radius: 16px;
}
button:hover {
background: inherit;
box-shadow: inset 0 -3px transparent;
}
#mode {
background-color: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 -3px @base05;
}
#battery,
#backlight,
/* #workspaces,
#taskbar,
#privacy, */
#taskbar button,
#language,
#clock,
#battery,
#backlight,
#wireplumber,
#workspaces button,
#custom-notification,
#idle_inhibitor,
#power-profiles-daemon,
#privacy-item,
#custom-separator {
padding: 0 0.3em;
}
#tray button {
padding: 0 0.3em;
margin: 0 0.2em;
}
#workspaces button.active {
color: @base0D;
}
#taskbar button:hover {
box-shadow: transparent;
}
#taskbar.empty,
window#empty {
background-color: transparent;
}
#battery.critical:not(.charging) {
color: @base09;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon.performance {
color: @base0D;
}
#power-profiles-daemon.balanced {
color: @base0B;
}
#power-profiles-daemon.power-saver {
color: @base0A;
}
label:focus {
background-color: #000000;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @base08;
}
#privacy-item.screenshare {
color: @base0C;
}
#privacy-item.audio-in {
color: @base0E;
}
'';
}

View File

@ -0,0 +1,65 @@
{
# getExe,
perSystem,
# pkgs,
lockscreen,
...
}: {
swaync = import ./swaync;
network-manager-applet.enable = true;
blueman-applet.enable = true;
playerctld.enable = true;
wpaperd.enable = true;
hyprpaper.enable = true;
copyq = {
enable = true;
package = perSystem.nixpkgs-stable.copyq;
};
gnome-keyring = {
enable = true;
components = ["secrets"];
};
gammastep = {
enable = true;
provider = "manual";
latitude = 49.6;
longitude = 36.1;
tray = true;
temperature = {
day = 6500;
night = 3000;
};
};
swayosd = {
enable = true;
topMargin = 0.8;
};
udiskie = {
enable = true;
automount = false;
notify = true;
tray = "auto";
};
hypridle = {
enable = true;
settings = {
general = {
before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
lock_cmd = "pidof hyprlock || hyprlock";
# unlock_cmd = "loginctl unlock-session";
};
listener = [
{
timeout = 600;
on-timeout = "pidof ${lockscreen} || ${lockscreen}";
}
{
timeout = 601;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
};
}

View File

@ -0,0 +1,177 @@
{
enable = true;
settings = {
cssPriority = "user";
image-visibility = "when-available";
keyboard-shortcut = true;
relative-timestamps = true;
timeout = 5;
timeout-low = 5;
timeout-critical = 0;
script-fail-notify = true;
transition-time = 200;
# Layer settings
layer-shell = true;
layer = "overlay";
control-center-layer = "overlay";
# Notification settings
positionX = "right";
positionY = "top";
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 32;
notification-body-image-height = 100;
notification-body-image-width = 200;
notification-window-width = 400;
# Control center settings
control-center-positionX = "right";
control-center-positionY = "top";
control-center-width = 500;
control-center-exclusive-zone = true;
fit-to-screen = true;
hide-on-action = true;
hide-on-clear = false;
# Widget settings
widgets = [
"title"
"dnd"
"notifications"
"mpris"
];
widget-config = {
title = {
text = "Notifications";
clear-all-button = true;
button-text = "Clear All";
};
dnd = {
text = "Do Not Disturb";
};
mpris = {
image-size = 96;
image-radius = 12;
blur = true;
};
};
};
style = ''
/*** Global ***/
progress,
progressbar,
trough {
border-radius: 16px;
}
.app-icon,
.image {
-gtk-icon-effect: none;
}
.notification-action {
border-radius: 12px;
margin: 0.5rem;
}
.close-button {
margin: 24px;
padding: 0.2rem;
border-radius: 16px;
}
/*** Notifications ***/
.notification-group.collapsed
.notification-row:not(:last-child)
.notification-action,
.notification-group.collapsed
.notification-row:not(:last-child)
.notification-default-action {
opacity: 0;
}
.trough {
margin: 4px;
border-radius: 7px;
}
.notification,
.notification.low,
.notification.normal,
.notification.critical,
.control-center {
margin: 16px;
border-radius: 7px;
}
.floating-notifications,
.notification-content {
border-radius: 7px;
}
.control-center-list {
background: transparent;
}
/*** Widgets ***/
/* Title widget */
.widget-title {
margin: 0.5rem;
}
.widget-title > label {
font-weight: bold;
}
.widget-title > button {
border-radius: 16px;
padding: 0.5rem;
}
/* DND Widget */
.widget-dnd {
margin: 0.5rem;
}
.widget-dnd > label {
font-weight: bold;
}
.widget-dnd > switch {
border-radius: 16px;
}
.widget-dnd > switch slider {
border-radius: 16px;
padding: 0.25rem;
}
/* Mpris widget */
.widget-mpris .widget-mpris-player {
border-radius: 16px;
margin: 0.5rem;
padding: 0.5rem;
}
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
border-radius: 16px;
}
.widget-mpris .widget-mpris-player .widget-mpris-title {
font-weight: bold;
}
.widget-mpris .widget-mpris-player .widget-mpris-subtitle {
font-weight: normal;
}
.widget-mpris .widget-mpris-player > box > button {
border: 1px solid transparent;
border-radius: 16px;
padding: 0.25rem;
}
'';
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,368 @@
{
config,
osConfig,
launcher,
lockscreen,
...
}: let
inherit (config.lib.stylix) colors;
inherit (config.stylix) cursor;
inherit (osConfig.networking) hostName;
keyboard =
if hostName == "eldrid"
then "chromeos"
else "platform";
xdgPics =
config.xdg.userDirs.pictures;
in {
target = "niri/config.kdl";
text = let
arrows = {
left = "Left";
down = "Down";
up = "Up";
right = "Right";
};
homerow-arrows = {
left = "n";
down = "e";
up = "i";
right = "o";
};
letters = {
first = "Q";
second = "W";
third = "F";
fourth = "P";
fifth = "B";
sixth = "J";
seventh = "L";
eighth = "U";
ninth = "Y";
};
numbers = {
first = "1";
second = "2";
third = "3";
fourth = "4";
fifth = "5";
sixth = "6";
seventh = "7";
eighth = "8";
ninth = "9";
};
genArrowNavigation = keys: ''
Mod+${keys.left} { focus-column-left; }
Mod+${keys.down} { focus-window-or-workspace-down; }
Mod+${keys.up} { focus-window-or-workspace-up; }
Mod+${keys.right} { focus-column-right; }
Mod+Ctrl+${keys.left} { move-column-left; }
Mod+Ctrl+${keys.down} { move-window-down-or-to-workspace-down; }
Mod+Ctrl+${keys.up} { move-window-up-or-to-workspace-up; }
Mod+Ctrl+${keys.right} { move-column-right; }
Mod+Shift+${keys.left} { focus-monitor-left; }
Mod+Shift+${keys.down} { focus-monitor-down; }
Mod+Shift+${keys.up} { focus-monitor-up; }
Mod+Shift+${keys.right} { focus-monitor-right; }
Mod+Shift+Ctrl+${keys.left} { move-column-to-monitor-left; }
Mod+Shift+Ctrl+${keys.down} { move-column-to-monitor-down; }
Mod+Shift+Ctrl+${keys.up} { move-column-to-monitor-up; }
Mod+Shift+Ctrl+${keys.right} { move-column-to-monitor-right; }
'';
genWorkspacesNavigation = keys: ''
Mod+${keys.first} { focus-workspace 1; }
Mod+${keys.second} { focus-workspace 2; }
Mod+${keys.third} { focus-workspace 3; }
Mod+${keys.fourth} { focus-workspace 4; }
Mod+${keys.fifth} { focus-workspace 5; }
Mod+${keys.sixth} { focus-workspace 6; }
Mod+${keys.seventh} { focus-workspace 7; }
Mod+${keys.eighth} { focus-workspace 8; }
Mod+${keys.ninth} { focus-workspace 9; }
Mod+Ctrl+Shift+${keys.first} { move-column-to-workspace 1; }
Mod+Ctrl+Shift+${keys.second} { move-column-to-workspace 2; }
Mod+Ctrl+Shift+${keys.third} { move-column-to-workspace 3; }
Mod+Ctrl+Shift+${keys.fourth} { move-column-to-workspace 4; }
Mod+Ctrl+Shift+${keys.fifth} { move-column-to-workspace 5; }
Mod+Ctrl+Shift+${keys.sixth} { move-column-to-workspace 6; }
Mod+Ctrl+Shift+${keys.seventh} { move-column-to-workspace 7; }
Mod+Ctrl+Shift+${keys.eighth} { move-column-to-workspace 8; }
Mod+Ctrl+Shift+${keys.ninth} { move-column-to-workspace 9; }
'';
in ''
environment {
DISPLAY ":123"
CLUTTER_BACKEND "wayland"
GDK_BACKEND "wayland"
MOZ_ENABLE_WAYLAND "1"
MOZ_WEBRENDER "1"
QT_QPA_PLATFORM "wayland"
SDL_VIDEODRIVER "wayland"
XDG_SESSION_TYPE "wayland"
}
input {
keyboard {
xkb {
layout "us,ua"
variant "colemak_dh_ortho,"
}
repeat-delay 200
repeat-rate 50
track-layout "window"
}
touchpad {
tap
natural-scroll
accel-speed 0.2
accel-profile "flat"
}
mouse {
accel-speed 0.0
accel-profile "flat"
}
touch {
map-to-output "eDP-1"
}
warp-mouse-to-focus
workspace-auto-back-and-forth
}
cursor {
xcursor-theme "${cursor.name}"
xcursor-size ${toString cursor.size}
}
hotkey-overlay {
skip-at-startup
}
prefer-no-csd
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png"
animations {
slowdown 0.5
}
layout {
gaps 3
// background-color "#${colors.base02}"
background-color "transparent"
center-focused-column "never" // "on-overflow"
default-column-width { proportion 1.0; }
preset-column-widths {
proportion 0.33333
proportion 0.66667
}
struts {
left 36
right 36
}
tab-indicator {
active-color "#${colors.base04}"
inactive-color "#${colors.base03}"
corner-radius 6
gap 3
gaps-between-tabs 3
// length total-proportion=0.3
place-within-column
position "left"
width 6
}
focus-ring {
width 1
active-color "#${colors.base0D}"
inactive-color "#${colors.base03}"
urgent-color "#${colors.base08}"
}
border {
off
width 1
active-color "#${colors.base0D}"
inactive-color "#${colors.base03}"
urgent-color "#${colors.base08}"
}
}
window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
window-rule {
match is-window-cast-target=true
focus-ring {
width 3
active-color "#${colors.base0F}"
inactive-color "#${colors.base03}"
}
border {
width 3
active-color "#${colors.base0F}"
inactive-color "#${colors.base03}"
}
}
layer-rule {
match namespace="^wpaperd.*$"
place-within-backdrop true
}
overview {
workspace-shadow {
off
}
}
layer-rule {
match namespace="waybar"
match at-startup=true
opacity 0.99 // fixes the black fill
}
window-rule {
match title="Картинка в картинці"
match title="Picture-in-Picture"
open-floating true
}
window-rule {
match app-id="org.wezfurlong.wezterm"
match app-id="com.mitchellh.ghostty"
default-column-width { proportion 1.0; }
}
window-rule {
match app-id="re.sonny.Junction"
match app-id="com.github.hluk.copyq"
open-floating true
open-focused true
}
window-rule {
match app-id="com.mitchellh.ghostty"
draw-border-with-background false
}
window-rule {
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
match app-id=r#"^org\.gnome\.World\.Secrets$"#
match app-id=r#"^Bitwarden$"#
match app-id="io.github.kukuruzka165.materialgram"
match app-id="org.telegram.desktop"
match app-id="org.signal.Signal"
match app-id="WebCord"
// block-out-from "screen-capture"
block-out-from "screencast"
}
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Tab { focus-workspace-previous; }
Mod+C { center-column; }
Mod+M { maximize-column; }
Mod+H { set-column-width "50%"; }
Mod+T { set-column-width "33%"; }
Mod+Shift+T { set-column-width "67%"; }
Mod+V { toggle-column-tabbed-display; }
Mod+G { switch-focus-between-floating-and-tiling; }
Mod+X { spawn "pkill" "-SIGUSR1" "waybar"; } // hide/show waybar
Mod+Ctrl+Comma { consume-or-expel-window-left; }
Mod+Ctrl+Period { consume-or-expel-window-right; }
Mod+Ctrl+Q { close-window; }
Mod+Ctrl+M { fullscreen-window; }
Mod+Ctrl+G { toggle-window-floating; }
Mod+Ctrl+Shift+M { toggle-windowed-fullscreen; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Comma { set-column-width "-10%"; }
Mod+Period { set-column-width "+10%"; }
Mod+Shift+Comma { set-window-height "-10%"; }
Mod+Shift+Period { set-window-height "+10%"; }
Mod+Space { switch-layout "next"; }
Mod+Ctrl+Space repeat=false { toggle-overview; }
Mod+Return repeat=false { spawn "sh" "-c" "$TERMINAL"; }
Mod+BackSpace repeat=false { spawn "${launcher}"; }
Mod+A repeat=false { spawn "${launcher}"; }
Mod+Ctrl+L repeat=false { spawn "${lockscreen}"; }
Mod+Ctrl+V repeat=false { spawn "copyq" "menu"; }
Mod+Shift+W repeat=false { spawn "walker" "-m" "windows"; }
Mod+Ctrl+Shift+BracketLeft { quit; }
Mod+Ctrl+Shift+BracketRight { power-off-monitors; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Shift+Print { screenshot-window; }
// Caps_Lock { spawn "swayosd-client" "--caps-lock"; }
// XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"; }
// XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%-"; }
// XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
// XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume" "raise"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume" "lower"; }
XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn "swayosd-client" "--input-volume" "mute-toggle"; }
XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
XF86AudioPause allow-when-locked=true { spawn "playerctl" "pause"; }
XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
XF86ScreenSaver allow-when-locked=true { spawn "${lockscreen}"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-"; }
Alt+XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+" "-d" "${keyboard}::kbd_backlight"; }
Alt+XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-" "-d" "${keyboard}::kbd_backlight"; }
XF86KbdBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+" "-d" "${keyboard}::kbd_backlight"; }
XF86KbdBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-" "-d" "${keyboard}::kbd_backlight"; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Next { focus-workspace-down; }
Mod+Prior { focus-workspace-up; }
Mod+Ctrl+Next { move-column-to-workspace-down; }
Mod+Ctrl+Prior { move-column-to-workspace-up; }
Mod+Shift+Next { move-workspace-down; }
Mod+Shift+Prior { move-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
${genArrowNavigation arrows}
${genArrowNavigation homerow-arrows}
${genWorkspacesNavigation letters}
${genWorkspacesNavigation numbers}
}
'';
}

View File

@ -0,0 +1,23 @@
{
config,
lib,
}: {
enable = true;
settings = {
main = {
terminal = "$TERMINAL -e";
fields = "filename,name,generic,keywords,categories,exec";
dpi-aware = false;
width = 20;
horizontal-pad = 12;
vertical-pad = 12;
show-actions = true;
match-mode = "fuzzy";
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
};
border = lib.mkDefault {
width = 3;
radius = 12;
};
};
}

View File

@ -0,0 +1,305 @@
{
config,
pkgs,
...
}: {
enable = true;
package = pkgs.walker;
runAsService = true;
config = {
activation_mode.labels = "neiotsra";
as_window = false;
disabled = [
"bookmarks"
"clipboard"
"custom_commands"
"translation"
"websearch"
];
builtins = {
applications = {
actions.enabled = true;
context_aware = true;
name = "applications";
placeholder = "Applications";
prioritize_new = true;
refresh = true;
show_generic = true;
show_icon_when_single = true;
show_sub_when_single = true;
weight = 10;
};
calc = {
icon = "accessories-calculator";
min_chars = 4;
name = "calc";
placeholder = "Calculator";
weight = 5;
};
clipboard = {
image_height = 300;
max_entries = 10;
name = "clipboard";
placeholder = "Clipboard";
switcher_only = true;
weight = 5;
};
commands = {
icon = "utilities-terminal";
name = "commands";
placeholder = "Commands";
switcher_only = true;
weight = 8;
};
custom_commands = {
icon = "utilities-terminal";
name = "custom_commands";
placeholder = "Custom Commands";
weight = 5;
};
dmenu = {
name = "dmenu";
placeholder = "Dmenu";
switcher_only = true;
weight = 5;
};
emojis = {
history = true;
name = "emojis";
placeholder = "Emojis";
switcher_only = true;
typeahead = true;
weight = 5;
};
finder = {
concurrency = 8;
icon = "folder";
ignore_gitignore = true;
name = "finder";
placeholder = "Finder";
refresh = true;
switcher_only = true;
weight = 5;
};
runner = {
generic_entry = false;
history = true;
icon = "utilities-terminal";
name = "runner";
placeholder = "Runner";
refresh = true;
typeahead = true;
weight = 5;
};
ssh = {
history = true;
icon = "preferences-system-network";
name = "ssh";
placeholder = "SSH";
refresh = true;
switcher_only = true;
weight = 5;
};
switcher = {
name = "switcher";
placeholder = "Switcher";
prefix = "/";
weight = 5;
};
websearch = {
icon = "applications-internet";
name = "websearch";
placeholder = "Websearch";
weight = 5;
};
windows = {
icon = "view-restore";
name = "windows";
placeholder = "Windows";
weight = 10;
};
};
disable_click_to_close = false;
force_keyboard_focus = true;
list = {
max_entries = 50;
show_initial_entries = true;
single_click = true;
};
search = {
delay = 0;
force_keyboard_focus = true;
history = true;
placeholder = "Search...";
};
};
theme = {
layout = {
ui = {
anchors = {
bottom = false;
left = false;
right = false;
top = false;
};
window = {
h_align = "center";
v_align = "center";
box = {
h_align = "center";
v_align = "center";
orientation = "vertical";
search = {
h_align = "top";
margins = {
start = 3;
top = 3;
end = 3;
bottom = 3;
};
};
scroll = {
overlay_scrolling = true;
list = {
margins = {
bottom = 3;
top = 0;
start = 3;
end = 3;
};
item = {
icon.theme = "${config.gtk.iconTheme.name}";
spacing = 3;
activation_label = {
x_align = 0.5;
y_align = 0.5;
width = 32;
};
text = {
h_align = "start";
h_expand = true;
revert = true;
wrap = true;
};
};
};
};
};
};
};
};
style = let
inherit (config.lib.stylix) colors;
in ''
@define-color base00 #${colors.base00};
@define-color base01 #${colors.base01};
@define-color base02 #${colors.base02};
@define-color base03 #${colors.base03};
@define-color base04 #${colors.base04};
@define-color base05 #${colors.base05};
@define-color base06 #${colors.base06};
@define-color base07 #${colors.base07};
@define-color base08 #${colors.base08};
@define-color base09 #${colors.base09};
@define-color base0A #${colors.base0A};
@define-color base0B #${colors.base0B};
@define-color base0C #${colors.base0C};
@define-color base0D #${colors.base0D};
@define-color base0E #${colors.base0E};
@define-color base0F #${colors.base0F};
#window,
#box,
#search,
#password,
#input,
#typeahead,
#spinner,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#sub,
#activationlabel {
all: unset;
}
#window {
background: @base00;
color: @base05;
border-radius: 12px;
border: 1px solid @base0D;
}
#box {
background: @base00;
}
#search {
background: @base01;
border-radius: 9px;
padding: 8px;
}
#password,
#input,
#typeahead {
background: none;
box-shadow: none;
border-radius: 6px;
}
#input > *:first-child,
#typeahead > *:first-child {
margin-right: 3px;
border-radius: 0px;
}
#typeahead {
color: @base05;
}
#input placeholder {
opacity: 0.5;
}
#list {
padding: 3px;
border-radius: 9px;
background: @base01;
}
child {
box-shadow: none;
}
child:selected,
child:hover {
box-shadow: none;
border-radius: 6px;
background: @base02;
}
#item {
padding: 4px;
}
#sub {
font-size: smaller;
opacity: 0.5;
}
#activationlabel {
opacity: 0.5;
}
.activation #activationlabel {
opacity: 1;
color: @base05;
}
'';
};
}

View File

@ -0,0 +1,537 @@
{
config,
lib,
osConfig,
pkgs,
launcher,
...
}: let
inherit (config.lib.stylix) colors;
ifLaptop = lib.mkIf (osConfig.networking.hostName != "dunamis");
in {
enable = true;
systemd = {
enable = true;
target = "graphical-session.target";
};
settings.bottom = {
position = "bottom";
height = 33;
spacing = 0;
# margin-left = 36 + 3;
# margin-right = 36 + 3;
# margin-bottom = 3;
modules-left = [
"custom/launcher"
"wlr/taskbar"
# "privacy"
];
modules-right = [
"niri/workspaces"
"niri/language"
];
"niri/workspaces" = {
format = "{index}";
};
"niri/language" = {
format = "{}";
format-en = "🇺🇸";
format-uk = "🇺🇦";
};
"group/laptop" = {
orientation = "inherit";
modules = [
"backlight"
"battery"
"power-profiles-daemon"
];
};
backlight = {
format = "{percent}% {icon}";
format-icons = [
"󰃚"
"󰃛"
"󰃜"
"󰃝"
"󰃞"
"󰃟"
"󰃠"
];
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "󰅶";
deactivated = "󰾪";
};
};
tray = {
icon-size = 16;
spacing = 6;
};
clock = {
interval = 1;
format = "{:%R}";
tooltip = true;
tooltip-format = "{:%B %d, %A}";
};
battery = {
states = {
good = 95;
warning = 30;
critical = 15;
};
format = "{capacity}% {icon}";
format-full = "{capacity}% 󱟢";
format-charging = "{capacity}% 󰂄";
format-plugged = "{capacity}% 󰚥";
format-alt = "{icon} {time}";
format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
};
memory = {
format = "{used:0.1f}G ";
tooltip-format = ''
RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
};
network = {
format = "{bandwidthDownBits} 󰇚 | {bandwidthUpBits} 󰕒";
interval = 3;
tooltip = false;
};
cpu = {
format = "{usage}% 󰍛";
interval = 3;
};
upower = {
icon-size = 16;
format = "{percentage}";
hide-if-empty = true;
tooltip = true;
tooltip-spacing = 20;
};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true;
format-icons = {
default = "󱡮";
performance = "󱡮";
balanced = "";
power-saver = "";
};
};
wireplumber = {
scroll-step = 3;
format = "{volume}% {icon}";
format-muted = "󰖁";
format-icons = ["󰕿" "󰖀" "󰕾"];
on-click = lib.getExe pkgs.pwvucontrol;
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
};
"custom/launcher" = {
format = "";
on-click = launcher;
tooltip = false;
};
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "󱅫";
none = "󰂚";
dnd-notification = "󰂛";
dnd-none = "󰂛";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
"privacy" = {
icon-spacing = 0;
icon-size = 16;
transition-duration = 250;
screenshare = {
type = "screenshare";
tooltip = true;
tooltip-icon-size = 24;
};
audio-in = {
type = "audio-in";
tooltip = true;
tooltip-icon-size = 24;
};
};
"wlr/taskbar" = {
format = "{icon} {name}";
icon-size = 16;
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
tooltip-format = "{title}";
on-click = "activate";
};
};
settings.top = {
position = "top";
height = 33;
spacing = 0;
# margin-left = 36 + 3;
# margin-right = 36 + 3;
# margin-top = 3;
modules-left = [
"custom/notification"
"tray"
];
modules-center = ["clock"];
modules-right = [
"privacy"
"network"
"cpu"
"memory"
"wireplumber"
(ifLaptop "group/laptop")
# "tray"
"idle_inhibitor"
];
"niri/workspaces" = {
format = "{index}";
};
"niri/language" = {
format = "{}";
format-en = "🇺🇸";
format-uk = "🇺🇦";
};
"group/laptop" = {
orientation = "inherit";
modules = [
"backlight"
"battery"
"power-profiles-daemon"
];
};
backlight = {
format = "{percent}% {icon}";
format-icons = [
"󰃚"
"󰃛"
"󰃜"
"󰃝"
"󰃞"
"󰃟"
"󰃠"
];
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = "󰅶";
deactivated = "󰾪";
};
};
tray = {
icon-size = 16;
spacing = 6;
};
clock = {
interval = 1;
format = "{:%R}";
tooltip = true;
tooltip-format = "{:%B %d, %A}";
};
battery = {
states = {
good = 95;
warning = 30;
critical = 15;
};
format = "{capacity}% {icon}";
format-full = "{capacity}% 󱟢";
format-charging = "{capacity}% 󰂄";
format-plugged = "{capacity}% 󰚥";
format-alt = "{icon} {time}";
format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
};
memory = {
format = "{used:0.1f}G ";
tooltip-format = ''
RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
};
network = {
format = "{bandwidthDownBits} 󰇚 | {bandwidthUpBits} 󰕒";
interval = 3;
tooltip = false;
};
cpu = {
format = "{usage}% 󰍛";
interval = 3;
};
upower = {
icon-size = 16;
format = "{percentage}";
hide-if-empty = true;
tooltip = true;
tooltip-spacing = 20;
};
power-profiles-daemon = {
format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true;
format-icons = {
default = "󱡮";
performance = "󱡮";
balanced = "";
power-saver = "";
};
};
wireplumber = {
scroll-step = 3;
format = "{volume}% {icon}";
format-muted = "󰖁";
format-icons = ["󰕿" "󰖀" "󰕾"];
on-click = lib.getExe pkgs.pwvucontrol;
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
};
"custom/launcher" = {
format = "";
on-click = launcher;
tooltip = false;
};
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "󱅫";
none = "󰂚";
dnd-notification = "󰂛";
dnd-none = "󰂛";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
"privacy" = {
icon-spacing = 0;
icon-size = 16;
transition-duration = 250;
screenshare = {
type = "screenshare";
tooltip = true;
tooltip-icon-size = 24;
};
audio-in = {
type = "audio-in";
tooltip = true;
tooltip-icon-size = 24;
};
};
"wlr/taskbar" = {
format = "{icon} {name}";
icon-size = 18;
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
tooltip-format = "{title}";
on-click = "activate";
};
};
# TODO: figure out magic waybar css styling (does it pick up `~/.config/gtk-3.0/gtk.css` ?)
style =
# css
''
@define-color base00 #${colors.base00}; @define-color base08 #${colors.base08};
@define-color base01 #${colors.base01}; @define-color base09 #${colors.base09};
@define-color base02 #${colors.base02}; @define-color base0A #${colors.base0A};
@define-color base03 #${colors.base03}; @define-color base0B #${colors.base0B};
@define-color base04 #${colors.base04}; @define-color base0C #${colors.base0C};
@define-color base05 #${colors.base05}; @define-color base0D #${colors.base0D};
@define-color base06 #${colors.base06}; @define-color base0E #${colors.base0E};
@define-color base07 #${colors.base07}; @define-color base0F #${colors.base0F};
* {
/* all: unset; */
font-family: Symbols Nerd Font, FontAwesome, ${config.stylix.fonts.sansSerif.name};
font-weight: 500;
font-size: 16px;
}
.modules-left, .modules-center, .modules-right, window#waybar {
background-color: @base00;
color: @base05;
border-radius: 12px;
}
window#waybar {
border-radius: 0;
}
/* for leftmost modules */
.modules-left, .modules-center, .modules-right {
padding-left: 3px;
background-color: @base00;
color: @base05;
}
window#bottom.modules-center {
background-color: transparent
}
tooltip {
background: @base01;
border: 1px solid @base0D;
border-radius: 16px;
padding: 2em;
}
tooltip label {
color: @base05;
}
button {
box-shadow: inset 0 -3px transparent;
border-radius: 6px;
}
button:hover {
background: inherit;
box-shadow: inset 0 -3px transparent;
}
#backlight,
#battery,
#clock,
#cpu,
#custom-launcher,
#custom-notification,
#idle_inhibitor,
#language,
#memory,
#network,
#power-profiles-daemon,
#privacy,
#privacy-item,
#taskbar button,
#taskbar,
#tray button,
#tray,
#wireplumber,
#workspaces button,
#workspaces {
all: unset;
border-radius: 9px;
background-color: @base01;
margin: 3px 3px 3px 0;
padding: 0 0.42em;
min-width: 1em;
}
#backlight,
#battery,
#custom-launcher,
#custom-notification,
#idle_inhibitor,
#power-profiles-daemon,
#wireplumber {
padding: 0 0.5em;
}
#custom-notification,
#power-profiles-daemon {
min-width: 1em;
}
#privacy,
#taskbar,
#workspaces {
padding: 0;
}
#workspaces {
padding-left: 3px;
}
#privacy-item {
padding: 0 0.3em;
}
#taskbar button {
padding-left: 0;
}
#taskbar button,
#tray button,
#workspaces button {
border-radius: 6px;
min-width: 0.8em;
}
#battery.critical:not(.charging) {
background-color: @base09;
color: @base00;
}
#power-profiles-daemon.performance {
background-color: @base0D;
color: @base00;
}
#power-profiles-daemon.power-saver {
background-color: @base0A;
color: @base00;
}
#privacy-item.audio-in {
background-color: @base0E;
color: @base00;
margin: 3px;
}
#privacy-item.screenshare {
background-color: @base0C;
color: @base00;
margin: 3px 0 3px 3px;
}
#taskbar button,
#tray button {
padding: 0 0.4em;
margin: 3px;
}
#workspaces button.active,
#taskbar button.active {
background-color: @base02;
}
#workspaces button:hover,
#workspaces button.active:hover,
#taskbar button.active:hover,
#taskbar button:hover {
background-color: @base0D;
color: @base00;
}
#taskbar.empty {
background-color: transparent;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @base08;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
/* #workspaces button.active {
color: @base00;
background-color: @base0D;
} */
label:focus {
background-color: #000000;
}
'';
}

View File

@ -0,0 +1,57 @@
{
lib,
osConfig,
pkgs,
lockscreen,
...
}:
lib.attrsets.recursiveUpdate {
blueman-applet.enable = osConfig.services.blueman.enable;
copyq.enable = true;
gammastep.enable = true;
gnome-keyring.enable = true;
hypridle.enable = true;
kanshi = import ./kanshi;
network-manager-applet.enable = true;
playerctld.enable = true;
swaync = import ./swaync;
swayosd.enable = true;
udiskie.enable = true;
wpaperd.enable = true;
}
{
gammastep = {
provider = "manual";
latitude = 49.6;
longitude = 36.1;
tray = true;
temperature = {
day = 6500;
night = 3000;
};
};
gnome-keyring.components = ["secrets"];
hypridle.settings = {
general = {
before_sleep_cmd = "loginctl lock-session";
lock_cmd = "pidof ${lockscreen} || ${lockscreen}";
# unlock_cmd = "loginctl unlock-session";
};
listener = [
{
timeout = 600;
on-timeout = "pidof ${lockscreen} || ${lockscreen}";
}
{
timeout = 601;
on-timeout = lib.getExe pkgs.niri + " msg action power-off-monitors";
}
];
};
swayosd.topMargin = 0.8;
udiskie = {
automount = false;
notify = true;
tray = "auto";
};
}

View File

@ -0,0 +1,113 @@
{
enable = true;
settings = let
main = "Philips Consumer Electronics Company 27M2N5500 UK02418033254";
second = "Samsung Electric Company S24R65x H4TMA03291";
builtin = {
eldrid = "Chimei Innolux Corporation 0x1406 Unknown";
sarien = "LG Display 0x068B Unknown";
# morphius =;
};
in [
{
output = {
criteria = main;
position = "0,0";
scale = 4.0 / 3.0;
adaptiveSync = true;
};
}
{
output = {
criteria = second;
mode = "1920x1080@74.973";
adaptiveSync = true;
};
}
{
output = {
criteria = builtin.eldrid;
position = "0,0";
scale = 1.2;
# adaptiveSync = true;
};
}
{
output = {
criteria = builtin.sarien;
position = "0,0";
scale = 1.25;
# adaptiveSync = true;
};
}
{
profile = {
name = "dunamis";
outputs = [
{criteria = main;}
{
criteria = second;
position = "1920,180";
scale = 1.2;
# transform = "90";
adaptiveSync = true;
}
];
};
}
{
profile = {
name = "eldrid-docked";
outputs = [
{
criteria = main;
position = "0,0";
scale = 4.0 / 3.0;
}
{
criteria = builtin.eldrid;
position = "1920,0";
}
];
};
}
{
profile = {
name = "eldrid-undocked";
outputs = [
{
criteria = builtin.eldrid;
position = "0,0";
}
];
};
}
{
profile = {
name = "sarien-docked";
outputs = [
{
criteria = main;
position = "0,0";
scale = 4.0 / 3.0;
}
{
criteria = builtin.sarien;
position = "1920,0";
}
];
};
}
{
profile = {
name = "sarien-undocked";
outputs = [
{
criteria = builtin.sarien;
position = "0,0";
}
];
};
}
];
}

View File

@ -0,0 +1,178 @@
{
enable = true;
settings = {
cssPriority = "user";
image-visibility = "when-available";
keyboard-shortcut = true;
relative-timestamps = true;
timeout = 5;
timeout-low = 5;
timeout-critical = 0;
script-fail-notify = true;
transition-time = 200;
# Layer settings
layer-shell = true;
layer = "overlay";
control-center-layer = "overlay";
# Notification settings
positionX = "left";
positionY = "top";
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 48;
notification-body-image-height = 100;
notification-body-image-width = 200;
notification-window-width = 400;
# Control center settings
control-center-positionX = "left";
control-center-positionY = "top";
control-center-width = 500;
control-center-exclusive-zone = true;
fit-to-screen = true;
hide-on-action = true;
hide-on-clear = false;
# Widget settings
widgets = [
"title"
"dnd"
"notifications"
"mpris"
];
widget-config = {
title = {
text = "Notifications";
clear-all-button = true;
button-text = "Clear All";
};
dnd = {
text = "Do Not Disturb";
};
mpris = {
image-size = 96;
image-radius = 12;
blur = true;
};
};
};
# TODO: disable stylix, redo everything
style = ''
* {
all: unset;
}
progress,
progressbar,
trough {
border-radius: 16px;
}
.app-icon,
.image {
-gtk-icon-effect: none;
padding-right: 0.5rem;
}
.notification-action {
border-radius: 9px;
margin: 3px;
}
.close-button {
margin: 12px;
border-radius: 6px;
}
.notification-group.collapsed
.notification-row:not(:last-child)
.notification-action,
.notification-group.collapsed
.notification-row:not(:last-child)
.notification-default-action {
opacity: 0;
}
.trough {
margin: 4px;
border-radius: 7px;
}
.notification,
.notification.low,
.notification.normal,
.notification.critical,
.control-center {
border-radius: 12px;
margin: 6px;
}
.floating-notifications,
.notification-content {
padding: 0.5rem;
margin: 3px;
border-radius: 9px;
}
.control-center-list {
background: transparent;
}
.widget-title {
margin: 0.5rem;
}
.widget-title > label {
font-weight: bold;
}
.widget-title > button {
border-radius: 9px;
padding: 0.5rem;
}
.widget-dnd {
margin: 0.5rem;
}
.widget-dnd > label {
font-weight: bold;
}
.widget-dnd > switch {
border-radius: 9px;
}
.widget-dnd > switch slider {
margin: 3px;
border-radius: 6px;
padding: 0px;
}
.widget-mpris .widget-mpris-player {
border-radius: 12px;
margin: 0.5rem;
padding: 0.5rem;
}
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
border-radius: 9px;
}
.widget-mpris .widget-mpris-player .widget-mpris-title {
font-weight: bold;
}
.widget-mpris .widget-mpris-player .widget-mpris-subtitle {
font-weight: normal;
}
.widget-mpris .widget-mpris-player > box > button {
border-radius: 6px;
padding: 3px;
}
'';
}

View File

@ -1,10 +1,12 @@
{
osConfig,
config,
pkgs,
lib,
...
}:
with lib; let
inherit (osConfig.module.stylix) theme;
cfg = config.desktop.plasma;
in {
options = {
@ -12,9 +14,28 @@ in {
mkEnableOption "enable plasma desktop";
};
config = mkIf cfg.enable {
stylix.targets.kde.enable = true;
stylix.targets.qt.enable = mkDefault false;
stylix.targets.kde.enable = mkDefault true;
services.gnome-keyring = {
enable = true;
components = ["secrets"];
};
home.packages = with pkgs; [
wl-clipboard-rs
];
gtk = {
enable = true;
iconTheme = {
name =
if config.stylix.polarity == "dark"
then "Papirus-Dark"
else "Papirus-Light";
package =
if (removeSuffix "-light" theme) == "nord"
then pkgs.papirus-nord
else pkgs.papirus-icon-theme;
};
};
};
}

View File

@ -0,0 +1,6 @@
{
imports = [
./joshuto.nix
./yazi.nix
];
}

View File

@ -0,0 +1,292 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) mkIf mkEnableOption;
cfg = config.console.joshuto;
in {
options = {
console.joshuto.enable =
mkEnableOption "enable joshuto file manager";
};
config =
# let
# test = pkgs.writeShellApplication {
# name = "upgrade";
# text = ''
# IFS=$'\n'
# # Security measures:
# # * noclobber prevents you from overwriting a file with `>`
# # * noglob prevents expansion of wild cards
# # * nounset causes bash to fail if an undeclared variable is used (e.g. typos)
# # * pipefail causes a pipeline to fail also if a command other than the last one fails
# set -o noclobber -o noglob -o nounset -o pipefail
# # Enable exiftool large file support
# shopt -s expand_aliases
# alias exiftool='exiftool -api largefilesupport=1'
# FILE_PATH=""
# PREVIEW_WIDTH=10
# PREVIEW_HEIGHT=10
# while [ "$#" -gt 0 ]; do
# case "$1" in
# "--path")
# shift
# FILE_PATH="$1"
# ;;
# "--preview-width")
# shift
# PREVIEW_WIDTH="$1"
# ;;
# "--preview-height")
# shift
# PREVIEW_HEIGHT="$1"
# ;;
# esac
# shift
# done
# handle_extension() {
# case "\$\{FILE_EXTENSION_LOWER}" in
# ## Archive
# a | ace | alz | arc | arj | bz | bz2 | cab | cpio | deb | gz | jar | lha | lz | lzh | lzma | lzo | \
# rpm | rz | t7z | tar | tbz | tbz2 | tgz | tlz | txz | tZ | tzo | war | xpi | xz | Z | zip)
# atool --list -- "\$\{FILE_PATH}" && exit 0
# bsdtar --list --file "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# rar)
# ## Avoid password prompt by providing empty password
# unrar lt -p- -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# 7z)
# ## Avoid password prompt by providing empty password
# 7z l -p -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## PDF
# pdf)
# ## Preview as text conversion
# pdftotext -l 10 -nopgbrk -q -- "\$\{FILE_PATH}" - |
# fmt -w "\$\{PREVIEW_WIDTH}" && exit 0
# mutool draw -F txt -i -- "\$\{FILE_PATH}" 1-10 |
# fmt -w "\$\{PREVIEW_WIDTH}" && exit 0
# exiftool "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## BitTorrent
# torrent)
# transmission-show -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## OpenDocument
# odt | sxw)
# ## Preview as text conversion
# odt2txt "\$\{FILE_PATH}" && exit 0
# ## Preview as markdown conversion
# pandoc -s -t markdown -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ods | odp)
# ## Preview as text conversion (unsupported by pandoc for markdown)
# odt2txt "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## XLSX
# xlsx)
# ## Preview as csv conversion
# ## Uses: https://github.com/dilshod/xlsx2csv
# xlsx2csv -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## HTML
# htm | html | xhtml)
# ## Preview as text conversion
# w3m -dump "\$\{FILE_PATH}" && exit 0
# lynx -dump -- "\$\{FILE_PATH}" && exit 0
# elinks -dump "\$\{FILE_PATH}" && exit 0
# pandoc -s -t markdown -- "\$\{FILE_PATH}" && exit 0
# bat --color=always --paging=never \
# --style=plain \
# --terminal-width="\$\{PREVIEW_WIDTH}" \
# "\$\{FILE_PATH}" && exit 0
# ;;
# ## JSON
# json | ipynb)
# jq --color-output . "\$\{FILE_PATH}" && exit 0
# python -m json.tool -- "\$\{FILE_PATH}" && exit 0
# bat --color=always --paging=never \
# --style=plain \
# --terminal-width="\$\{PREVIEW_WIDTH}" \
# "\$\{FILE_PATH}" && exit 0
# ;;
# ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
# ## by file(1).
# dff | dsf | wv | wvc)
# mediainfo "\$\{FILE_PATH}" && exit 0
# exiftool "\$\{FILE_PATH}" && exit 0
# ;; # Continue with next handler on failure
# esac
# }
# handle_mime() {
# local mimetype="\$\{1}"
# case "\$\{mimetype}" in
# ## RTF and DOC
# text/rtf | *msword)
# ## Preview as text conversion
# ## note: catdoc does not always work for .doc files
# ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
# catdoc -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## DOCX, ePub, FB2 (using markdown)
# ## You might want to remove "|epub" and/or "|fb2" below if you have
# ## uncommented other methods to preview those formats
# *wordprocessingml.document | */epub+zip | */x-fictionbook+xml)
# ## Preview as markdown conversion
# pandoc -s -t markdown -- "\$\{FILE_PATH}" | bat -l markdown \
# --color=always --paging=never \
# --style=plain \
# --terminal-width="\$\{PREVIEW_WIDTH}" && exit 0
# exit 1
# ;;
# ## E-mails
# message/rfc822)
# ## Parsing performed by mu: https://github.com/djcb/mu
# mu view -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## XLS
# *ms-excel)
# ## Preview as csv conversion
# ## xls2csv comes with catdoc:
# ## http://www.wagner.pp.ru/~vitus/software/catdoc/
# xls2csv -- "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## Text
# text/* | */xml)
# bat --color=always --paging=never \
# --style=plain \
# --terminal-width="\$\{PREVIEW_WIDTH}" \
# "\$\{FILE_PATH}" && exit 0
# cat "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## DjVu
# image/vnd.djvu)
# ## Preview as text conversion (requires djvulibre)
# djvutxt "\$\{FILE_PATH}" | fmt -w "\$\{PREVIEW_WIDTH}" && exit 0
# exiftool "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## Image
# image/*)
# ## Preview as text conversion
# exiftool "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# ## Video and audio
# video/* | audio/*)
# mediainfo "\$\{FILE_PATH}" && exit 0
# exiftool "\$\{FILE_PATH}" && exit 0
# exit 1
# ;;
# esac
# }
# FILE_EXTENSION="\$\{FILE_PATH##*.}"
# FILE_EXTENSION_LOWER="$(printf "%s" "\$\{FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
# handle_extension
# MIMETYPE="$(file --dereference --brief --mime-type -- "\$\{FILE_PATH}")"
# handle_mime "\$\{MIMETYPE}"
# exit 1
# '';
# };
# in
mkIf cfg.enable {
home.packages = [pkgs.file];
programs.joshuto = {
enable = true; # file manager in rust
settings = {
mouse_support = true;
focus_on_create = true;
use_trash = true;
watch_files = true;
xdg_open = true;
xdg_open_fork = true;
case_insensitive_ext = false;
# zoxide_update = true;
display = {
mode = "minimal";
show_icons = true;
column_ratio = [1 5 2];
};
preview = {
# preview_script = getExe pkgs.pistol;
use_xdg_thumbs = true;
xdg_thumb_size = "xxlarge";
};
};
mimetype = {
class = {
text_default = [
{
command = "hx";
}
];
};
extension = {
build."inherit" = "text_default";
c."inherit" = "text_default";
cmake."inherit" = "text_default";
conf."inherit" = "text_default";
cpp."inherit" = "text_default";
css."inherit" = "text_default";
csv."inherit" = "text_default";
cu."inherit" = "text_default";
ebuild."inherit" = "text_default";
eex."inherit" = "text_default";
env."inherit" = "text_default";
ex."inherit" = "text_default";
exs."inherit" = "text_default";
go."inherit" = "text_default";
h."inherit" = "text_default";
hpp."inherit" = "text_default";
hs."inherit" = "text_default";
html."inherit" = "text_default";
ini."inherit" = "text_default";
java."inherit" = "text_default";
js."inherit" = "text_default";
json."inherit" = "text_default";
kt."inherit" = "text_default";
log."inherit" = "text_default";
lua."inherit" = "text_default";
md."inherit" = "text_default";
micro."inherit" = "text_default";
ninja."inherit" = "text_default";
nix."inherit" = "text_default";
norg."inherit" = "text_default";
org."inherit" = "text_default";
py."inherit" = "text_default";
rkt."inherit" = "text_default";
rs."inherit" = "text_default";
scss."inherit" = "text_default";
sh."inherit" = "text_default";
srt."inherit" = "text_default";
svelte."inherit" = "text_default";
toml."inherit" = "text_default";
tsx."inherit" = "text_default";
txt."inherit" = "text_default";
vim."inherit" = "text_default";
xml."inherit" = "text_default";
yaml."inherit" = "text_default";
yml."inherit" = "text_default";
};
mimetype = {
text = {"inherit" = "text_default";};
};
};
};
};
}

View File

@ -3,8 +3,8 @@
config,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkIf mkEnableOption getExe;
cfg = config.console.yazi;
in {
options = {
@ -13,8 +13,9 @@ in {
};
config = mkIf cfg.enable {
programs.yazi = {
enable = true;
enable = true; # file manager in rust
enableNushellIntegration = true;
shellWrapperName = "y";
settings = {
opener = {
open = [
@ -33,7 +34,7 @@ in {
];
dragdrop = [
{
run = "${pkgs.ripdrag}/bin/ripdrag \"$@\"";
run = "${getExe pkgs.ripdrag} -ab \"$@\"";
desc = "Drag'n'drop";
orphan = true;
for = "unix";
@ -45,10 +46,46 @@ in {
mime = "text/*";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.json";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.yaml";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.yml";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.toml";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.sh";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.ini";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.conf";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.csv";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.go";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.html";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.c";
use = ["edit" "open" "dragdrop"];
@ -62,11 +99,11 @@ in {
use = ["edit" "open" "dragdrop"];
}
{
name = "*.py";
name = "*.nix";
use = ["edit" "open" "dragdrop"];
}
{
name = "*.json";
name = "*.py";
use = ["edit" "open" "dragdrop"];
}
{
@ -75,14 +112,6 @@ in {
}
];
};
keymap = {
manager.append_keymap = [
{
on = ["<C-n>"];
run = ''shell '${pkgs.ripdrag}/bin/ripdrag -x "$@"' --confirm'';
}
];
};
};
};
}

View File

@ -1,8 +1,9 @@
{
imports = [
./console/yazi.nix
./editor/default.nix
./shell/default.nix
./terminal/default.nix
./console
./editor
./shell
./terminal
./syncthing.nix
];
}

View File

@ -2,7 +2,7 @@
imports = [
./helix.nix
./zed.nix
./neve.nix
# ./neve.nix
#./nixvim.nix
];
}

View File

@ -3,8 +3,8 @@
config,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkIf mkEnableOption getExe;
cfg = config.editor.helix;
in {
options = {
@ -13,14 +13,18 @@ in {
};
config = mkIf cfg.enable {
programs.helix = {
enable = true;
enable = true; # vim-like editor in rust
defaultEditor = true;
settings = {
editor = {
line-number = "relative";
bufferline = "multiple";
cursorline = true;
lsp.display-messages = true;
inline-diagnostics.cursor-line = "warning";
line-number = "relative";
lsp = {
display-messages = true;
display-inlay-hints = true;
};
cursor-shape = {
insert = "bar";
normal = "block";
@ -39,81 +43,142 @@ in {
wrap-indicator = "";
};
};
keys.normal = {
space = {
space = "file_picker";
w = ":w";
q = ":q";
x = ":x";
n = ":n";
"," = "goto_previous_buffer";
"." = "goto_next_buffer";
l = ":reflow";
keys = {
insert.C-c = "normal_mode";
normal = {
esc = ["collapse_selection" "keep_primary_selection"];
space = {
space = "file_picker";
w = ":w";
q = ":q";
x = ":x";
n = ":n";
"," = "goto_previous_buffer";
"." = "goto_next_buffer";
l = ":reflow";
};
};
esc = ["collapse_selection" "keep_primary_selection"];
};
};
languages = {
language-server = {
clangd = {
command = "${pkgs.clang-tools}/bin/clangd";
# markdown-oxide.command = getExe pkgs.markdown-oxide;
# nixd.command = getExe pkgs.nixd;
# pyright = {
# command = getExe pkgs.pyright;
# args = ["-"];
# };
# rust-analyzer.command = getExe pkgs.rust-analyzer;
# texlab.command = getExe pkgs.texlab;
bash-language-server = {
command = getExe pkgs.bash-language-server;
environment = {
"SHELLCHECK_PATH" = getExe pkgs.shellcheck;
"SHFMT_PATH" = getExe pkgs.shfmt;
};
};
rust-analyzer = {
command = "${pkgs.rust-analyzer}/bin/rust-analyzer";
};
texlab = {
command = "${pkgs.texlab}/bin/texlab";
clangd.command = "${pkgs.clang-tools}/bin/clangd";
fsac = {
command = getExe pkgs.fsautocomplete;
config = {
# editor.formatOnSave = true;
AutomaticWorkspaceInit = true;
FSharp.ExternalAutocomplete = true;
FSharp.linting.fsharplint.enabled = true;
FSharp.linting.fsharplint.configFile = "fsharplint.json";
FSharp.formatting.fantomas.enabled = true;
};
};
nil = {
command = "${pkgs.nil}/bin/nil";
command = getExe pkgs.nil;
config = {
formatting.command = [(getExe pkgs.alejandra)];
};
};
markdown-oxide = {
command = "${pkgs.markdown-oxide}/bin/markdown-oxide";
ruff = {
command = getExe pkgs.ruff;
args = ["server"];
};
tinymist = {
command = lib.getExe pkgs.tinymist;
tinymist.command = getExe pkgs.tinymist;
vscode-json-language-server.command = getExe pkgs.nodePackages.vscode-json-languageserver;
yaml-language-server.command = getExe pkgs.yaml-language-server;
zk = {
command = getExe pkgs.zk;
args = ["lsp"];
};
};
language = [
{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.alejandra}/bin/alejandra";
language-servers = ["nil"];
}
{
name = "latex";
auto-format = true;
formatter.command = "${pkgs.texlivePackages.latexindent}/bin/latexindent";
language-servers = ["texlab"];
}
{
name = "typst";
auto-format = true;
formatter.command = lib.getExe pkgs.typstyle;
formatter.command = getExe pkgs.typstyle;
language-servers = ["tinymist"];
}
{
name = "markdown";
# auto-format = true;
# formatter.command = "${pkgs.comrak}/bin/comrak";
language-servers = ["markdown-oxide"];
language-servers = ["zk" "markdown-oxide"];
}
{
name = "c";
auto-format = true;
formatter.command = "${pkgs.clang-tools}/bin/clang-format";
# formatter.command = "${pkgs.clang-tools}/bin/clang-format";
}
{
name = "cpp";
auto-format = true;
formatter.command = "${pkgs.clang-tools}/bin/clang-format";
# formatter.command = "${pkgs.clang-tools}/bin/clang-format";
}
{
name = "rust";
name = "fsharp";
auto-format = true;
language-servers = ["rust-analyzer"];
formatter.command = "${pkgs.rustfmt}/bin/rustfmt";
language-servers = ["fsac"];
scope = "source.fs";
roots = ["fsproj" "sln" ".git"];
}
# {
# name = "rust";
# auto-format = true;
# language-servers = ["rust-analyzer"];
# formatter.command = getExe pkgs.rustfmt;
# }
{
name = "json";
auto-format = true;
formatter.command = getExe pkgs.jq;
language-servers = ["vscode-json-language-server"];
}
{
name = "yaml";
auto-format = true;
formatter.command = getExe pkgs.yamlfmt;
formatter.args = ["-"];
language-servers = ["yaml-language-server"];
}
{
name = "bash";
auto-format = true;
# formatter.command = getExe pkgs.shfmt;
# formatter.args = ["-"];
}
{
name = "python";
auto-format = true;
language-servers = [
{
name = "ruff";
# only-features = ["format" "diagnostics"];
}
# {
# name = "pyright";
# except-features = ["format" "diagnostics"];
# }
];
}
];
};

View File

@ -1,15 +1,16 @@
{
pkgs,
# pkgs-51b85c,
lib,
config,
lib,
pkgs,
...
}: {
}: let
inherit (lib) mkIf mkEnableOption;
in {
options = {
editor.neovim.enable =
lib.mkEnableOption "enable neovim text editor";
mkEnableOption "enable neovim text editor";
};
config = lib.mkIf config.editors.neovim.enable {
config = mkIf config.editors.neovim.enable {
# stylix.targets.nixvim.enable = true;
home.packages = with pkgs; [neovide];
programs.nixvim = {

View File

@ -3,8 +3,8 @@
pkgs,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkIf mkEnableOption mkForce getExe;
cfg = config.editor.zed;
in {
options = {
@ -15,43 +15,49 @@ in {
programs.zed-editor = {
enable = true;
extensions = [
"bash"
"fsharp"
"justfile"
"nix"
"latex"
"typst"
];
userSettings = {
vim_mode = true;
ui_font_size = lib.mkForce 16;
buffer_font_size = lib.mkForce 16;
features = {inline_completion_provider = "none";};
ui_font_size = mkForce 16;
buffer_font_size = mkForce 16;
# features = {inline_completion_provider = "none";};
auto_update = false;
languages = {
"FSharp" = {
language-servers = [
"fsautocomplete"
];
};
"Nix" = {
language-servers = [
"!nil"
"nixd"
"nil"
];
formatter = {
external.command = lib.getExe pkgs.alejandra;
};
};
"Rust" = {
formatter = {
external = {
command = lib.getExe pkgs.rustfmt;
arguments = ["--edition" "2021"];
};
};
# formatter = {
# external.command = getExe pkgs.alejandra;
# };
};
# "Rust" = {
# formatter = {
# external = {
# command = getExe pkgs.rustfmt;
# arguments = ["--edition" "2021"];
# };
# };
# };
"typst" = {
language-servers = ["tinymist"];
format_on_save = "on";
formatter = {
external = {
command = lib.getExe pkgs.typstyle;
arguments = ["-i" "{buffer_path}"];
};
};
# formatter = {
# external = {
# command = getExe pkgs.typstyle;
# arguments = ["-i" "{buffer_path}"];
# };
# };
};
"Python" = {
format_on_save = "on";
@ -66,48 +72,79 @@ in {
};
};
lsp = {
bash-language-server = {
binary = {
path = getExe pkgs.bash-language-server;
env = {
"SHELLCHECK_PATH" = getExe pkgs.shellcheck;
"SHFMT_PATH" = getExe pkgs.shfmt;
};
};
};
fsautocomplete = {
binary = {
path = getExe pkgs.fsautocomplete;
};
settings = {
AutomaticWorkspaceInit = true;
FSharp.ExternalAutocomplete = true;
FSharp.linting.fsharplint.enabled = true;
FSharp.linting.fsharplint.configFile = "fsharplint.json";
FSharp.formatting.fantomas.enabled = true;
};
};
clangd = {
binary = {
arguments = [];
path = "${pkgs.clang-tools}/bin/clangd";
};
};
rust-analyzer = {
binary = {
arguments = [];
path = lib.getExe pkgs.rust-analyzer;
};
};
# rust-analyzer = {
# binary = {
# arguments = [];
# path = getExe pkgs.rust-analyzer;
# };
# };
ruff = {
binary = {
arguments = [];
path = lib.getExe pkgs.ruff;
path = getExe pkgs.ruff;
};
};
nixd = {
binary = {
arguments = [];
path = lib.getExe pkgs.nixd;
};
initialization_options.formatting.command = [(lib.getExe pkgs.alejandra)];
};
# nixd = {
# binary = {
# arguments = [];
# path = getExe pkgs.nixd;
# };
# initialization_options.formatting.command = [(getExe pkgs.alejandra)];
# };
nil = {
binary = {
arguments = [];
path = lib.getExe pkgs.nil;
};
initialization_options.formatting.command = [(lib.getExe pkgs.alejandra)];
};
texlab = {
binary = {
arguments = [];
path = lib.getExe pkgs.texlab;
path = getExe pkgs.nil;
};
settings.formatting.command = [(getExe pkgs.alejandra)];
};
# texlab = {
# binary = {
# arguments = [];
# path = getExe pkgs.texlab;
# };
# };
tinymist = {
binary = {
arguments = [];
path = lib.getExe pkgs.tinymist;
path = getExe pkgs.tinymist;
};
};
vscode-json-language-server = {
binary = {
path = getExe pkgs.nodePackages.vscode-json-languageserver;
};
};
yaml-language-server = {
binary = {
path = getExe pkgs.yaml-language-server;
};
};
};

View File

@ -1,9 +1,10 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkIf mkEnableOption getExe;
cfg = config.shell.fish;
in {
options = {
@ -12,36 +13,36 @@ in {
};
config = mkIf cfg.enable {
programs = {
# atuin = {
# enable = true;
# flags = [
# "--disable-up-arrow"
# ];
# };
# };
eza.enable = true;
zoxide.enable = true;
keychain = {
atuin = {
enable = true;
keys = ["id_ed25519"];
extraFlags = [
"--quiet"
"--noask"
flags = [
"--disable-up-arrow"
];
};
fish = {
enable = true;
enable = true; # friendly interactive shell in rust
shellAliases = {
cd = "z";
cat = "bat";
la = "ls -a";
l = "ls -la";
ed = "$EDITOR";
jf = "jj-fzf"; # think of jeff
jo = "joshuto"; # think of josh
l = "ls -lah";
la = "ls -ah";
ll = "ls -lh";
p = "pueue";
s = "systemctl";
};
shellAbbrs = {
pa = "pueue add --";
pl = "pueue log";
};
interactiveShellInit = ''
bind \e\[3\;5~ kill-word
bind \cH backward-kill-word
set fish_greeting
set fish_cursor_default block blink
set EDITOR hx
${getExe pkgs.bat-extras.batman} --export-env | source
'';
};
};

View File

@ -1,5 +1,5 @@
{
pkgs,
# pkgs,
config,
lib,
...
@ -13,98 +13,60 @@ in {
};
config = mkIf cfg.enable {
programs = {
eza.enableNushellIntegration = false;
atuin = {
enable = true;
enable = false;
enableNushellIntegration = true;
flags = [
"--disable-up-arrow"
];
};
carapace = {
enable = true;
enableNushellIntegration = true;
};
zoxide = {
enable = true;
enableNushellIntegration = true;
};
oh-my-posh.enableNushellIntegration = true;
keychain = {
enable = true;
keys = ["id_ed25519"];
enableNushellIntegration = true;
extraFlags = [
"--quiet"
"--noask"
];
};
carapace.enable = true;
nushell = {
enable = true;
environmentVariables = {
CARAPACE_BRIDGES = "zsh,fish,bash,inshellisense";
CARAPACE_BRIDGES = "fish";
CARAPACE_MATCH = 1;
EDITOR = "hx";
};
shellAliases = {
cd = "z";
cat = "bat";
la = "ls -a";
# ed = "$env.EDITOR";
jf = "jj-fzf"; # think of jeff
jo = "joshuto"; # think of josh
l = "ls -la";
la = "ls -a";
ll = "ls -l";
nix-shell = "nix-shell --command nu";
p = "pueue";
s = "systemctl";
};
extraConfig = ''
$env.config = {
show_banner: false
shell_integration: {
# osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title
osc2: true
# osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory
osc7: true
# osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8
osc8: true
# osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal
osc9_9: false
# osc133 is several escapes invented by Final Term which include the supported ones below.
# 133;A - Mark prompt start
# 133;B - Mark prompt end
# 133;C - Mark pre-execution
# 133;D;exit - Mark execution finished with exit code
# This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is
osc133: true
# osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features
# 633;A - Mark prompt start
# 633;B - Mark prompt end
# 633;C - Mark pre-execution
# 633;D;exit - Mark execution finished with exit code
# 633;E - Explicitly set the command line with an optional nonce
# 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal
# and also helps with the run recent menu in vscode
osc633: true
# reset_application_mode is escape \x1b[?1l and was added to help ssh work better
reset_application_mode: true
}
ls: {
use_ls_colors: true
clickable_links: true
}
rm: {
always_trash: true
}
edit_mode: 'vi'
completions: {
case_sensitive: false
quick: true
partial: true
algorithm: "fuzzy"
external: {
enable: true
# max_results: 100
# completer: $carapace_completer # check 'carapace_completer'
}
}
$env.config = {
show_banner: false
shell_integration: {
osc2: true
osc7: true
osc8: true
osc9_9: false
osc133: true
osc633: true
reset_application_mode: true
}
ls: {
use_ls_colors: true
clickable_links: true
}
rm: {
always_trash: true
}
completions: {
case_sensitive: false
quick: true
partial: true
algorithm: "fuzzy"
}
}
'';
};
};

View File

@ -2,8 +2,8 @@
config,
lib,
...
}:
with lib; let
}: let
inherit (lib) mkIf mkEnableOption;
cfg = config.shell.oh-my-posh;
in {
options = {
@ -14,14 +14,15 @@ in {
programs.oh-my-posh = {
enable = true;
settings = {
version = 2;
# version = 2;
final_space = true;
shell_integration = true;
console_title_template = "{{ .Shell }} in {{ .Folder }}";
blocks = [
{
type = "prompt";
alignment = "left";
newline = true;
overflow = "hidden";
segments = [
{
type = "path";
@ -59,6 +60,31 @@ in {
}
];
}
{
type = "prompt";
alignment = "right";
segments = [
{
type = "session";
style = "plain";
foreground = "white";
background = "transparent";
template = "{{ if .SSHSession }} {{ .UserName }}@{{ .HostName }}{{ end }}";
}
{
style = "plain";
foreground = "white";
background = "transparent";
properties = {
charged_icon = "󰁹";
charging_icon = "󱟡";
discharging_icon = "󱟟";
};
template = "{{ if not .Error }} {{ .Icon }} {{ .Percentage }}%{{ end }}";
type = "battery";
}
];
}
{
type = "rprompt";
overflow = "hidden";
@ -68,7 +94,7 @@ in {
style = "plain";
foreground = "yellow";
background = "transparent";
template = "{{ .FormattedMs }}";
template = "{{.FormattedMs}}";
properties = {
threshold = 5000;
};
@ -85,7 +111,7 @@ in {
style = "plain";
foreground_templates = ["{{if gt .Code 0}}red{{end}}" "{{if eq .Code 0}}magenta{{end}}"];
background = "transparent";
template = "";
template = ">";
}
];
}
@ -93,12 +119,12 @@ in {
transient_prompt = {
foreground_templates = ["{{if gt .Code 0}}red{{end}}" "{{if eq .Code 0}}magenta{{end}}"];
background = "transparent";
template = " ";
template = "> ";
};
secondary_prompt = {
foreground = "magenta";
background = "transparent";
template = " ";
template = "-> ";
};
};
};

View File

@ -0,0 +1,54 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.syncthing;
in {
options = {
syncthing.enable = mkEnableOption "enable syncthing";
};
config = mkIf cfg.enable {
systemd.user.services.syncthing.Environment.STNODEFAULTFOLDER = "true"; # Don't create default ~/Sync folder
services.syncthing = {
enable = true;
tray.enable = true;
settings = {
options = {
urAccepted = -1;
relaysEnabled = true;
};
devices = {
"dunamis".id = "72VRZFX-65SZUKP-2XL2WLG-75MMKLG-PQLDEZN-G5OI5U7-RLF4OHS-LNCXEQX";
"eldrid".id = "VTSBNN6-W6UUT66-NDEQBNJ-DJJM5YE-PWU63IW-Y6CTJNN-Q3RHEQB-POBLCQH";
"legion".id = "FDS73OW-BHRWDBO-AOFQX4D-FSCABP2-HN4575T-CSIO6TX-5CPJQLQ-L25TYQJ";
"morphius".id = "VATWBD7-ZTMGGCT-XH6YDYD-5OMPILK-U43UYYW-OGC4BLB-IQGH35R-4X5HZQH";
"sarien".id = "LUVZGFV-OV6FV5E-SDROWHZ-4BR5PFB-VP5Y326-AFEP6NL-ORUMJQQ-SSYCQQO";
};
folders = {
"kgWDuKXLwWm9dalD" = {
path = "/home/user/docs";
devices = [
"dunamis"
"eldrid"
"legion"
"morphius"
"sarien"
];
};
"lPdfBZtxd6fATFp2" = {
path = "/home/user/programming";
devices = [
"dunamis"
"eldrid"
"morphius"
"legion"
"sarien"
];
};
};
};
};
};
}

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