Compare commits

..

150 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
178 changed files with 5745 additions and 4875 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> # NixOS Configuration
<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> ## So what is this?
<h2>TODOs:</h2>
<ul> This is a personal NixOS config based on
<li>i'll put that in when i recall what i wanted to add</li> [Blueprint](https://github.com/numtide/blueprint).
</ul> 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

View File

@ -1,24 +0,0 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
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 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.
For more information, please refer to <https://unlicense.org/>

715
flake.lock generated

File diff suppressed because it is too large Load Diff

126
flake.nix
View File

@ -2,42 +2,104 @@
description = "unexplrd's personal configuration"; description = "unexplrd's personal configuration";
inputs = { inputs = {
blueprint.url = "github:numtide/blueprint"; # lix = {
catppuccin.url = "github:catppuccin/nix"; # url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.1.tar.gz";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # inputs.nixpkgs.follows = "nixpkgs";
disko.url = "github:nix-community/disko/latest"; # };
home-manager.url = "github:nix-community/home-manager"; # neve = {
hyprland.url = "github:hyprwm/Hyprland"; # inputs.nixvim.follows = "nixvim";
hyprsunset.url = "github:hyprwm/hyprsunset"; # url = "git+https://gitea.linerds.us/unexplrd/Neve";
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2"; # };
# lix.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-2.tar.gz";
mysecrets.url = "git+ssh://gitea@gitea.linerds.us/unexplrd/nix-secrets";
# neve.url = "git+https://gitea.linerds.us/unexplrd/Neve";
# nixvim.url = "github:nix-community/nixvim"; # 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";
};
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-flatpak.url = "github:gmodena/nix-flatpak";
nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database = {
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic"; 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"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
# nixos-hardware.url = "github:NixOS/nixos-hardware/master";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; nixpkgs = {
sops-nix.url = "github:mic92/sops-nix"; url = "github:NixOS/nixpkgs/nixos-unstable";
stylix.url = "github:danth/stylix/8b0d9317edd57c5374adcf6957ae4775875c2a9d"; # workaround for `unexpected Nix daemon error: error: serialised integer 7022364302122705765 is too large for type 'j'`
# TODO: somehow reduce the number of *.inputs.nixpkgs.follows = "nixpkgs" stuff, mb a function? # url = "github:NixOS/nixpkgs/pull/413627/head";
blueprint.inputs.nixpkgs.follows = "nixpkgs"; };
chaotic.inputs.nixpkgs.follows = "nixpkgs"; sops-nix = {
disko.inputs.nixpkgs.follows = "nixpkgs"; url = "github:mic92/sops-nix";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
hyprland.inputs.nixpkgs.follows = "nixpkgs"; };
hyprsunset.inputs.hyprland-protocols.follows = "hyprland/hyprland-protocols"; stylix = {
hyprsunset.inputs.hyprutils.follows = "hyprland/hyprutils"; url = "github:danth/stylix";
hyprsunset.inputs.nixpkgs.follows = "nixpkgs"; inputs = {
lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; # home-manager.follows = "home-manager";
# lix.inputs.nixpkgs.follows = "nixpkgs"; nixpkgs.follows = "nixpkgs";
mysecrets.flake = false; systems.follows = "systems";
# neve.inputs.nixvim.follows = "nixvim"; };
nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; };
sops-nix.inputs.nixpkgs.follows = "nixpkgs"; walker = {
url = "github:abenz1267/walker";
inputs = {
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
};
}; };
outputs = inputs: inputs.blueprint {inherit inputs;}; outputs = inputs: inputs.blueprint {inherit inputs;};

View File

@ -1,38 +0,0 @@
{
inputs,
pkgs,
...
}: {
imports = with inputs;
[
chaotic.nixosModules.default
lanzaboote.nixosModules.lanzaboote
]
++ [
./loader.nix
];
boot = {
plymouth.enable = true;
consoleLogLevel = 0;
kernelPackages = pkgs.linuxPackages_cachyos;
kernelParams = [
"amd_iommu=force_isolation"
"debugfs=off"
"efi=disable_early_pci_dma"
"gather_data_sampling=force"
"intel_iommu=on"
"iommu.passthrough=0"
"iommu.strict=1"
"iommu=force"
"page_alloc.shuffle=1"
"vsyscall=none"
# "ia32_emulation=0"
# "lockdown=confidentiality"
# "module.sig_enforce=1"
];
initrd = {
systemd.enable = true; # needed for auto-unlocking with TPM
systemd.tpm2.enable = true;
};
};
}

View File

@ -1,15 +0,0 @@
{config, ...}: {
boot = {
lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
loader = {
efi.canTouchEfiVariables = true;
systemd-boot = {
enable = !config.boot.lanzaboote.enable;
consoleMode = "auto";
};
};
};
}

View File

@ -1,34 +1,42 @@
{inputs, ...}: { {inputs, ...}: {
imports = with inputs; [ imports = with inputs; [
self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./boot
./disko ./disko
./hardware ./misc
./minecraft.nix
./networking
./nix
./programs.nix
./services.nix
./sops.nix
./users.nix
]; ];
desktop.niri.enable = true; networking = {
environment.memoryAllocator.provider = "mimalloc"; hostId = "c7f6c4a1";
locale.ukrainian.enable = true; hostName = "dunamis";
module.stylix = {
enable = true;
theme = "helios";
}; };
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
module = {
config = {
secureBoot = true;
tpmDiskUnlock = true;
vaapi = "intel-media-driver";
};
stylix = {
enable = true;
theme = "sandcastle";
};
locale = "uk_UA.UTF-8";
misc = {
opentabletdriver.enable = false; opentabletdriver.enable = false;
qmk-vial.enable = true; qmk-vial.enable = true;
security.basic.enable = true; };
system.stateVersion = "25.05"; virt.libvirt.enable = true;
time.timeZone = "Europe/Kyiv";
virtual.libvirt.enable = true;
wireless = {
bluetooth.enable = true;
bluetooth.enableBlueman = false;
}; };
} }

View File

@ -1,4 +1,9 @@
{inputs, ...}: let {
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/disk/by-id/nvme-eui.000000000000000100a075244b5d6185"; disk = "/dev/disk/by-id/nvme-eui.000000000000000100a075244b5d6185";
in { in {
imports = with inputs; [ imports = with inputs; [
@ -10,5 +15,5 @@ in {
mountOptions = ["rw" "nosuid" "nodev"]; mountOptions = ["rw" "nosuid" "nodev"];
}; };
}; };
disko.devices.disk.main = import ./disk-main.nix {inherit disk;}; disko.devices.disk.main = import ./disk-main.nix {inherit disk hostId;};
} }

View File

@ -1,4 +1,7 @@
{disk, ...}: { {
disk,
hostId,
}: {
type = "disk"; type = "disk";
device = disk; device = disk;
content = { content = {
@ -25,41 +28,30 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "luks-main"; name = "luks-" + hostId;
initrdUnlock = true; initrdUnlock = true;
settings.allowDiscards = true; settings.allowDiscards = true;
content = { content = let
mountOptions = ["autodefrag" "compress-force=zstd" "noatime"];
in {
type = "btrfs"; type = "btrfs";
extraArgs = ["-f"]; extraArgs = ["-f"];
subvolumes = { subvolumes = {
"@nixos-root" = { "@nixos-root" = {
mountpoint = "/"; mountpoint = "/";
mountOptions = [ mountOptions = mountOptions ++ ["noexec"];
"compress=zstd"
"noatime"
"noexec"
];
}; };
"@home" = { "@home" = {
mountpoint = "/home"; mountpoint = "/home";
mountOptions = [ inherit mountOptions;
"compress=zstd"
"noatime"
];
}; };
"@storage" = { "@storage" = {
mountpoint = "/storage"; mountpoint = "/storage";
mountOptions = [ inherit mountOptions;
"compress=zstd"
"noatime"
];
}; };
"@nix" = { "@nix" = {
mountpoint = "/nix"; mountpoint = "/nix";
mountOptions = [ inherit mountOptions;
"compress-force=zstd"
"noatime"
];
}; };
}; };
}; };

View File

@ -1,7 +0,0 @@
{pkgs, ...}: {
hardware.graphics.extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
}

View File

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

View File

@ -1,9 +0,0 @@
{
imports = [
./network-manager.nix
./host-name-id.nix
];
networking = {
hosts = import ./hosts.nix;
};
}

View File

@ -1,6 +0,0 @@
{
networking = {
hostId = "c7f6c4a1";
hostName = "dunamis";
};
}

View File

@ -1,7 +0,0 @@
{
networking.networkmanager = {
enable = true;
ethernet.macAddress = "stable";
};
};
}

View File

@ -1,11 +0,0 @@
{pkgs, ...}: {
nix = {
package = pkgs.lixPackageSets.latest.lix;
channel.enable = false;
daemonCPUSchedPolicy = "idle";
settings = {
experimental-features = ["nix-command" "flakes"];
builders-use-substitutes = true;
};
};
}

View File

@ -1,30 +0,0 @@
{
config,
inputs,
...
}: let
inherit (builtins) readFile;
inherit (config.networking) hostName;
inherit (config.sops) secrets;
inherit (inputs) mysecrets;
pubHost = readFile "${mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
in {
nix = {
distributedBuilds = true;
buildMachines = [
{
hostName = "dunamis";
publicHostKey = pubHost;
sshKey = secrets."ssh-${hostName}-user".path;
sshUser = "nix-ssh";
supportedFeatures = [
"benchmark"
"big-parallel"
"kvm"
"nixos-test"
];
system = "x86_64-linux";
}
];
};
}

View File

@ -1,11 +0,0 @@
{config, ...}: let
inherit (builtins) readFile;
inherit (config.users.users) user;
in {
nix.settings.trusted-users = ["nix-ssh"];
nix.sshServe = {
enable = true;
write = true;
keys = map (f: readFile f) user.openssh.authorizedKeys.keyFiles;
};
}

View File

@ -1,14 +0,0 @@
{
inputs,
osConfig,
...
}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
self.homeModules.desktop
self.homeModules.programs
];
inherit (osConfig) desktop;
home.stateVersion = osConfig.system.stateVersion;
home.sessionPath = ["$HOME/.local/bin"];
}

View File

@ -1,7 +1 @@
{ {flake, ...}: {imports = [flake.modules.shared.user];}
imports = [
./common.nix
./flatpak.nix
./programs.nix
];
}

View File

@ -1,98 +0,0 @@
{pkgs, ...}: {
console.yazi.enable = true;
editor.helix.enable = true;
shell = {
fish.enable = true;
oh-my-posh.enable = true;
};
syncthing.enable = true;
terminal.wezterm.enable = true;
terminal.ghostty.enable = true;
systemd.user.settings.Manager.DefaultEnvironment = {
TERMINAL = "ghostty";
};
services = {
pueue.enable = true; # process queue in rust
ssh-agent.enable = true;
};
programs = {
bat.enable = true; # cat in rust
btop = {
enable = true;
settings.update_ms = 200;
};
direnv.enable = true;
direnv.silent = true;
eza.enable = true; # ls in rust
fd.enable = true; # find in rust
fzf.enable = true; # fuzzy finder in rust
git = {
enable = true;
delta.enable = true; # diff in rust
signing.format = "ssh";
aliases = {
cl = "clone";
co = "checkout";
pom = "push origin main";
};
};
gitui.enable = true; # git ui in rust
jujutsu.enable = true; # vcs in rust
keychain = {
enable = true;
keys = ["id_ed25519"];
};
nix-index-database.comma.enable = true;
nix-index.enable = true;
nix-your-shell.enable = true;
pay-respects.enable = true; # thefuck in rust
ripgrep.enable = true; # grep in rust
zoxide.enable = true; # fuzzy cd in rust
};
home.packages = with pkgs;
[
# development utils
alejandra # nix formatter in rust
devenv # programming deps in rust
jj-fzf # fuzzy finder jujutsu tui
just # make in rust
silicon # create code pics in rust
]
++ [
# console utils
bluetuith # bluetooth tui in go
dua # disk space usage in rust
duf # better df in go
fend # calculator in rust
mprocs # process runner in rust
ouch # archive manager in rust
procs # ps in rust
rbw # bitwarden cli in rust
sd # sed in rust
trashy # trash cli in rust
]
++ [
# misc apps
# vial # qmk keyboard configuring app
pinentry-qt # pinentry for rbw
virt-manager # libvirt gui
waycheck # check wayland protocols
];
xdg.desktopEntries = {
uni = {
actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\"";
categories = ["Utility" "X-Launch" "Network"];
comment = "Select and open or copy URLs from a list.";
exec = "fish -c \"~/.local/bin/uni\"";
icon = "web-browser";
name = "Uni URL Handler";
startupNotify = true;
terminal = false;
type = "Application";
};
};
}

View File

@ -1,39 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = with inputs;
[
chaotic.nixosModules.default
lanzaboote.nixosModules.lanzaboote
]
++ [
./loader.nix
];
boot = {
# kernelPackages = pkgs.linuxPackages_latest;
plymouth.enable = true;
consoleLogLevel = 0;
kernelPackages = pkgs.linuxPackages_cachyos;
kernelParams = [
"amd_iommu=force_isolation"
"debugfs=off"
"efi=disable_early_pci_dma"
"gather_data_sampling=force"
"intel_iommu=on"
"iommu.passthrough=0"
"iommu.strict=1"
"iommu=force"
"page_alloc.shuffle=1"
"vsyscall=none"
# "ia32_emulation=0"
# "lockdown=confidentiality"
# "module.sig_enforce=1"
];
initrd = {
systemd.enable = true; # needed for auto-unlocking with TPM
systemd.tpm2.enable = false; # no TPM
};
};
}

View File

@ -1,15 +0,0 @@
{config, ...}: {
boot = {
lanzaboote = {
enable = false;
pkiBundle = "/var/lib/sbctl";
};
loader = {
efi.canTouchEfiVariables = true;
systemd-boot = {
enable = !config.boot.lanzaboote.enable;
consoleMode = "auto";
};
};
};
}

View File

@ -1,30 +1,27 @@
{inputs, ...}: { {inputs, ...}: {
imports = with inputs; [ imports = with inputs; [
self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./boot
./disko ./disko
./hardware ./hardware
./networking ./misc
./nix
../dunamis/programs.nix
../dunamis/services.nix
../dunamis/sops.nix
../dunamis/users.nix
]; ];
desktop.plasma.enable = true; networking = {
hostId = "14f63637";
locale.ukrainian.enable = true; hostName = "eldrid";
module.stylix = {
enable = true;
theme = "nord";
}; };
security.basic.enable = true; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
system.stateVersion = "25.05"; desktop.niri.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
swapDevices = [ swapDevices = [
{ {
@ -33,7 +30,21 @@
} }
]; ];
time.timeZone = "Europe/Kyiv"; module = {
config = {
# virtual.libvirt.enable = true; 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;
};
};
} }

View File

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

View File

@ -1,4 +1,7 @@
{disk, ...}: { {
disk,
hostId,
}: {
type = "disk"; type = "disk";
device = disk; device = disk;
content = { content = {
@ -25,7 +28,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "luks-main"; name = "luks-" + hostId;
initrdUnlock = true; initrdUnlock = true;
settings.allowDiscards = true; settings.allowDiscards = true;
content = { content = {

View File

@ -1,8 +1,6 @@
{ {
imports = [ imports = [
./facter.nix
./laptop ./laptop
./vaapi/intel-media-driver.nix
]; ];
services = { services = {
logind = { logind = {

View File

@ -1,14 +0,0 @@
{
config,
inputs,
...
}: let
inherit (inputs) mysecrets;
inherit (config.networking) hostName;
in {
imports = with inputs; [
nixos-facter-modules.nixosModules.facter
];
facter.reportPath = "${mysecrets}/facter/${hostName}.json";
systemd.network.wait-online.enable = false;
}

View File

@ -1,20 +1,47 @@
{pkgs, ...}: let {pkgs, ...}: let
cb-ucm-conf = pkgs.alsa-ucm-conf.overrideAttrs { cb-ucm-conf = with pkgs;
wttsrc = pkgs.fetchFromGitHub { alsa-ucm-conf.overrideAttrs {
wttsrc = fetchFromGitHub {
owner = "WeirdTreeThing"; owner = "WeirdTreeThing";
repo = "chromebook-ucm-conf"; repo = "alsa-ucm-conf-cros";
rev = "b6ce2a7"; rev = "a4f0ed6cf59163fb571c33a81a6b40b6f53ed57d";
hash = "sha256-QRUKHd3RQmg1tnZU8KCW0AmDtfw/daOJ/H3XU5qWTCc="; hash = "sha256-H0BsRzHSEJ6XCZB/Rvb3w+uGCzr+kAvAwcHWqYEtp6w=";
}; };
postInstall = '' unpackPhase = ''
cp -R $wttsrc/common/* $out/share/alsa/ucm2/common runHook preUnpack
cp -R $wttsrc/codecs/* $out/share/alsa/ucm2/codecs tar xf "$src"
cp -R $wttsrc/platforms/* $out/share/alsa/ucm2/platforms runHook postUnpack
cp -R $wttsrc/sof-rt5682 $out/share/alsa/ucm2/conf.d '';
cp -R $wttsrc/sof-cs42l42 $out/share/alsa/ucm2/conf.d
installPhase = ''
runHook preInstall
mkdir -p $out/share/alsa
cp -r alsa-ucm*/ucm2 $out/share/alsa
runHook postInstall
''; '';
}; };
in { 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 = [ system.replaceDependencies.replacements = [
{ {
original = pkgs.alsa-ucm-conf; original = pkgs.alsa-ucm-conf;
@ -22,6 +49,10 @@ in {
} }
]; ];
boot.extraModprobeConfig = ''
options snd-intel-dspcfg dsp_driver=3
'';
services.pipewire.wireplumber.configPackages = [ services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" '' (pkgs.writeTextDir "share/wireplumber/main.lua.d/51-increase-headroom.lua" ''
rule = { rule = {
@ -37,10 +68,19 @@ in {
table.insert(alsa_monitor.rules,rule) table.insert(alsa_monitor.rules,rule)
'') '')
]; (pkgs.writeTextDir "share/wireplumber/main.lua.d/51-avs-dmic.lua" ''
boot = { rule = {
extraModprobeConfig = '' matches = {
options snd-intel-dspcfg dsp_driver=3 {
''; { "node.nick", "equals", "Internal Microphone" },
}; },
},
apply_properties = {
["audio.format"] = "S16LE",
},
}
table.insert(alsa_monitor.rules, rule)
'')
];
} }

View File

@ -2,8 +2,6 @@
imports = [ imports = [
./cb-audio-fix.nix ./cb-audio-fix.nix
./cb-keyboard.nix ./cb-keyboard.nix
./home-row-mods.nix
./power-saving.nix
./touchscreen-fix.nix ./touchscreen-fix.nix
]; ];
} }

View File

@ -1,20 +0,0 @@
{
services.keyd = {
enable = true;
keyboards = {
default = {
ids = ["0001:0001"];
settings.main = {
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

@ -1,7 +0,0 @@
{
powerManagement.enable = true;
powerManagement.powertop.enable = true;
services.power-profiles-daemon.enable = true;
services.thermald.enable = true;
services.upower.enable = true;
}

View File

@ -1,7 +0,0 @@
{pkgs, ...}: {
hardware.graphics.extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
}

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,9 +0,0 @@
{
imports = [
./network-manager.nix
./host-name-id.nix
];
networking = {
hosts = import ./hosts.nix;
};
}

View File

@ -1,6 +0,0 @@
{
networking = {
# hostId = "";
hostName = "eldrid";
};
}

View File

@ -1,3 +0,0 @@
{
"192.168.1.42" = ["dunamis"];
}

View File

@ -1,11 +0,0 @@
{pkgs, ...}: {
nix = {
package = pkgs.lixPackageSets.latest.lix;
channel.enable = false;
daemonCPUSchedPolicy = "idle";
settings = {
experimental-features = ["nix-command" "flakes"];
builders-use-substitutes = true;
};
};
}

View File

@ -1,7 +0,0 @@
{
imports = [
./common.nix
./substituters.nix
./distributed-build.nix
];
}

View File

@ -1,30 +0,0 @@
{
config,
inputs,
...
}: let
inherit (builtins) readFile;
inherit (config.networking) hostName;
inherit (config.sops) secrets;
inherit (inputs) mysecrets;
pubHost = readFile "${mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
in {
nix = {
distributedBuilds = true;
buildMachines = [
{
hostName = "dunamis";
publicHostKey = pubHost;
sshKey = secrets."ssh-${hostName}-user".path;
sshUser = "nix-ssh";
supportedFeatures = [
"benchmark"
"big-parallel"
"kvm"
"nixos-test"
];
system = "x86_64-linux";
}
];
};
}

View File

@ -1,10 +0,0 @@
{config, ...}: let
inherit (builtins) readFile;
inherit (config.users.users) user;
in {
nix.sshServe = {
enable = true;
write = true;
keys = map (f: readFile f) user.openssh.authorizedKeys.keyFiles;
};
}

View File

@ -1,16 +0,0 @@
{
nix.settings = {
substituters = [
"https://cache.nixos.org/"
"https://chaotic-nyx.cachix.org/"
"https://cosmic.cachix.org/"
"https://nix-community.cachix.org/"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
}

View File

@ -1,100 +0,0 @@
{inputs, ...}: {
imports = with 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"
"de.haeckerfelix.Fragments"
"org.qbittorrent.qBittorrent"
# "com.transmissionbt.Transmission"
"com.usebottles.bottles"
"com.logseq.Logseq"
# chatting
"org.signal.Signal"
"im.riot.Riot"
"org.telegram.desktop"
"io.github.kukuruzka165.materialgram"
"io.github.spacingbat3.webcord"
"org.mozilla.Thunderbird"
# media
"io.bassi.Amberol"
"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 = [
"!host"
"!home"
"!~/.ssh"
"xdg-run/pipewire-0"
"xdg-config/gtk-3.0:ro"
"xdg-config/gtk-4.0:ro"
"~/.local/share/icons:ro"
"/nix/store:ro"
];
};
Environment = {
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
};
};
"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,7 +1 @@
{lib, ...}: { {flake, ...}: {imports = [flake.modules.shared.user];}
imports = [
../../../dunamis/users/user/common.nix
../../../dunamis/users/user/programs.nix
../../../dunamis/users/user/flatpak.nix
];
}

View File

@ -1,56 +0,0 @@
{
pkgs,
config,
inputs,
...
}: {
imports = with inputs; [
chaotic.nixosModules.default
lanzaboote.nixosModules.lanzaboote
];
boot = {
# kernelPackages = pkgs.linuxPackages_latest;
consoleLogLevel = 0;
kernelPackages = pkgs.linuxPackages_cachyos;
kernelModules = ["kvm-amd"];
kernelParams = [
# "mitigations=auto"
# "spectre_v2=on"
# "spectre_v2_user=on"
# "spectre_bhi=on"
# "spec_store_bypass_disable=on"
# "tsx=off"
# "kvm.nx_huge_pages=force"
# "l1d_flush=on"
"amd_iommu=force_isolation"
"debugfs=off"
"efi=disable_early_pci_dma"
"gather_data_sampling=force"
# "ia32_emulation=0"
"intel_iommu=on"
"iommu.passthrough=0"
"iommu.strict=1"
"iommu=force"
# "lockdown=confidentiality"
# "module.sig_enforce=1"
"page_alloc.shuffle=1"
# "reg_file_data_sampling=on"
# "spec_rstack_overflow=safe-ret"
"vsyscall=none"
];
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
systemd.enable = true; # needed for auto-unlocking with TPM
};
loader.efi.canTouchEfiVariables = true;
loader.systemd-boot = {
enable = !config.boot.lanzaboote.enable;
consoleMode = "auto";
};
lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
plymouth.enable = true;
};
}

View File

@ -1,40 +1,41 @@
{inputs, ...}: { {inputs, ...}: {
imports = with inputs; [ imports = with inputs; [
self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
../dunamis/programs.nix ./disko
./boot.nix ./hardware
./disko.nix ./misc
./hardware.nix
./networking.nix
./nix.nix
./power-saving.nix
./services.nix
./sops.nix
./users.nix
]; ];
desktop.niri.enable = true; networking = {
environment.memoryAllocator.provider = "mimalloc"; hostId = "45b00123";
locale.ukrainian.enable = true; hostName = "legion";
module.stylix = {
enable = true;
theme = "helios";
}; };
opentabletdriver.enable = false;
qmk-vial.enable = true; system.stateVersion = "25.11";
security.basic.enable = true;
system.stateVersion = "25.05";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
virtual.libvirt.enable = true;
wireless = { desktop.niri.enable = true;
bluetooth.enable = true;
bluetooth.enableBlueman = 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;
}; };
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024;
}
];
} }

View File

@ -1,115 +0,0 @@
{inputs, ...}: let
disk = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B";
disk1 = "/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 = {
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-main";
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@root-nixos" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"noatime"
# "noexec"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@swap" = {
mountpoint = "/swap";
mountOptions = [
# "compress=zstd"
"noatime"
];
};
# "@nix" = {
# mountpoint = "/nix";
# mountOptions = [
# "compress-force=zstd"
# "noatime"
# ];
# };
};
};
};
};
};
};
};
disko.devices.disk.second = {
type = "disk";
device = disk1;
content = {
type = "gpt";
partitions = {
luks = {
size = "100%";
content = {
type = "luks";
name = "luks-second";
initrdUnlock = true;
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@storage" = {
mountpoint = "/storage";
mountOptions = [
"compress=zstd"
"noatime"
];
};
};
};
};
};
};
};
};
}

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

@ -1,41 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
inputs,
lib,
modulesPath,
...
}: {
imports = with inputs.nixos-hardware.nixosModules; [
(modulesPath + "/installer/scan/not-detected.nix")
lenovo-legion-15ach6h
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = {
enableRedistributableFirmware = true;
nvidia-container-toolkit.enable = true;
nvidia = {
dynamicBoost.enable = true;
powerManagement.finegrained = false;
};
};
services.keyd = {
enable = true;
keyboards.laptop = {
ids = ["048d:c101"];
settings.main = {
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 = [
./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

@ -1,6 +0,0 @@
{
networking = {
hostName = "legion";
networkmanager.enable = true;
};
}

View File

@ -1,14 +0,0 @@
# TODO: better file name
{
config,
pkgs,
...
}: {
nixpkgs.config.allowUnfree = true;
nix = {
package = pkgs.lix;
channel.enable = false;
settings.experimental-features = ["nix-command" "flakes"];
daemonCPUSchedPolicy = "idle";
};
}

View File

@ -1,7 +0,0 @@
{
powerManagement.enable = true;
powerManagement.powertop.enable = true;
services.power-profiles-daemon.enable = true;
services.thermald.enable = true;
services.upower.enable = true;
}

View File

@ -1,19 +0,0 @@
{
pkgs,
lib,
...
}: {
programs = {
fish.enable = true;
mosh.enable = true;
nh = {
enable = true;
flake = "/home/user/.config/nixos";
};
};
environment.systemPackages = with pkgs; [
(lib.hiPrio uutils-coreutils-noprefix)
helix
nushell
];
}

View File

@ -1,34 +0,0 @@
{
services = {
# hardware.openrgb.enable = true;
flatpak.enable = true;
fwupd.enable = true;
openssh.enable = true;
syncthing.openDefaultPorts = true;
dnscrypt-proxy2 = {
enable = true;
settings = {
require_dnssec = true;
server_names = ["mullvad-doh"];
bootstrap_resolvers = ["9.9.9.11:53" "9.9.9.9:53"];
};
};
opensnitch = {
enable = false;
settings = {
DefaultAaction = "deny";
Firewall = "iptables";
InterceptUnknown = true;
ProcMonitorMethod = "ebpf";
};
};
scx = {
enable = false;
scheduler = "scx_flash";
};
logind = {
lidSwitch = "ignore";
powerKey = "suspend";
};
};
}

View File

@ -1,64 +0,0 @@
{
config,
inputs,
...
}: let
inherit (inputs) mysecrets;
hostName =
if (config.networking.hostName == "vylxae")
then "sarien"
else config.networking.hostName;
sopsFile = mysecrets + "/hosts/${hostName}.yaml";
dotSsh = name: "/home/user/.ssh/" + name;
sshKey = {
mode = "0400";
owner = "user";
};
in {
imports = with inputs; [
sops-nix.nixosModules.sops
];
sops = {
age = {
sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = true;
};
defaultSopsFile = mysecrets + "/common.yaml";
secrets = {
"user-password-hashed".neededForUsers = true;
"ssh-config" = {
path = dotSsh "config";
mode = "0400";
owner = "user";
};
"ssh-${hostName}-user" = {
inherit sopsFile;
inherit (sshKey) mode owner;
path = dotSsh "id_ed25519";
};
"ssh-${hostName}-user.pub" = {
inherit sopsFile;
inherit (sshKey) mode owner;
path = dotSsh "id_ed25519.pub";
};
"ssh-unexplrd" = {
inherit (sshKey) mode owner;
path = dotSsh "id_unexplrd_ed25519";
};
"ssh-unexplrd.pub" = {
inherit (sshKey) mode owner;
path = dotSsh "id_unexplrd_ed25519.pub";
};
"ssh-uni" = {
inherit (sshKey) mode owner;
path = dotSsh "id_uni_ed25519";
};
"ssh-uni.pub" = {
inherit (sshKey) mode owner;
path = dotSsh "id_uni_ed25519.pub";
};
};
};
}

View File

@ -1,26 +0,0 @@
{
inputs,
config,
pkgs,
...
}: let
inherit (config.sops) secrets;
inherit (inputs) mysecrets;
in {
nix.settings.trusted-users = ["user" "nix-ssh"];
users.mutableUsers = false;
users.users = {
user = {
hashedPasswordFile = secrets."user-password-hashed".path;
extraGroups = ["wheel" "video" "libvirtd" "dialout"];
isNormalUser = true;
shell = pkgs.fish;
openssh.authorizedKeys.keyFiles = map (f: "${mysecrets}/ssh/user/id_${f}_ed25519.pub") [
"dunamis"
"eldrid"
"sarien"
"legion"
];
};
};
}

View File

@ -1,7 +1 @@
{ {flake, ...}: {imports = [flake.modules.shared.user];}
imports = [
../../../dunamis/users/user/common.nix
../../../dunamis/users/user/flatpak.nix
../../../dunamis/users/user/programs.nix
];
}

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

@ -1,11 +1,15 @@
{disk, ...}: { {
disk,
hostId,
...
}: {
type = "disk"; type = "disk";
device = disk; device = disk;
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
ESP = { ESP = {
size = "2G"; size = "1G";
type = "EF00"; type = "EF00";
content = { content = {
type = "filesystem"; type = "filesystem";
@ -25,7 +29,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "luks-main"; name = "luks-" + hostId;
initrdUnlock = true; initrdUnlock = true;
settings.allowDiscards = true; settings.allowDiscards = true;
content = { content = {
@ -61,6 +65,12 @@
"noatime" "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,13 +0,0 @@
{inputs, ...}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
self.homeModules.programs
./programs.nix
];
home = {
stateVersion = "25.05";
sessionPath = [
"$HOME/.local/bin"
];
};
}

View File

@ -1,60 +0,0 @@
{pkgs, ...}: {
shell = {
fish.enable = true;
#nushell.enable = true;
oh-my-posh.enable = true;
};
console.yazi.enable = true;
services.ssh-agent.enable = true;
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";
};
};
jujutsu.enable = true;
ripgrep.enable = true;
};
editor = {
helix.enable = true;
};
home.packages = with pkgs; [
alejandra # nix formatter in rust
trashy # trash cli in rust
devenv # programming deps in rust
procs # ps in rust
ouch # archive manager in runt
dust # du in rust
fend # calc in rust
moar # better pager (in go)
just # make in rust
rbw # bitwarden cli in rust
jj-fzf # fuzzy finder jujutsu tui
];
systemd.user.settings.Manager.DefaultEnvironment.PAGER = "moar";
}

View File

@ -1,39 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = with inputs;
[
chaotic.nixosModules.default
lanzaboote.nixosModules.lanzaboote
]
++ [
./loader.nix
];
boot = {
# kernelPackages = pkgs.linuxPackages_latest;
plymouth.enable = true;
consoleLogLevel = 0;
kernelPackages = pkgs.linuxPackages_cachyos;
kernelParams = [
"amd_iommu=force_isolation"
"debugfs=off"
"efi=disable_early_pci_dma"
"gather_data_sampling=force"
"intel_iommu=on"
"iommu.passthrough=0"
"iommu.strict=1"
"iommu=force"
"page_alloc.shuffle=1"
"vsyscall=none"
# "ia32_emulation=0"
# "lockdown=confidentiality"
# "module.sig_enforce=1"
];
initrd = {
systemd.enable = true; # needed for auto-unlocking with TPM
systemd.tpm2.enable = false; # no TPM
};
};
}

View File

@ -1,15 +0,0 @@
{config, ...}: {
boot = {
lanzaboote = {
enable = false;
pkiBundle = "/var/lib/sbctl";
};
loader = {
efi.canTouchEfiVariables = true;
systemd-boot = {
enable = !config.boot.lanzaboote.enable;
consoleMode = "auto";
};
};
};
}

View File

@ -1,34 +1,54 @@
{ {inputs, ...}: {
inputs,
pkgs,
...
}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./boot self.modules.shared.nixos
./disko ./disko
./hardware ./hardware
./networking ./misc
./nix
../dunamis/programs.nix
../dunamis/services.nix
../dunamis/sops.nix
../dunamis/users.nix
]; ];
system.stateVersion = "25.05"; networking = {
time.timeZone = "Europe/Kyiv"; hostId = "31150fae";
hostName = "sarien";
module.stylix = {
enable = true;
theme = "helios";
}; };
system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true; desktop.niri.enable = true;
locale.ukrainian.enable = true; services.displayManager.autoLogin = {
qmk-vial.enable = true; enable = true;
security.basic.enable = true; user = "user";
virtual.libvirt.enable = true; };
swapDevices = [
{
device = "/swap/swapfile";
size = 4 * 1024;
priority = 100;
}
{
device = "/swap/hibernate";
size = 16 * 1024;
priority = 1;
}
];
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;
};
} }

View File

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

View File

@ -1,8 +1,6 @@
{ {
imports = [ imports = [
./facter.nix
./laptop ./laptop
./vaapi/intel-media-driver.nix
]; ];
services = { services = {
logind = { logind = {

View File

@ -1,14 +0,0 @@
{
config,
inputs,
...
}: let
inherit (inputs) mysecrets;
inherit (config.networking) hostName;
in {
imports = with inputs; [
nixos-facter-modules.nixosModules.facter
];
facter.reportPath = "${mysecrets}/facter/${hostName}.json";
systemd.network.wait-online.enable = false;
}

View File

@ -1,7 +1,5 @@
{ {
imports = [ imports = [
./home-row-mods.nix
./keyboard-fix.nix ./keyboard-fix.nix
./power-saving.nix
]; ];
} }

View File

@ -1,20 +0,0 @@
{
services.keyd = {
enable = true;
keyboards = {
default = {
ids = ["0001:0001"];
settings.main = {
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

@ -1,7 +0,0 @@
{
powerManagement.enable = true;
powerManagement.powertop.enable = true;
services.power-profiles-daemon.enable = true;
services.thermald.enable = true;
services.upower.enable = true;
}

View File

@ -1,7 +0,0 @@
{pkgs, ...}: {
hardware.graphics.extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
}

View File

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

View File

@ -1,9 +0,0 @@
{
imports = [
./network-manager.nix
./host-name-id.nix
];
networking = {
hosts = import ./hosts.nix;
};
}

View File

@ -1,6 +0,0 @@
{
networking = {
hostId = "31150fae";
hostName = "sarien";
};
}

View File

@ -1,3 +0,0 @@
{
"192.168.1.42" = ["dunamis"];
}

View File

@ -1,20 +0,0 @@
{
networking = {
networkmanager = {
enable = true;
ethernet.macAddress = "stable";
wifi = {
backend = "iwd";
macAddress = "random";
scanRandMacAddress = true;
};
};
wireless.iwd = {
enable = true;
settings = {
General.AddressRandomization = "network";
Settings.AlwaysRandomizeAddress = true;
};
};
};
}

View File

@ -1,11 +0,0 @@
{pkgs, ...}: {
nix = {
package = pkgs.lixPackageSets.latest.lix;
channel.enable = false;
daemonCPUSchedPolicy = "idle";
settings = {
experimental-features = ["nix-command" "flakes"];
builders-use-substitutes = true;
};
};
}

View File

@ -1,7 +0,0 @@
{
imports = [
./common.nix
./substituters.nix
./distributed-build.nix
];
}

View File

@ -1,30 +0,0 @@
{
config,
inputs,
...
}: let
inherit (builtins) readFile;
inherit (config.networking) hostName;
inherit (config.sops) secrets;
inherit (inputs) mysecrets;
pubHost = readFile "${mysecrets}/ssh/ssh_host_ed25519_dunamis.base64";
in {
nix = {
distributedBuilds = true;
buildMachines = [
{
hostName = "dunamis";
publicHostKey = pubHost;
sshKey = secrets."ssh-${hostName}-user".path;
sshUser = "nix-ssh";
supportedFeatures = [
"benchmark"
"big-parallel"
"kvm"
"nixos-test"
];
system = "x86_64-linux";
}
];
};
}

View File

@ -1,10 +0,0 @@
{config, ...}: let
inherit (builtins) readFile;
inherit (config.users.users) user;
in {
nix.sshServe = {
enable = true;
write = true;
keys = map (f: readFile f) user.openssh.authorizedKeys.keyFiles;
};
}

View File

@ -1,16 +0,0 @@
{
nix.settings = {
substituters = [
"https://cache.nixos.org/"
"https://chaotic-nyx.cachix.org/"
"https://cosmic.cachix.org/"
"https://nix-community.cachix.org/"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
}

View File

@ -1,7 +1 @@
{ {flake, ...}: {imports = [flake.modules.shared.user];}
imports = [
../../../dunamis/users/user/common.nix
../../../dunamis/users/user/programs.nix
../../../dunamis/users/user/flatpak.nix
];
}

View File

@ -1,5 +1,4 @@
{ {
imports = [ imports = [
./xdg-userdirs.nix
]; ];
} }

View File

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

View File

@ -1,6 +1,6 @@
{ {
imports = [ imports = [
./common # ./common
./cosmic ./cosmic
./gnome ./gnome
./hyprland ./hyprland

View File

@ -1,4 +1,5 @@
{ {
osConfig,
config, config,
pkgs, pkgs,
lib, lib,
@ -13,33 +14,63 @@ in {
mkEnableOption "enable gnome desktop"; mkEnableOption "enable gnome desktop";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; [ home.packages =
gnomeExtensions.alphabetical-app-grid (with pkgs.gnomeExtensions; [
gnomeExtensions.removable-drive-menu # extensions
gnomeExtensions.caffeine alphabetical-app-grid
gnomeExtensions.space-bar app-icons-taskbar
gnomeExtensions.switcher caffeine
gnomeExtensions.tactile pano
gnomeExtensions.pano removable-drive-menu
gnomeExtensions.window-is-ready-remover space-bar
switcher
tactile
window-is-ready-remover
])
++ (with pkgs; [
# regular packages
junction junction
celluloid celluloid
mission-center mission-center
dconf dconf
pwvucontrol pwvucontrol
wl-clipboard wl-clipboard
]; ]);
programs.gnome-shell.extensions = [ programs.gnome-shell.extensions = [
{package = pkgs.gnomeExtensions.alphabetical-app-grid;} {package = pkgs.gnomeExtensions.alphabetical-app-grid;}
{package = pkgs.gnomeExtensions.app-icons-taskbar;}
{package = pkgs.gnomeExtensions.removable-drive-menu;}
{package = pkgs.gnomeExtensions.caffeine;} {package = pkgs.gnomeExtensions.caffeine;}
{package = pkgs.gnomeExtensions.pano;}
{package = pkgs.gnomeExtensions.removable-drive-menu;}
{package = pkgs.gnomeExtensions.space-bar;} {package = pkgs.gnomeExtensions.space-bar;}
{package = pkgs.gnomeExtensions.switcher;} {package = pkgs.gnomeExtensions.switcher;}
{package = pkgs.gnomeExtensions.tactile;} {package = pkgs.gnomeExtensions.tactile;}
{package = pkgs.gnomeExtensions.pano;}
{package = pkgs.gnomeExtensions.window-is-ready-remover;} {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; { dconf.settings = with lib.hm.gvariant; {
"org/gnome/desktop/a11y/applications" = { "org/gnome/desktop/a11y/applications" = {
screen-reader-enabled = false; screen-reader-enabled = false;
@ -54,12 +85,12 @@ in {
"org/gnome/desktop/input-sources" = { "org/gnome/desktop/input-sources" = {
mru-sources = [(mkTuple ["xkb" "us"])]; mru-sources = [(mkTuple ["xkb" "us"])];
sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])]; # sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
xkb-options = ["terminate:ctrl_alt_bksp"]; xkb-options = ["terminate:ctrl_alt_bksp"];
}; };
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
accent-color = "slate"; # accent-color = "slate";
clock-show-seconds = true; clock-show-seconds = true;
color-scheme = "prefer-dark"; color-scheme = "prefer-dark";
enable-animations = true; enable-animations = true;
@ -100,8 +131,8 @@ in {
move-to-workspace-last = ["<Shift><Control><Super>End"]; move-to-workspace-last = ["<Shift><Control><Super>End"];
move-to-workspace-left = ["<Control><Super>Left"]; move-to-workspace-left = ["<Control><Super>Left"];
move-to-workspace-right = ["<Control><Super>Right"]; move-to-workspace-right = ["<Control><Super>Right"];
switch-input-source = ["<Super>Escape"]; switch-input-source = ["<Super>Space"];
switch-input-source-backward = ["<Shift><Super>Escape"]; switch-input-source-backward = ["<Shift><Super>Space"];
switch-to-workspace-1 = ["<Super>1"]; switch-to-workspace-1 = ["<Super>1"];
switch-to-workspace-2 = ["<Super>2"]; switch-to-workspace-2 = ["<Super>2"];
switch-to-workspace-3 = ["<Super>3"]; switch-to-workspace-3 = ["<Super>3"];
@ -135,7 +166,18 @@ in {
}; };
"org/gnome/shell" = { "org/gnome/shell" = {
enabled-extensions = ["drive-menu@gnome-shell-extensions.gcampax.github.com" "caffeine@patapon.info" "AlphabeticalAppGrid@stuarthayhurst" "appindicatorsupport@rgcjonas.gmail.com" "user-theme@gnome-shell-extensions.gcampax.github.com" "tactile@lundal.io" "switcher@landau.fi" "pano@elhan.io" "space-bar@luchrioh"]; 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" = { "org/gnome/shell/app-switcher" = {
@ -167,6 +209,21 @@ in {
workspace-indicator = true; 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" = { "org/gnome/shell/extensions/tactile" = {
background-color = "#${colors.base00}"; background-color = "#${colors.base00}";
border-color = "#${colors.base0D}"; border-color = "#${colors.base0D}";

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;};
};
}

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