Compare commits

...

52 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
56 changed files with 1491 additions and 1287 deletions

546
flake.lock generated
View File

@ -20,11 +20,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749155310, "lastModified": 1751740947,
"narHash": "sha256-t0HfHg/1+TbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY=", "narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3", "rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -105,7 +105,9 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems" "systems": [
"systems"
]
}, },
"locked": { "locked": {
"lastModified": 1744632722, "lastModified": 1744632722,
@ -123,7 +125,6 @@
}, },
"chaotic": { "chaotic": {
"inputs": { "inputs": {
"fenix": "fenix",
"flake-schemas": "flake-schemas", "flake-schemas": "flake-schemas",
"home-manager": [ "home-manager": [
"home-manager" "home-manager"
@ -131,14 +132,15 @@
"jovian": "jovian", "jovian": "jovian",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1749559516, "lastModified": 1752318841,
"narHash": "sha256-lL1GFZnMjjo0Tx8u9C2Cv0+aogvF98CgUCwsUl2pTmE=", "narHash": "sha256-/Vfi3vmpBDaEDCdPYEOgUIUTyt2lOTRWVj3ESBRIChY=",
"owner": "chaotic-cx", "owner": "chaotic-cx",
"repo": "nyx", "repo": "nyx",
"rev": "b86053e6253c4b996bb81cc9fd490136da2f6aa6", "rev": "b342f1adfa040963c9b00f4f1755def9f8588a58",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -184,28 +186,6 @@
"type": "github" "type": "github"
} }
}, },
"fenix": {
"inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1749451322,
"narHash": "sha256-t53R3kSDl4Jie+Ooxi/aQFN2ODRp1tXQSJBevOt3IkQ=",
"owner": "nix-community",
"repo": "fenix",
"rev": "77de5067629e201436c76f14f96614a19368c4ae",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -225,11 +205,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1747046372,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -255,6 +235,22 @@
} }
}, },
"flake-compat_3": { "flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1746162366, "lastModified": 1746162366,
@ -270,21 +266,6 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_4": {
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@ -314,11 +295,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1743550720, "lastModified": 1751413152,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5", "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -341,6 +322,26 @@
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
} }
}, },
"flake-utils": {
"inputs": {
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -357,29 +358,27 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": { "ghostty": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": "flake-compat",
"stylix", "flake-utils": "flake-utils",
"flake-compat"
],
"gitignore": "gitignore_3",
"nixpkgs": [ "nixpkgs": [
"stylix",
"nixpkgs" "nixpkgs"
] ],
"zig": "zig",
"zon2nix": "zon2nix"
}, },
"locked": { "locked": {
"lastModified": 1747372754, "lastModified": 1752293658,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "narHash": "sha256-p4I9YxndfMpcHg9EVcy5+BACLp2GBjpVMbXuJ/glYnw=",
"owner": "cachix", "owner": "ghostty-org",
"repo": "git-hooks.nix", "repo": "ghostty",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "rev": "e67a62453d8e75e82b581a340e70896f722a7f0f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "cachix", "owner": "ghostty-org",
"repo": "git-hooks.nix", "repo": "ghostty",
"type": "github" "type": "github"
} }
}, },
@ -427,41 +426,19 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_3": {
"inputs": {
"nixpkgs": [
"stylix",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1744584021, "lastModified": 1748186689,
"narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", "narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", "rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "GNOME", "owner": "GNOME",
"ref": "48.1", "ref": "48.2",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "github" "type": "github"
} }
@ -473,11 +450,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749526396, "lastModified": 1752286566,
"narHash": "sha256-UL9F76abAk87llXOrcQRjhd5OaOclUd6MIltsqcUZmo=", "narHash": "sha256-A4nftqiNz2bNihz0bKY94Hq/6ydR6UQOcGioeL7iymY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "427c96044f11a5da50faf6adaf38c9fa47e6d044", "rev": "392ddb642abec771d63688c49fa7bcbb9d2a5717",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -531,11 +508,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749238452, "lastModified": 1751808145,
"narHash": "sha256-8qiKEWcxUrjpUpK+WyFNg/72C8rp70LUuyTD23T+SdQ=", "narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprgraphics", "repo": "hyprgraphics",
"rev": "c7225d73755a6c4c7c72f4d4f3925ea426e325a8", "rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -558,15 +535,17 @@
"nixpkgs" "nixpkgs"
], ],
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"systems": "systems_2", "systems": [
"systems"
],
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1749540031, "lastModified": 1752270468,
"narHash": "sha256-11k6hq/4Tao2PNBFQpSNTlFFKmKGswL17caKuZIE0sM=", "narHash": "sha256-SEFxC9q+BMn1FkeaBRCDb0h7hZ2B+MSi8+u85y4rgQY=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "6bdb1f413e4c592f73d91bef33dfb202503ef7ab", "rev": "6821723b4421bdf163f1a1cc6fd472516d44b1e7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -655,11 +634,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749155776, "lastModified": 1750371812,
"narHash": "sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4=", "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-qtutils", "repo": "hyprland-qtutils",
"rev": "396e8aa1c06274835b69da7f9a015fff9a9b7522", "rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -684,11 +663,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749145882, "lastModified": 1750371198,
"narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -707,18 +686,24 @@
"hyprland", "hyprland",
"hyprutils" "hyprutils"
], ],
"hyprwayland-scanner": "hyprwayland-scanner_2", "hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_3" "systems": [
"hyprland",
"systems"
]
}, },
"locked": { "locked": {
"lastModified": 1749186395, "lastModified": 1751567624,
"narHash": "sha256-4PMO6bm0hHEOzGEhXRYSCLpkGT6lGwvax8GkLo+nK5w=", "narHash": "sha256-tUVODSZhvafXmuN+5SwZpNWV+2cvhSd+5IJ5TXu3YgI=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprsunset", "repo": "hyprsunset",
"rev": "4528cca4b2e4b44ed0a4e767a0ba493770d9d141", "rev": "4b2f0f9f46a6552930eecb979d18ac48d7079312",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -739,11 +724,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749135356, "lastModified": 1751888065,
"narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", "narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", "rev": "a8229739cf36d159001cfc203871917b83fdf917",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -764,36 +749,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749145760, "lastModified": 1751881472,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", "narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", "rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"hyprwayland-scanner_2": {
"inputs": {
"nixpkgs": [
"hyprsunset",
"nixpkgs"
],
"systems": [
"hyprsunset",
"systems"
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -811,11 +771,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749495634, "lastModified": 1752218319,
"narHash": "sha256-NPifVq2XZGRCsLBoUt6M5YUTiIh23+ubq57w7mSODt8=", "narHash": "sha256-fEvLVaVduwVotOib8NqO0e4N3dMsdA04Jlfm2sZQH5Q=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "c40d2f31f92571bf341497884174a132829ef0fc", "rev": "d5da490d8c2553fc8d589b49f9c036973b9656a1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -827,13 +787,13 @@
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_3",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"pre-commit-hooks-nix": "pre-commit-hooks-nix", "pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1737639419, "lastModified": 1737639419,
@ -868,11 +828,11 @@
}, },
"nix-flatpak": { "nix-flatpak": {
"locked": { "locked": {
"lastModified": 1749394952, "lastModified": 1751276396,
"narHash": "sha256-WbWkzIvB0gqAdBLghdmUpGveY7MlAS2iMj3VEJnJ9yE=", "narHash": "sha256-oOYrnKStMsOXST+wKnzuSZ49h8Dr1Q3mIn2f5Kb5GAw=",
"owner": "gmodena", "owner": "gmodena",
"repo": "nix-flatpak", "repo": "nix-flatpak",
"rev": "64c6e53a3999957c19ab95cda78bde466d8374cc", "rev": "59adb9ad1cbd915494fc35cd0e0a9d582ca9de74",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -911,11 +871,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749355504, "lastModified": 1752305182,
"narHash": "sha256-L17CdJMD+/FCBOHjREQLXbe2VUnc3rjffenBbu2Kwpc=", "narHash": "sha256-6i4Q68G7wzNq1m2+l3lJUYgGZ9PwULvSVJpRSTTC46o=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "40a6e15e44b11fbf8f2b1df9d64dbfc117625e94", "rev": "ad29e2961dd0d58372384563bf00d510fc9f2e15",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -926,21 +886,21 @@
}, },
"nixos-cosmic": { "nixos-cosmic": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_4",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": [ "nixpkgs-stable": [
"nixpkgs-stable" "nixpkgs-stable"
], ],
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_3"
}, },
"locked": { "locked": {
"lastModified": 1749511063, "lastModified": 1751591814,
"narHash": "sha256-LjH3btCZgZHGxLcAm1B9pjShQODF3mceFtu6+9KL9+g=", "narHash": "sha256-A4lgvuj4v+Pr8MniXz1FBG0DXOygi8tTECR+j53FMhM=",
"owner": "lilyinstarlight", "owner": "lilyinstarlight",
"repo": "nixos-cosmic", "repo": "nixos-cosmic",
"rev": "a812d36015622e8ca094685f069387468def4c97", "rev": "fef2d0c78c4e4d6c600a88795af193131ff51bdc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -951,11 +911,11 @@
}, },
"nixos-facter-modules": { "nixos-facter-modules": {
"locked": { "locked": {
"lastModified": 1743671943, "lastModified": 1750412875,
"narHash": "sha256-7sYig0+RcrR3sOL5M+2spbpFUHyEP7cnUvCaqFOBjyU=", "narHash": "sha256-uP9Xxw5XcFwjX9lNoYRpybOnIIe1BHfZu5vJnnPg3Jc=",
"owner": "numtide", "owner": "numtide",
"repo": "nixos-facter-modules", "repo": "nixos-facter-modules",
"rev": "58ad9691670d293a15221d4a78818e0088d2e086", "rev": "14df13c84552a7d1f33c1cd18336128fbc43f920",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -966,16 +926,16 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1749521202, "lastModified": 1751984180,
"narHash": "sha256-9SNHxww6HCKHPBg3h5u3dQqrxRqdGRlCl93PYhsNmOk=", "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b57e8a01883a0566ed6213694941ea7acc2093a0", "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "pull/413627/head", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -998,11 +958,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1749173751, "lastModified": 1751274312,
"narHash": "sha256-ENY3y3v6S9ZmLDDLI3LUT8MXmfXg/fSt2eA4GCnMVCE=", "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ed29f002b6d6e5e7e32590deb065c34a31dc3e91", "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1021,15 +981,14 @@
"nixpkgs": [ "nixpkgs": [
"stylix", "stylix",
"nixpkgs" "nixpkgs"
], ]
"treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1748730660, "lastModified": 1751906969,
"narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", "narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", "rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1040,7 +999,7 @@
}, },
"pre-commit-hooks": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat_2",
"gitignore": "gitignore", "gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
@ -1048,11 +1007,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747372754, "lastModified": 1750779888,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1093,6 +1052,7 @@
"blueprint": "blueprint", "blueprint": "blueprint",
"chaotic": "chaotic", "chaotic": "chaotic",
"disko": "disko", "disko": "disko",
"ghostty": "ghostty",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"hyprsunset": "hyprsunset", "hyprsunset": "hyprsunset",
@ -1106,27 +1066,32 @@
"nixpkgs-stable": "nixpkgs-stable_2", "nixpkgs-stable": "nixpkgs-stable_2",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"stylix": "stylix", "stylix": "stylix",
"systems": "systems",
"walker": "walker" "walker": "walker"
} }
}, },
"rust-analyzer-src": { "rust-overlay": {
"flake": false, "inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1749419176, "lastModified": 1752201818,
"narHash": "sha256-Hs0vidgwvBiBuqNjR5oCQMMGUfUYwwnyxLShg3yzhWU=", "narHash": "sha256-d8KczaVT8WFEZdWg//tMAbv8EDyn2YTWcJvSY8gqKBU=",
"owner": "rust-lang", "owner": "oxalica",
"repo": "rust-analyzer", "repo": "rust-overlay",
"rev": "9fc1b9076cf49c7f54497df9cfa4485a63f14d3e", "rev": "bd8f8329780b348fedcd37b53dbbee48c08c496d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "rust-lang", "owner": "oxalica",
"ref": "nightly", "repo": "rust-overlay",
"repo": "rust-analyzer",
"type": "github" "type": "github"
} }
}, },
"rust-overlay": { "rust-overlay_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
@ -1147,7 +1112,7 @@
"type": "github" "type": "github"
} }
}, },
"rust-overlay_2": { "rust-overlay_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixos-cosmic", "nixos-cosmic",
@ -1155,11 +1120,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749436897, "lastModified": 1751251399,
"narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=", "narHash": "sha256-y+viCuy/eKKpkX1K2gDvXIJI/yzvy6zA3HObapz9XZ0=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19", "rev": "b22d5ee8c60ed1291521f2dde48784edd6bf695b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1175,11 +1140,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747603214, "lastModified": 1751606940,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1195,18 +1160,15 @@
"base16-helix": "base16-helix", "base16-helix": "base16-helix",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-compat": "flake-compat_4",
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
"git-hooks": "git-hooks",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"home-manager": [
"home-manager"
],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nur": "nur", "nur": "nur",
"systems": "systems_4", "systems": [
"systems"
],
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
@ -1214,11 +1176,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1749576521, "lastModified": 1752250117,
"narHash": "sha256-II57ap6MGkArooZFaSDrgNgi24T5Dkdkzhe+xUHdybQ=", "narHash": "sha256-zCPV1a8w9hRn5ukOQwaAggA3X5cMmVsZVBYo8wLfLuU=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "6d72fc259b6f595f5bcf9634bf2f82b76f939a0d", "rev": "0da583a359fd911d5cbfd2c789424b888b777a4b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1242,66 +1204,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"tinted-foot": { "tinted-foot": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -1338,11 +1240,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748180480, "lastModified": 1750770351,
"narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", "narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", "rev": "5a775c6ffd6e6125947b393872cde95867d85a2a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1354,11 +1256,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748740859, "lastModified": 1751159871,
"narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", "narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", "rev": "bded5e24407cec9d01bd47a317d15b9223a1546c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1370,11 +1272,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1725758778, "lastModified": 1751158968,
"narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", "narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", "rev": "86a470d94204f7652b906ab0d378e4231a5b3384",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1383,41 +1285,21 @@
"type": "github" "type": "github"
} }
}, },
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"stylix",
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"walker": { "walker": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_5" "systems": [
"systems"
]
}, },
"locked": { "locked": {
"lastModified": 1748502384, "lastModified": 1752245988,
"narHash": "sha256-nmTVxvbENySXZryA+TOGZ9nRr3m/+Xqc07Sy3aSN5Nw=", "narHash": "sha256-t0Sg3HWhDIIQISLGt2cYnD28RUI3SKKTVE9bFL9M5Ok=",
"owner": "abenz1267", "owner": "abenz1267",
"repo": "walker", "repo": "walker",
"rev": "ade63feb9f1d91f1b1bf709bb139060579126c19", "rev": "33c1ee26f675902b4404f64288ad1facb9ecec22",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1454,11 +1336,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749155346, "lastModified": 1751300244,
"narHash": "sha256-KIkJu3zF8MF3DuGwzAmo3Ww9wsWXolwV30SjJRTAxYE=", "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "44bf29f1df45786098920c655af523535a9191ae", "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1466,6 +1348,60 @@
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"type": "github" "type": "github"
} }
},
"zig": {
"inputs": {
"flake-compat": [
"ghostty"
],
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs"
]
},
"locked": {
"lastModified": 1748261582,
"narHash": "sha256-3i0IL3s18hdDlbsf0/E+5kyPRkZwGPbSFngq5eToiAA=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "aafb1b093fb838f7a02613b719e85ec912914221",
"type": "github"
},
"original": {
"owner": "mitchellh",
"repo": "zig-overlay",
"type": "github"
}
},
"zon2nix": {
"inputs": {
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742104771,
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=",
"owner": "jcollie",
"repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"type": "github"
},
"original": {
"owner": "jcollie",
"repo": "zon2nix",
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

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

View File

@ -1,11 +1,6 @@
{ {inputs, ...}: {
config,
inputs,
pkgs,
...
}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.shared self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./disko ./disko
@ -13,25 +8,19 @@
]; ];
networking = { networking = {
networkmanager.enable = true;
hostId = "c7f6c4a1"; hostId = "c7f6c4a1";
hostName = "dunamis"; hostName = "dunamis";
}; };
environment.memoryAllocator.provider = "mimalloc";
system.stateVersion = "25.11"; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
desktop.gnome.enable = true; desktop.niri.enable = true;
services.displayManager.autoLogin = { services.displayManager.autoLogin = {
enable = true; enable = true;
user = "user"; user = "user";
}; };
# TODO: make a module for autologin
# services.greetd.settings.initial_session = {
# user = "user";
# command = "${pkgs.niri}/bin/niri-session";
# };
module = { module = {
config = { config = {
@ -41,12 +30,13 @@
}; };
stylix = { stylix = {
enable = true; enable = true;
theme = "gruvbox-dark-pale"; theme = "sandcastle";
}; };
}; locale = "uk_UA.UTF-8";
misc = {
locale.ukrainian.enable = true;
opentabletdriver.enable = false; opentabletdriver.enable = false;
qmk-vial.enable = true; qmk-vial.enable = true;
virtual.libvirt.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.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,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 = let content = let

View File

@ -1,6 +1,6 @@
{inputs, ...}: { {inputs, ...}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.shared self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./disko ./disko
@ -9,17 +9,27 @@
]; ];
networking = { networking = {
networkmanager.enable = true;
hostId = "14f63637"; hostId = "14f63637";
hostName = "eldrid"; hostName = "eldrid";
}; };
environment.memoryAllocator.provider = "mimalloc";
system.stateVersion = "25.11"; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true; desktop.niri.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024; # eight gigs
}
];
module = { module = {
config = { config = {
laptop.homeRowMods = true; laptop.homeRowMods = true;
@ -30,19 +40,11 @@
}; };
stylix = { stylix = {
enable = true; enable = true;
theme = "rose-pine-moon"; theme = "sandcastle";
}; };
}; locale = "uk_UA.UTF-8";
misc = {
locale.ukrainian.enable = true;
opentabletdriver.enable = false;
qmk-vial.enable = true; qmk-vial.enable = true;
virtual.libvirt.enable = false; };
};
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024; # eight gigs
}
];
} }

View File

@ -1,4 +1,9 @@
{inputs, ...}: let {
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a44022ad0"; disk = "/dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a44022ad0";
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,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,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" ''
rule = {
matches = {
{
{ "node.nick", "equals", "Internal Microphone" },
},
},
apply_properties = {
["audio.format"] = "S16LE",
},
}
table.insert(alsa_monitor.rules, rule)
'')
]; ];
boot = {
extraModprobeConfig = ''
options snd-intel-dspcfg dsp_driver=3
'';
};
} }

View File

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

View File

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

View File

@ -1,10 +1,6 @@
{ {inputs, ...}: {
config,
inputs,
...
}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.shared self.modules.shared.nixos
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
./disko ./disko
@ -13,30 +9,33 @@
]; ];
networking = { networking = {
networkmanager.enable = true; hostId = "45b00123";
hostName = "legion"; hostName = "legion";
}; };
environment.memoryAllocator.provider = "mimalloc";
system.stateVersion = "25.11"; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
desktop.niri.enable = true; desktop.niri.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = "user";
};
module = { module = {
config = { config = {
laptop.homeRowMods = true; laptop.homeRowMods = true;
powerSave = true; powerSave = true;
# secureBoot = true; secureBoot = true;
# tpmDiskUnlock = true; tpmDiskUnlock = true;
vaapi = "nvidia"; vaapi = "nvidia";
}; };
stylix = { stylix = {
enable = true; enable = true;
theme = "helios"; theme = "sandcastle";
}; };
locale = "uk_UA.UTF-8";
virt.libvirt.enable = true;
}; };
locale.ukrainian.enable = true;
virtual.libvirt.enable = true;
} }

View File

@ -1,4 +1,9 @@
{inputs, ...}: let {
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk-main = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B"; disk-main = "/dev/disk/by-id/nvme-INTEL_SSDPEKKF256G8L_BTHH81460QC2256B";
disk-second = "/dev/disk/by-id/nvme-WDC_PC_SN730_SDBPNTY-1T00-1101_21114D802446"; disk-second = "/dev/disk/by-id/nvme-WDC_PC_SN730_SDBPNTY-1T00-1101_21114D802446";
in { in {
@ -11,6 +16,6 @@ in {
mountOptions = ["rw" "nosuid" "nodev"]; mountOptions = ["rw" "nosuid" "nodev"];
}; };
}; };
disko.devices.disk.main = import ./disk-main.nix {inherit disk-main;}; disko.devices.disk.main = import ./disk-main.nix {inherit disk-main hostId;};
disko.devices.disk.second = import ./disk-second.nix {inherit disk-second;}; disko.devices.disk.second = import ./disk-second.nix {inherit disk-second hostId;};
} }

View File

@ -1,4 +1,7 @@
{disk-main}: { {
disk-main,
hostId,
}: {
type = "disk"; type = "disk";
device = disk-main; device = disk-main;
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,4 +1,7 @@
{disk-second}: { {
disk-second,
hostId,
}: {
type = "disk"; type = "disk";
device = disk-second; device = disk-second;
content = { content = {
@ -8,7 +11,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "luks-second"; name = "luks-${hostId}-second";
initrdUnlock = true; initrdUnlock = true;
settings.allowDiscards = true; settings.allowDiscards = true;
content = { content = {

View File

@ -1,36 +1,21 @@
{ {inputs, ...}: {
inputs,
# pkgs,
lib,
...
}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
self.nixosModules.shared self.modules.shared.nixos
./disko ./disko
./hardware ./hardware
./misc ./misc
]; ];
networking = { networking = {
networkmanager.enable = true;
hostId = "bd1b5837"; hostId = "bd1b5837";
hostName = "morphius"; hostName = "morphius";
}; };
environment.memoryAllocator.provider = "mimalloc";
system.stateVersion = "25.11"; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
zramSwap.enable = true;
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024;
}
];
desktop.gnome.enable = true; desktop.gnome.enable = true;
services.displayManager.autoLogin = { services.displayManager.autoLogin = {
@ -38,6 +23,13 @@
user = "user"; user = "user";
}; };
swapDevices = [
{
device = "/swap/swapfile";
size = 8 * 1024;
}
];
module = { module = {
config = { config = {
secureBoot = true; secureBoot = true;
@ -48,10 +40,8 @@
}; };
stylix = { stylix = {
enable = true; enable = true;
theme = "gruvbox-dark-pale"; theme = "sandcastle";
}; };
locale = "uk_UA.UTF-8";
}; };
locale.ukrainian.enable = true;
opentabletdriver.enable = false;
} }

View File

@ -1,4 +1,9 @@
{inputs, ...}: let {
config,
inputs,
...
}: let
inherit (config.networking) hostId;
disk = "/dev/nvme0n1"; disk = "/dev/nvme0n1";
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,8 @@
{disk, ...}: { {
disk,
hostId,
...
}: {
type = "disk"; type = "disk";
device = disk; device = disk;
content = { content = {
@ -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 = {

View File

@ -2,6 +2,7 @@
imports = [ imports = [
# ./laptop # ./laptop
]; ];
hardware.sensor.iio.enable = true;
services = { services = {
logind = { logind = {
lidSwitch = "ignore"; lidSwitch = "ignore";

View File

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

View File

@ -1,21 +0,0 @@
{
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

@ -1,9 +1,4 @@
{ {inputs, ...}: {
inputs,
lib,
pkgs,
...
}: {
imports = with inputs; [ imports = with inputs; [
self.nixosModules.desktop self.nixosModules.desktop
self.nixosModules.system self.nixosModules.system
@ -14,18 +9,15 @@
]; ];
networking = { networking = {
networkmanager.enable = true;
hostId = "31150fae"; hostId = "31150fae";
hostName = "sarien"; hostName = "sarien";
}; };
environment.memoryAllocator.provider = "mimalloc";
system.stateVersion = "25.11"; system.stateVersion = "25.11";
time.timeZone = "Europe/Kyiv"; time.timeZone = "Europe/Kyiv";
security.pam.sshAgentAuth.enable = true;
desktop.niri.enable = true; desktop.niri.enable = true;
services.displayManager.autoLogin = { services.displayManager.autoLogin = {
enable = true; enable = true;
user = "user"; user = "user";
@ -53,12 +45,10 @@
}; };
stylix = { stylix = {
enable = true; enable = true;
theme = "gruvbox-dark-pale"; theme = "sandcastle";
}; };
locale = "uk_UA.UTF-8";
misc.qmk-vial.enable = true;
virt.libvirt.enable = true;
}; };
locale.ukrainian.enable = true;
opentabletdriver.enable = false;
qmk-vial.enable = true;
virtual.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; [
@ -11,5 +16,5 @@ in {
}; };
}; };
# same partitioning setup # same partitioning setup
disko.devices.disk.main = import ../../dunamis/disko/disk-main.nix {inherit disk;}; disko.devices.disk.main = import ../../dunamis/disko/disk-main.nix {inherit disk hostId;};
} }

View File

@ -1,76 +0,0 @@
{disk, ...}: {
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 = {
"@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

@ -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,21 +1,24 @@
{ {
perSystem,
osConfig,
config, config,
inputs, inputs,
pkgs,
lib, lib,
osConfig,
# perSystem,
pkgs,
... ...
}: let }: let
# inherit (lib.strings) removeSuffix; inherit (lib) mkIf mkEnableOption mkForce getExe;
inherit (lib) mkIf mkEnableOption mkDefault mkForce getExe;
inherit (config.lib.stylix) colors;
# inherit (osConfig.module.stylix) theme;
inherit (osConfig.networking) hostName; inherit (osConfig.networking) hostName;
cfg = config.desktop.niri; cfg = config.desktop.niri;
ifLaptop = mkIf (hostName != "dunamis"); ifLaptop = mkIf (hostName != "dunamis");
commonArgs = {
inherit config inputs lib osConfig pkgs;
launcher = getExe pkgs.walker; launcher = getExe pkgs.walker;
lockscreen = getExe pkgs.gtklock; lockscreen = getExe pkgs.gtklock;
};
in { in {
imports = with inputs; [ imports = with inputs; [
walker.homeManagerModules.default walker.homeManagerModules.default
@ -30,6 +33,24 @@ in {
wpaperd.enable = true; wpaperd.enable = true;
qt.enable = false; qt.enable = false;
}; };
stylix.iconTheme = {
enable = true;
light = "Papirus-Light";
dark = "Papirus-Dark";
package = let
inherit (lib.strings) hasPrefix;
inherit (osConfig.module.stylix) theme;
color =
if (hasPrefix "rose-pine" theme)
then "indigo"
else if (hasPrefix "nord" theme)
then "nordic"
else if (hasPrefix "s" theme)
then "teal"
else null;
in
pkgs.papirus-icon-theme.override {inherit color;};
};
dconf.settings = { dconf.settings = {
"org/gnome/desktop/wm/preferences" = { "org/gnome/desktop/wm/preferences" = {
button-layout = "icon:close"; button-layout = "icon:close";
@ -42,34 +63,14 @@ in {
else lib.mkDefault "prefer-light"; else lib.mkDefault "prefer-light";
}; };
}; };
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 = { qt = {
enable = true; enable = true;
platformTheme.name = "gtk3"; platformTheme.name = "gtk3";
}; };
programs.walker = import ./programs/walker {inherit config inputs pkgs;}; programs.walker = import ./programs/walker commonArgs;
programs.waybar = import ./programs/waybar {inherit config colors getExe ifLaptop pkgs;}; programs.waybar = import ./programs/waybar commonArgs;
xdg.configFile.niri = import ./niri.nix {inherit config hostName launcher lockscreen;}; services = import ./services commonArgs;
services = import ./services {inherit pkgs lockscreen getExe perSystem;};
home.packages = with pkgs; home.packages = with pkgs;
[ [
@ -79,13 +80,9 @@ in {
helvum # pipewire patchbay in rust helvum # pipewire patchbay in rust
junction # app chooser junction # app chooser
loupe # image viewer and editor in rust loupe # image viewer and editor in rust
mission-center # task manager in rust (partly)
nautilus # file manager nautilus # file manager
overskride # bluetooth gui in rust
papers # pdf reader in rust papers # pdf reader in rust
pika-backup # borg gui in rust
pwvucontrol # pipewire gui in rust pwvucontrol # pipewire gui in rust
sonusmix # pipewire routing tool in rust
wdisplays # wlroots display configurator wdisplays # wlroots display configurator
] ]
++ [ ++ [
@ -98,6 +95,10 @@ in {
]; ];
xdg = { xdg = {
configFile = {
niri = import ./niri.nix commonArgs;
"mimeapps.list".force = true;
};
mime.enable = true; mime.enable = true;
mimeApps = { mimeApps = {
enable = true; enable = true;
@ -126,12 +127,11 @@ in {
}; };
systemd.user = { systemd.user = {
settings.Manager.DefaultEnvironment = { settings.Manager.DefaultEnvironment = {
QT_QPA_PLATFORM = "wayland";
DISPLAY = ":123"; DISPLAY = ":123";
}; };
targets.tray.Unit.Description = "Home Manager System Tray"; # workaround for udiskie targets.tray.Unit.Description = "Home Manager System Tray"; # workaround for udiskie
services = let services = let
mkGraphicalService = config: graphicalService // config; mkGraphicalService = config: lib.attrsets.recursiveUpdate graphicalService config;
graphicalService = { graphicalService = {
Install.WantedBy = ["niri.service"]; Install.WantedBy = ["niri.service"];
Unit = { Unit = {
@ -148,33 +148,25 @@ in {
in in
lib.mkMerge [ lib.mkMerge [
{ {
udiskie = mkGraphicalService {}; copyq = mkGraphicalService {Service.Environment = mkForce "QT_QPA_PLATFORM=wayland";};
waybar = mkGraphicalService {};
network-manager-applet = mkGraphicalService {}; network-manager-applet = mkGraphicalService {};
copyq = mkGraphicalService { udiskie = mkGraphicalService {};
Service = walker = mkGraphicalService {};
graphicalService.Service waybar = mkGraphicalService {};
wpaperd =
mkGraphicalService {}
// { // {
Environment = mkForce "QT_QPA_PLATFORM=wayland"; Service.TimeoutStopSec = mkForce "1";
}; Service.Restart = mkForce "always";
}; };
xwayland-satellite = mkGraphicalService { xwayland-satellite = mkGraphicalService {
Service = Service = {
graphicalService.Service
// {
Type = "simple"; Type = "simple";
ExecStart = getExe pkgs.xwayland-satellite + " :123"; ExecStart = getExe pkgs.xwayland-satellite + " :123";
}; };
}; };
wpaperd = mkGraphicalService {
Service =
mkDefault graphicalService.Service;
};
walker = mkGraphicalService {};
# gnome-polkit-agent = mkGraphicalService { # gnome-polkit-agent = mkGraphicalService {
# Service = # Service = {
# graphicalService.Service
# // {
# Type = "simple"; # Type = "simple";
# ExecStart = pkgs.polkit_gnome + "/libexec/polkit-gnome-authentication-agent-1"; # ExecStart = pkgs.polkit_gnome + "/libexec/polkit-gnome-authentication-agent-1";
# }; # };
@ -182,9 +174,7 @@ in {
} }
(lib.mkIf (hostName == "morphius") { (lib.mkIf (hostName == "morphius") {
lisgd = mkGraphicalService { lisgd = mkGraphicalService {
Service = Service = {
graphicalService.Service
// {
# Group = "input"; # Group = "input";
Type = "simple"; Type = "simple";
ExecStart = ExecStart =

View File

@ -1,12 +1,14 @@
{ {
config, config,
hostName, osConfig,
launcher, launcher,
lockscreen, lockscreen,
... ...
}: let }: let
inherit (config.lib.stylix) colors; inherit (config.lib.stylix) colors;
inherit (config.stylix) cursor; inherit (config.stylix) cursor;
inherit (osConfig.networking) hostName;
keyboard = keyboard =
if hostName == "eldrid" if hostName == "eldrid"
then "chromeos" then "chromeos"
@ -91,15 +93,15 @@ in {
in '' in ''
environment { environment {
DISPLAY ":123" DISPLAY ":123"
QT_QPA_PLATFORMTHEME "gtk3" CLUTTER_BACKEND "wayland"
GDK_BACKEND "wayland"
MOZ_ENABLE_WAYLAND "1" MOZ_ENABLE_WAYLAND "1"
MOZ_WEBRENDER "1" MOZ_WEBRENDER "1"
GDK_BACKEND "wayland"
QT_QPA_PLATFORM "wayland" QT_QPA_PLATFORM "wayland"
XDG_SESSION_TYPE "wayland"
CLUTTER_BACKEND "wayland"
SDL_VIDEODRIVER "wayland" SDL_VIDEODRIVER "wayland"
XDG_SESSION_TYPE "wayland"
} }
input { input {
keyboard { keyboard {
xkb { xkb {
@ -108,34 +110,23 @@ in {
} }
repeat-delay 200 repeat-delay 200
repeat-rate 50 repeat-rate 50
track-layout "global" track-layout "window"
} }
touchpad { touchpad {
// off
tap tap
// dwt
// dwtp
natural-scroll natural-scroll
accel-speed 0.2 accel-speed 0.2
accel-profile "flat" accel-profile "flat"
// scroll-method "two-finger"
// disabled-on-external-mouse
} }
mouse { mouse {
// off
// natural-scroll
accel-speed 0.0 accel-speed 0.0
accel-profile "flat" accel-profile "flat"
// scroll-method "no-scroll" }
touch {
map-to-output "eDP-1"
} }
warp-mouse-to-focus warp-mouse-to-focus
// focus-follows-mouse workspace-auto-back-and-forth
}
output "eDP-1" {
// off
scale 1.2
transform "normal"
// position x=1920 y=0
} }
cursor { cursor {
@ -143,51 +134,62 @@ in {
xcursor-size ${toString cursor.size} 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 { layout {
gaps 3 gaps 3
// background-color "#${colors.base02}"
background-color "transparent"
center-focused-column "never" // "on-overflow" center-focused-column "never" // "on-overflow"
default-column-width { proportion 1.0; }
preset-column-widths { preset-column-widths {
proportion 0.33333 proportion 0.33333
proportion 0.66667 proportion 0.66667
} }
background-color "transparent" struts {
default-column-width { proportion 1.0; } left 36
// default-column-width { proportion 0.5; } right 36
}
tab-indicator { tab-indicator {
active-color "#${colors.base04}" active-color "#${colors.base04}"
inactive-color "#${colors.base03}" inactive-color "#${colors.base03}"
corner-radius 4 corner-radius 6
gap 6 gap 3
gaps-between-tabs 3 gaps-between-tabs 3
length total-proportion=0.3 // length total-proportion=0.3
place-within-column place-within-column
position "left" position "left"
width 6 width 6
} }
focus-ring { focus-ring {
off width 1
width 3
active-gradient from="#${colors.base0D}" to="#${colors.base0F}" angle=40 relative-to="workspace-view"
inactive-color "#${colors.base03}"
}
border {
width 3
active-color "#${colors.base0D}" active-color "#${colors.base0D}"
inactive-color "#${colors.base03}" inactive-color "#${colors.base03}"
urgent-color "#${colors.base08}"
} }
struts { border {
left 33 off
right 33 width 1
active-color "#${colors.base0D}"
inactive-color "#${colors.base03}"
urgent-color "#${colors.base08}"
} }
} }
prefer-no-csd
hotkey-overlay {
skip-at-startup
}
window-rule { window-rule {
geometry-corner-radius 12 geometry-corner-radius 12
clip-to-geometry true clip-to-geometry true
@ -204,32 +206,22 @@ in {
active-color "#${colors.base0F}" active-color "#${colors.base0F}"
inactive-color "#${colors.base03}" inactive-color "#${colors.base03}"
} }
shadow {
on
color "#${colors.base0F}"
inactive-color "#${colors.base03}"
}
} }
// Make the wallpaper stationary, rather than moving with workspaces.
layer-rule { layer-rule {
// This is for swaybg; change for other wallpaper tools. match namespace="^wpaperd.*$"
// Find the right namespace by running niri msg layers.
match namespace="^wallpaper$"
place-within-backdrop true place-within-backdrop true
} }
// Optionally, disable the workspace shadows in the overview.
overview { overview {
workspace-shadow { workspace-shadow {
off off
} }
} }
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png" layer-rule {
match namespace="waybar"
match at-startup=true
animations { opacity 0.99 // fixes the black fill
// slowdown 0.8
off
} }
window-rule { window-rule {
@ -266,6 +258,7 @@ in {
block-out-from "screencast" block-out-from "screencast"
} }
binds { binds {
Mod+Shift+Slash { show-hotkey-overlay; } Mod+Shift+Slash { show-hotkey-overlay; }

View File

@ -1,22 +0,0 @@
{
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.niri.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;};
};
}

View File

@ -1,6 +1,6 @@
{ {
config, config,
mkDefault, lib,
}: { }: {
enable = true; enable = true;
settings = { settings = {
@ -15,7 +15,7 @@
match-mode = "fuzzy"; match-mode = "fuzzy";
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme; icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
}; };
border = mkDefault { border = lib.mkDefault {
width = 3; width = 3;
radius = 12; radius = 12;
}; };

View File

@ -146,32 +146,30 @@
h_align = "center"; h_align = "center";
v_align = "center"; v_align = "center";
box = { box = {
width = 450;
h_align = "center"; h_align = "center";
v_align = "center"; v_align = "center";
# spacing = 12;
orientation = "vertical"; orientation = "vertical";
search = { search = {
margins = {
start = 8;
top = 8;
end = 8;
bottom = 0;
};
h_align = "top"; h_align = "top";
margins = {
start = 3;
top = 3;
end = 3;
bottom = 3;
};
}; };
scroll = { scroll = {
overlay_scrolling = true; overlay_scrolling = true;
list = { list = {
margins = { margins = {
bottom = 8; bottom = 3;
top = 4; top = 0;
start = 8; start = 3;
end = 8; end = 3;
}; };
item = { item = {
icon.theme = "${config.gtk.iconTheme.name}"; icon.theme = "${config.gtk.iconTheme.name}";
spacing = 4; spacing = 3;
activation_label = { activation_label = {
x_align = 0.5; x_align = 0.5;
y_align = 0.5; y_align = 0.5;
@ -232,8 +230,8 @@
#window { #window {
background: @base00; background: @base00;
color: @base05; color: @base05;
border-radius: 20px; border-radius: 12px;
border: 3px solid @base0D; border: 1px solid @base0D;
} }
#box { #box {
@ -242,7 +240,7 @@
#search { #search {
background: @base01; background: @base01;
border-radius: 12px 12px 6px 6px; border-radius: 9px;
padding: 8px; padding: 8px;
} }
@ -251,12 +249,12 @@
#typeahead { #typeahead {
background: none; background: none;
box-shadow: none; box-shadow: none;
border-radius: 12px; border-radius: 6px;
} }
#input > *:first-child, #input > *:first-child,
#typeahead > *:first-child { #typeahead > *:first-child {
margin-right: 12px; margin-right: 3px;
border-radius: 0px; border-radius: 0px;
} }
@ -269,8 +267,8 @@
} }
#list { #list {
padding: 8px; padding: 3px;
border-radius: 6px 6px 12px 12px; border-radius: 9px;
background: @base01; background: @base01;
} }
@ -281,7 +279,7 @@
child:selected, child:selected,
child:hover { child:hover {
box-shadow: none; box-shadow: none;
border-radius: 8px; border-radius: 6px;
background: @base02; background: @base02;
} }

View File

@ -1,84 +1,54 @@
{ {
colors,
config, config,
getExe, lib,
ifLaptop, osConfig,
pkgs, pkgs,
launcher,
... ...
}: { }: let
inherit (config.lib.stylix) colors;
ifLaptop = lib.mkIf (osConfig.networking.hostName != "dunamis");
in {
enable = true; enable = true;
systemd = { systemd = {
enable = true; enable = true;
target = "graphical-session.target"; target = "graphical-session.target";
}; };
settings = { settings.bottom = {
bar-0 = {
# layer = "top";
position = "bottom"; position = "bottom";
height = 24; height = 33;
spacing = 6; spacing = 0;
margin-left = 33 + 3; # margin-left = 36 + 3;
margin-right = 33 + 3; # margin-right = 36 + 3;
margin-bottom = 3; # margin-bottom = 3;
reload_style_on_change = true;
modules-left = [ modules-left = [
"niri/language" "custom/launcher"
"niri/workspaces"
"wlr/taskbar" "wlr/taskbar"
# "privacy"
]; ];
modules-center = ["clock"];
modules-right = [ modules-right = [
(ifLaptop "group/laptop") "niri/workspaces"
"wireplumber" "niri/language"
"tray"
"privacy"
(ifLaptop "power-profiles-daemon")
"idle_inhibitor"
"custom/notification"
]; ];
"niri/workspaces" = { "niri/workspaces" = {
format = "{index}"; format = "{index}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
general = "󰘧";
web = "󰖟";
chat = "󰻞";
code = "󰅩";
uni = "󱆀";
games = "󰺶";
system = "󰢻";
media = "󱜐";
tray = "󱊖";
};
}; };
"niri/language" = { "niri/language" = {
format = "{}"; format = "{}";
format-en = "🇺🇸"; format-en = "🇺🇸";
format-uk = "🇺🇦"; format-uk = "🇺🇦";
}; };
"custom/separator" = {
format = "󰝠";
interval = "once";
tooltip = false;
};
"group/laptop" = { "group/laptop" = {
orientation = "inherit"; orientation = "inherit";
modules = [ modules = [
"battery"
"backlight" "backlight"
"battery"
"power-profiles-daemon"
]; ];
}; };
"backlight" = { backlight = {
format = "{icon} {percent}%"; format = "{percent}% {icon}";
format-icons = [ format-icons = [
"󰃚" "󰃚"
"󰃛" "󰃛"
@ -89,22 +59,22 @@
"󰃠" "󰃠"
]; ];
}; };
"idle_inhibitor" = { idle_inhibitor = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
activated = "󰅶"; activated = "󰅶";
deactivated = "󰾪"; deactivated = "󰾪";
}; };
}; };
"tray" = { tray = {
icon-size = 20; icon-size = 16;
spacing = 6; spacing = 6;
}; };
"clock" = { clock = {
interval = 1; interval = 1;
format = "{:%B %d - %H:%M - %A}"; format = "{:%R}";
tooltip = false; tooltip = true;
# tooltip-format = "{%y.%m.%d - %B %d, %A}"; tooltip-format = "{:%B %d, %A}";
}; };
battery = { battery = {
states = { states = {
@ -112,32 +82,36 @@
warning = 30; warning = 30;
critical = 15; critical = 15;
}; };
format = "{icon} {capacity}%"; format = "{capacity}% {icon}";
format-full = "󱟢 {capacity}%"; format-full = "{capacity}% 󱟢";
format-charging = "󰂄 {capacity}%"; format-charging = "{capacity}% 󰂄";
format-plugged = "󰚥 {capacity}%"; format-plugged = "{capacity}% 󰚥";
format-alt = "{icon} {time}"; format-alt = "{icon} {time}";
format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
}; };
mpris = { memory = {
format = "{player_icon} {dynamic}"; format = "{used:0.1f}G ";
format-paused = "{status_icon} <i>{dynamic}</i>"; tooltip-format = ''
playing-len = 30; RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
playing-paused = 30; Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
player-icons = {
default = "";
mpv = "🎵";
}; };
status-icons = {paused = "";}; network = {
format = "{bandwidthDownBits} 󰇚 | {bandwidthUpBits} 󰕒";
interval = 3;
tooltip = false;
}; };
"upower" = { cpu = {
format = "{usage}% 󰍛";
interval = 3;
};
upower = {
icon-size = 16; icon-size = 16;
format = "{percentage}"; format = "{percentage}";
hide-if-empty = true; hide-if-empty = true;
tooltip = true; tooltip = true;
tooltip-spacing = 20; tooltip-spacing = 20;
}; };
"power-profiles-daemon" = { power-profiles-daemon = {
format = "{icon}"; format = "{icon}";
tooltip-format = "Power profile: {profile}\nDriver: {driver}"; tooltip-format = "Power profile: {profile}\nDriver: {driver}";
tooltip = true; tooltip = true;
@ -148,14 +122,19 @@
power-saver = ""; power-saver = "";
}; };
}; };
"wireplumber" = { wireplumber = {
scroll-step = 3; scroll-step = 3;
format = "{icon} {volume}%"; format = "{volume}% {icon}";
format-muted = "󰖁"; format-muted = "󰖁";
format-icons = ["󰕿" "󰖀" "󰕾"]; format-icons = ["󰕿" "󰖀" "󰕾"];
on-click = getExe pkgs.pwvucontrol; on-click = lib.getExe pkgs.pwvucontrol;
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle"; on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
}; };
"custom/launcher" = {
format = "";
on-click = launcher;
tooltip = false;
};
"custom/notification" = { "custom/notification" = {
tooltip = false; tooltip = false;
format = "{icon}"; format = "{icon}";
@ -173,7 +152,7 @@
escape = true; escape = true;
}; };
"privacy" = { "privacy" = {
icon-spacing = 2; icon-spacing = 0;
icon-size = 16; icon-size = 16;
transition-duration = 250; transition-duration = 250;
screenshare = { screenshare = {
@ -188,143 +167,371 @@
}; };
}; };
"wlr/taskbar" = { "wlr/taskbar" = {
format = "{icon}"; format = "{icon} {name}";
icon-size = 20; icon-size = 16;
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}"; icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
tooltip-format = "{title}"; tooltip-format = "{title}";
on-click = "activate"; 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}";
}; };
style = '' "niri/language" = {
@define-color base00 #${colors.base00}; format = "{}";
@define-color base01 #${colors.base01}; format-en = "🇺🇸";
@define-color base02 #${colors.base02}; format-uk = "🇺🇦";
@define-color base03 #${colors.base03}; };
@define-color base04 #${colors.base04}; "group/laptop" = {
@define-color base05 #${colors.base05}; orientation = "inherit";
@define-color base06 #${colors.base06}; modules = [
@define-color base07 #${colors.base07}; "backlight"
@define-color base08 #${colors.base08}; "battery"
@define-color base09 #${colors.base09}; "power-profiles-daemon"
@define-color base0A #${colors.base0A}; ];
@define-color base0B #${colors.base0B}; };
@define-color base0C #${colors.base0C}; backlight = {
@define-color base0D #${colors.base0D}; format = "{percent}% {icon}";
@define-color base0E #${colors.base0E}; format-icons = [
@define-color base0F #${colors.base0F}; "󰃚"
"󰃛"
"󰃜"
"󰃝"
"󰃞"
"󰃟"
"󰃠"
];
};
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};
* { * {
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome; /* all: unset; */
font-family: Symbols Nerd Font, FontAwesome, ${config.stylix.fonts.sansSerif.name};
font-weight: 500; font-weight: 500;
font-size: 100%; font-size: 16px;
} }
window#waybar {
background-color: transparent; .modules-left, .modules-center, .modules-right, window#waybar {
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; background-color: @base00;
border-radius: 24px;
border: 3px solid @base0D;
color: @base05; color: @base05;
padding: 0 0.4em; 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 { tooltip {
background: @base01; background: @base01;
border: 1px solid @base0E; border: 1px solid @base0D;
border-radius: 16px;
padding: 2em;
} }
tooltip label { tooltip label {
color: @base05; color: @base05;
} }
button { button {
box-shadow: inset 0 -3px transparent; box-shadow: inset 0 -3px transparent;
border-radius: 16px; border-radius: 6px;
} }
button:hover { button:hover {
background: inherit; background: inherit;
box-shadow: inset 0 -3px transparent; box-shadow: inset 0 -3px transparent;
} }
#mode {
background-color: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 -3px @base05;
}
#battery,
#backlight, #backlight,
/* #workspaces, #battery,
#taskbar,
#privacy, */
#taskbar button,
#language,
#clock, #clock,
#battery, #cpu,
#backlight, #custom-launcher,
#custom-notification,
#idle_inhibitor,
#language,
#memory,
#network,
#power-profiles-daemon,
#privacy,
#privacy-item,
#taskbar button,
#taskbar,
#tray button,
#tray,
#wireplumber, #wireplumber,
#workspaces button, #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, #custom-notification,
#idle_inhibitor, #idle_inhibitor,
#power-profiles-daemon, #power-profiles-daemon,
#privacy-item, #wireplumber {
#custom-separator { 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; 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 { #tray button {
padding: 0 0.3em; padding: 0 0.4em;
margin: 0 0.2em; margin: 3px;
} }
#workspaces button.active {
color: @base0D; #workspaces button.active,
#taskbar button.active {
background-color: @base02;
} }
#workspaces button:hover,
#workspaces button.active:hover,
#taskbar button.active:hover,
#taskbar button:hover { #taskbar button:hover {
box-shadow: transparent; background-color: @base0D;
color: @base00;
} }
#taskbar.empty,
window#empty { #taskbar.empty {
background-color: transparent; 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 { #tray > .needs-attention {
-gtk-icon-effect: highlight; -gtk-icon-effect: highlight;
background-color: @base08; background-color: @base08;
} }
#privacy-item.screenshare {
color: @base0C; #tray > .passive {
-gtk-icon-effect: dim;
} }
#privacy-item.audio-in {
color: @base0E; /* #workspaces button.active {
color: @base00;
background-color: @base0D;
} */
label:focus {
background-color: #000000;
} }
''; '';
} }

View File

@ -1,25 +1,26 @@
{ {
getExe, lib,
perSystem, osConfig,
pkgs, pkgs,
lockscreen, lockscreen,
... ...
}: { }:
swaync = import ./swaync; 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; kanshi = import ./kanshi;
network-manager-applet.enable = true; network-manager-applet.enable = true;
playerctld.enable = true; playerctld.enable = true;
swaync = import ./swaync;
swayosd.enable = true;
udiskie.enable = true;
wpaperd.enable = true; wpaperd.enable = true;
copyq = { }
enable = true; {
package = perSystem.nixpkgs-stable.copyq;
};
gnome-keyring = {
enable = true;
components = ["secrets"];
};
gammastep = { gammastep = {
enable = true;
provider = "manual"; provider = "manual";
latitude = 49.6; latitude = 49.6;
longitude = 36.1; longitude = 36.1;
@ -29,19 +30,8 @@
night = 3000; night = 3000;
}; };
}; };
swayosd = { gnome-keyring.components = ["secrets"];
enable = true; hypridle.settings = {
topMargin = 0.8;
};
udiskie = {
enable = true;
automount = false;
notify = true;
tray = "auto";
};
hypridle = {
enable = true;
settings = {
general = { general = {
before_sleep_cmd = "loginctl lock-session"; before_sleep_cmd = "loginctl lock-session";
lock_cmd = "pidof ${lockscreen} || ${lockscreen}"; lock_cmd = "pidof ${lockscreen} || ${lockscreen}";
@ -54,9 +44,14 @@
} }
{ {
timeout = 601; timeout = 601;
on-timeout = getExe pkgs.niri + " msg action power-off-monitors"; on-timeout = lib.getExe pkgs.niri + " msg action power-off-monitors";
} }
]; ];
}; };
swayosd.topMargin = 0.8;
udiskie = {
automount = false;
notify = true;
tray = "auto";
}; };
} }

View File

@ -17,6 +17,13 @@
adaptiveSync = true; adaptiveSync = true;
}; };
} }
{
output = {
criteria = second;
mode = "1920x1080@74.973";
adaptiveSync = true;
};
}
{ {
output = { output = {
criteria = builtin.eldrid; criteria = builtin.eldrid;
@ -33,19 +40,19 @@
# adaptiveSync = true; # adaptiveSync = true;
}; };
} }
{
output = {
criteria = second;
mode = "1920x1080@74.973";
position = "1920,0";
transform = "90";
adaptiveSync = true;
};
}
{ {
profile = { profile = {
name = "dunamis"; name = "dunamis";
outputs = [{criteria = main;} {criteria = second;}]; outputs = [
{criteria = main;}
{
criteria = second;
position = "1920,180";
scale = 1.2;
# transform = "90";
adaptiveSync = true;
}
];
}; };
} }
{ {

View File

@ -17,17 +17,17 @@
control-center-layer = "overlay"; control-center-layer = "overlay";
# Notification settings # Notification settings
positionX = "right"; positionX = "left";
positionY = "top"; positionY = "top";
notification-2fa-action = true; notification-2fa-action = true;
notification-inline-replies = false; notification-inline-replies = false;
notification-icon-size = 32; notification-icon-size = 48;
notification-body-image-height = 100; notification-body-image-height = 100;
notification-body-image-width = 200; notification-body-image-width = 200;
notification-window-width = 400; notification-window-width = 400;
# Control center settings # Control center settings
control-center-positionX = "right"; control-center-positionX = "left";
control-center-positionY = "top"; control-center-positionY = "top";
control-center-width = 500; control-center-width = 500;
control-center-exclusive-zone = true; control-center-exclusive-zone = true;
@ -59,8 +59,12 @@
}; };
}; };
}; };
# TODO: disable stylix, redo everything
style = '' style = ''
/*** Global ***/ * {
all: unset;
}
progress, progress,
progressbar, progressbar,
trough { trough {
@ -70,20 +74,19 @@
.app-icon, .app-icon,
.image { .image {
-gtk-icon-effect: none; -gtk-icon-effect: none;
padding-right: 0.5rem;
} }
.notification-action { .notification-action {
border-radius: 12px; border-radius: 9px;
margin: 0.5rem; margin: 3px;
} }
.close-button { .close-button {
margin: 24px; margin: 12px;
padding: 0.2rem; border-radius: 6px;
border-radius: 16px;
} }
/*** Notifications ***/
.notification-group.collapsed .notification-group.collapsed
.notification-row:not(:last-child) .notification-row:not(:last-child)
.notification-action, .notification-action,
@ -103,21 +106,21 @@
.notification.normal, .notification.normal,
.notification.critical, .notification.critical,
.control-center { .control-center {
margin: 16px; border-radius: 12px;
border-radius: 7px; margin: 6px;
} }
.floating-notifications, .floating-notifications,
.notification-content { .notification-content {
border-radius: 7px; padding: 0.5rem;
margin: 3px;
border-radius: 9px;
} }
.control-center-list { .control-center-list {
background: transparent; background: transparent;
} }
/*** Widgets ***/
/* Title widget */
.widget-title { .widget-title {
margin: 0.5rem; margin: 0.5rem;
} }
@ -127,11 +130,10 @@
} }
.widget-title > button { .widget-title > button {
border-radius: 16px; border-radius: 9px;
padding: 0.5rem; padding: 0.5rem;
} }
/* DND Widget */
.widget-dnd { .widget-dnd {
margin: 0.5rem; margin: 0.5rem;
} }
@ -141,23 +143,23 @@
} }
.widget-dnd > switch { .widget-dnd > switch {
border-radius: 16px; border-radius: 9px;
} }
.widget-dnd > switch slider { .widget-dnd > switch slider {
border-radius: 16px; margin: 3px;
padding: 0.25rem; border-radius: 6px;
padding: 0px;
} }
/* Mpris widget */
.widget-mpris .widget-mpris-player { .widget-mpris .widget-mpris-player {
border-radius: 16px; border-radius: 12px;
margin: 0.5rem; margin: 0.5rem;
padding: 0.5rem; padding: 0.5rem;
} }
.widget-mpris .widget-mpris-player .widget-mpris-album-art { .widget-mpris .widget-mpris-player .widget-mpris-album-art {
border-radius: 16px; border-radius: 9px;
} }
.widget-mpris .widget-mpris-player .widget-mpris-title { .widget-mpris .widget-mpris-player .widget-mpris-title {
@ -169,9 +171,8 @@
} }
.widget-mpris .widget-mpris-player > box > button { .widget-mpris .widget-mpris-player > box > button {
border: 1px solid transparent; border-radius: 6px;
border-radius: 16px; padding: 3px;
padding: 0.25rem;
} }
''; '';
} }

View File

@ -1,6 +1,7 @@
{ {
config, config,
lib, lib,
perSystem,
... ...
}: }:
with lib; let with lib; let
@ -12,6 +13,7 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
package = perSystem.ghostty.ghostty;
settings = { settings = {
gtk-single-instance = true; gtk-single-instance = true;
window-decoration = "client"; window-decoration = "client";

View File

@ -16,7 +16,7 @@ in {
gcr_4 gcr_4
libsecret libsecret
]; ];
# programs.seahorse.enable = true; programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring.enable = true;
xdg.portal.config.common = { xdg.portal.config.common = {
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];

View File

@ -13,22 +13,29 @@ in {
}; };
config = lib.mkMerge [ config = lib.mkMerge [
(mkIf cfg.enable { (mkIf cfg.enable {
module.desktop.displayManager = "greetd"; module.desktop = {
module.desktop.gnome-keyring.enable = true; displayManager = "greetd";
gnome-keyring.enable = true;
};
sound.pipewire.enable = true; sound.pipewire.enable = true;
security = {
soteria.enable = true; # polkit agent in rust
pam.services.gtklock = {};
};
programs.niri.enable = true; # wayland compositor in rust programs.niri.enable = true; # wayland compositor in rust
security = {
pam.services.gtklock = {};
soteria.enable = true; # polkit agent in rust
};
services = {
blueman.enable = config.hardware.bluetooth.enable;
gvfs.enable = true;
};
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk]; extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk];
config.niri.default = ["gnome" "gtk"]; config.niri.default = ["gnome" "gtk"];
}; };
}) })
(mkIf config.services.displayManager.autoLogin.enable { (mkIf (cfg.enable
&& config.services.displayManager.autoLogin.enable) {
services.greetd.settings.initial_session = { services.greetd.settings.initial_session = {
command = "niri-session"; command = "niri-session";
user = config.services.displayManager.autoLogin.user; user = config.services.displayManager.autoLogin.user;

View File

@ -1,11 +1,21 @@
{lib, ...}: { {
environment.variables = { lib,
pkgs,
...
}: {
boot.tmp.cleanOnBoot = lib.mkDefault true;
console.font = "${pkgs.spleen}/share/consolefonts/spleen-16x32.psfu";
environment = {
ldso32 = null;
memoryAllocator.provider = "mimalloc";
variables = {
LESS = "-R --mouse"; LESS = "-R --mouse";
}; };
};
environment.ldso32 = null; networking.networkmanager.enable = true;
boot.tmp.cleanOnBoot = lib.mkDefault true;
services.openssh = { services.openssh = {
settings.X11Forwarding = false; settings.X11Forwarding = false;
@ -24,4 +34,12 @@
"sntrup761x25519-sha512@openssh.com" "sntrup761x25519-sha512@openssh.com"
]; ];
}; };
services.journald.extraConfig = ''
SystemMaxUse=1G
'';
systemd.coredump.extraConfig = ''
Storage=none
ProcessSizeMax=0
'';
} }

View File

@ -1,7 +1,9 @@
{ {
imports = [ imports = [
./common.nix ./common.nix
./locale.nix
./misc ./misc
./virtual ./stylix
./virt
]; ];
} }

View File

@ -3,16 +3,18 @@
lib, lib,
... ...
}: let }: let
inherit (lib) mkIf mkEnableOption; inherit (lib) types mkOption;
cfg = config.locale.ukrainian;
in { in {
options = { options = {
locale.ukrainian.enable = module.locale = mkOption {
mkEnableOption "enables ukrainian locale"; type = types.strMatching "[a-z]{2}_[A-Z]{2}\\.UTF-8";
default = "en_US.UTF-8";
description = "set locale";
}; };
config = mkIf cfg.enable { };
config = {
i18n = let i18n = let
locale = "uk_UA.UTF-8"; inherit (config.module) locale;
in { in {
defaultLocale = locale; defaultLocale = locale;
extraLocaleSettings = { extraLocaleSettings = {

View File

@ -1,8 +1,6 @@
{ {
imports = [ imports = [
./locale.nix
./opentabletdriver.nix ./opentabletdriver.nix
./qmk-vial.nix ./qmk-vial.nix
./stylix
]; ];
} }

View File

@ -6,10 +6,10 @@
inherit (lib) mkIf mkEnableOption; inherit (lib) mkIf mkEnableOption;
in { in {
options = { options = {
opentabletdriver.enable = module.misc.opentabletdriver.enable =
mkEnableOption "enables opentabletdriver"; mkEnableOption "enables opentabletdriver";
}; };
config = mkIf config.opentabletdriver.enable { config = mkIf config.module.misc.opentabletdriver.enable {
hardware.opentabletdriver = { hardware.opentabletdriver = {
enable = true; enable = true;
daemon.enable = true; daemon.enable = true;

View File

@ -6,10 +6,10 @@
inherit (lib) mkIf mkEnableOption; inherit (lib) mkIf mkEnableOption;
in { in {
options = { options = {
qmk-vial.enable = module.misc.qmk-vial.enable =
mkEnableOption "adds a udev rule for vial keyboards"; mkEnableOption "adds a udev rule for vial keyboards";
}; };
config = mkIf config.qmk-vial.enable { config = mkIf config.module.misc.qmk-vial.enable {
services.udev.extraRules = '' services.udev.extraRules = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
''; '';

View File

@ -5,66 +5,81 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (builtins) fetchurl;
inherit (lib) mkEnableOption mkOption mkIf; inherit (lib) mkEnableOption mkOption mkIf;
inherit (lib) optionalAttrs; inherit (lib) optionalAttrs;
inherit (lib.types) bool str; inherit (lib.types) bool str;
inherit (config.system) stateVersion;
cfg = config.module.stylix; cfg = config.module.stylix;
fromBase16Schemes = f: "${pkgs.base16-schemes}/share/themes/${f}.yaml";
interPackage = pkgs.inter-nerdfont; interPackage = pkgs.inter-nerdfont;
iosevkaPackage = iosevkaPackage = pkgs.nerd-fonts.iosevka;
if stateVersion == "24.11" iosevkaTermPackage = pkgs.nerd-fonts.iosevka-term;
then pkgs.nerdfonts.override {fonts = ["Iosevka"];} mesloLgPackage = pkgs.nerd-fonts.meslo-lg;
else pkgs.nerd-fonts.iosevka; # jetBrainsMonoPackage = pkgs.nerd-fonts.jetbrains-mono;
iosevkaTermPackage = geistMonoPackage = pkgs.nerd-fonts.geist-mono;
if stateVersion == "24.11" geistPackage = pkgs.geist-font;
then pkgs.nerdfonts.override {fonts = ["Iosevka Term"];}
else pkgs.nerd-fonts.iosevka-term;
mesloLgPackage =
if stateVersion == "24.11"
then pkgs.nerdfonts.override {fonts = ["MesloLG"];}
else pkgs.nerd-fonts.meslo-lg;
jetBrainsMonoPackage =
if stateVersion == "24.11"
then pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}
else pkgs.nerd-fonts.jetbrains-mono;
geistMonoPackage =
if stateVersion == "24.11"
then pkgs.nerdfonts.override {fonts = ["GeistMono"];}
else pkgs.nerd-fonts.geist-mono;
wallpapers = { wallpapers = {
fern-outline = builtins.fetchurl { abstract = {
squares = fetchurl {
url = "https://w.wallhaven.cc/full/p9/wallhaven-p91dym.jpg";
name = "wallhaven-p91dym.jpg";
sha256 = "wnsAhh0Soxm+lxahh+Xc/+CAw/abWgPIkeoOlzNGaDo=";
};
waves = fetchurl {
url = "https://w.wallhaven.cc/full/5y/wallhaven-5ydl93.png";
name = "wallhaven-5ydl93.png";
sha256 = "fTE2cyn2mkx05+Zn6qcs4+Rb7AYD0uyi6CNznuZYOjw=";
};
};
fern-outline = fetchurl {
url = "https://w.wallhaven.cc/full/p9/wallhaven-p9m7ve.png"; url = "https://w.wallhaven.cc/full/p9/wallhaven-p9m7ve.png";
name = "wallhaven-p9m7ve.png"; name = "wallhaven-p9m7ve.png";
sha256 = "0r7dl4fjwv2p5q5ggr4sjsl2h5m0s98k9qhiwkvmwi010lyffkx7"; sha256 = "0r7dl4fjwv2p5q5ggr4sjsl2h5m0s98k9qhiwkvmwi010lyffkx7";
}; };
mountains-pink = builtins.fetchurl { mountains-pink = fetchurl {
url = "https://w.wallhaven.cc/full/yq/wallhaven-yq7gox.jpg"; url = "https://w.wallhaven.cc/full/yq/wallhaven-yq7gox.jpg";
name = "wallhaven-yq7gox.jpg"; name = "wallhaven-yq7gox.jpg";
sha256 = "09s31spp9mq71fgkl1w80nzdc1458p1gjfyi3y6fy14wj2dza0pj"; sha256 = "09s31spp9mq71fgkl1w80nzdc1458p1gjfyi3y6fy14wj2dza0pj";
}; };
mountains-black = builtins.fetchurl { mountains-black = fetchurl {
url = "https://w.wallhaven.cc/full/9d/wallhaven-9djzww.jpg"; url = "https://w.wallhaven.cc/full/9d/wallhaven-9djzww.jpg";
name = "wallhaven-9djzww.jpg"; name = "wallhaven-9djzww.jpg";
sha256 = "1p2si922i9qs09h8c74lrvx0f284g0xvm7lh85gk1x7lqhn611zm"; sha256 = "1p2si922i9qs09h8c74lrvx0f284g0xvm7lh85gk1x7lqhn611zm";
}; };
cyber-dawn = builtins.fetchurl { cyber-dawn = fetchurl {
url = "https://w.wallhaven.cc/full/ym/wallhaven-ymo2y7.png"; url = "https://w.wallhaven.cc/full/ym/wallhaven-ymo2y7.png";
name = "wallhaven-ymo2y7.png"; name = "wallhaven-ymo2y7.png";
sha256 = "1b3j0hxxy8m25scq42lxsxc99xvr15pha1j4wplgz761asrvxly3"; sha256 = "1b3j0hxxy8m25scq42lxsxc99xvr15pha1j4wplgz761asrvxly3";
}; };
nixos-rainbow = builtins.fetchurl { nixos-rainbow = fetchurl {
url = "https://w.wallhaven.cc/full/p9/wallhaven-p9pd23.png"; url = "https://w.wallhaven.cc/full/p9/wallhaven-p9pd23.png";
name = "wallhaven-p9pd23.png"; name = "wallhaven-p9pd23.png";
sha256 = "7CMuETntiVUCKhUIdJzX+sf3F47GvuX2a61o4xbEzww="; sha256 = "7CMuETntiVUCKhUIdJzX+sf3F47GvuX2a61o4xbEzww=";
}; };
mountains-sepia = fetchurl {
url = "https://w.wallhaven.cc/full/k8/wallhaven-k89k81.jpg";
name = "wallhaven-k89k81.jpg";
sha256 = "C0lvJ0ff0mCC3i9mmeHZsj/n6Ehkp3jaslVr7VDUB3k=";
};
jcurry-cloud = fetchurl {
url = "https://w.wallhaven.cc/full/7j/wallhaven-7j6wpy.jpg";
name = "wallhaven-je8rwq.jpg";
sha256 = "xsuCYc0mCDkrJZ+BUmEEclAfF17g1n39JHeubtZHP78=";
};
vapor-moon = fetchurl {
url = "https://w.wallhaven.cc/full/lm/wallhaven-lm6d2r.png";
name = "wallhaven-lm6d2r.png";
sha256 = "V07kj2zwFHDwzIN8QE8IFrJMXxDOBoK9C11sQGgTjyQ=";
};
}; };
themes = { themes = {
rose-pine-dawn = { rose-pine-dawn = {
polarity = "light"; polarity = "light";
scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-dawn.yaml"; scheme = fromBase16Schemes "rose-pine-dawn";
wallpaper = wallpapers.cyber-dawn; wallpaper = wallpapers.cyber-dawn;
serif = { serif = {
@ -85,14 +100,12 @@
}; };
rose-pine-moon = { rose-pine-moon = {
polarity = "dark"; polarity = "dark";
scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-moon.yaml"; scheme = fromBase16Schemes "rose-pine-moon";
wallpaper = wallpapers.cyber-dawn; wallpaper = wallpapers.cyber-dawn;
serif = { serif = {
# package = iosevkaPackage; package = interPackage;
# name = "Iosevka Nerd Font Propo"; name = "Inter Nerd Font";
package = pkgs.geist-font;
name = "Geist Light";
}; };
monospace = { monospace = {
@ -106,15 +119,34 @@
size = 24; size = 24;
}; };
}; };
gruvbox-dark-pale = { sandcastle = {
polarity = "dark"; polarity = "dark";
scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-pale.yaml"; scheme = fromBase16Schemes "sandcastle";
wallpaper = wallpapers.nixos-rainbow; wallpaper = wallpapers.abstract.waves;
serif = { serif = {
# package = iosevkaPackage; package = geistPackage;
# name = "Iosevka Nerd Font Propo"; name = "Geist";
package = pkgs.geist-font; };
monospace = {
package = geistMonoPackage;
name = "GeistMono NFM";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
gruvbox-dark-pale = {
polarity = "dark";
scheme = fromBase16Schemes "gruvbox-dark-pale";
wallpaper = wallpapers.mountains-sepia;
serif = {
package = geistPackage;
name = "Geist"; name = "Geist";
}; };
@ -131,8 +163,8 @@
}; };
nord = { nord = {
polarity = "dark"; polarity = "dark";
scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml"; scheme = fromBase16Schemes "nord";
wallpaper = builtins.fetchurl { wallpaper = fetchurl {
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png"; url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
name = "wallhaven-l8l9gq.png"; name = "wallhaven-l8l9gq.png";
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z"; sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
@ -157,8 +189,8 @@
nord-light = { nord-light = {
polarity = "light"; polarity = "light";
scheme = "${pkgs.base16-schemes}/share/themes/nord-light.yaml"; scheme = fromBase16Schemes "nord-light";
wallpaper = builtins.fetchurl { wallpaper = fetchurl {
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png"; url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
name = "wallhaven-l8l9gq.png"; name = "wallhaven-l8l9gq.png";
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z"; sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
@ -183,8 +215,8 @@
helios = { helios = {
polarity = "dark"; polarity = "dark";
scheme = "${pkgs.base16-schemes}/share/themes/helios.yaml"; scheme = fromBase16Schemes "helios";
wallpaper = builtins.fetchurl { wallpaper = fetchurl {
url = "https://w.wallhaven.cc/full/lq/wallhaven-lqorw2.png"; url = "https://w.wallhaven.cc/full/lq/wallhaven-lqorw2.png";
name = "wallhaven-lqorw2.png"; name = "wallhaven-lqorw2.png";
sha256 = "sha256:1rjchjq4pc2jyq8dvpa17mmscv9qcm0h0zv468lsf8s51anpid6p"; sha256 = "sha256:1rjchjq4pc2jyq8dvpa17mmscv9qcm0h0zv468lsf8s51anpid6p";
@ -209,8 +241,8 @@
sulphurpool = { sulphurpool = {
polarity = "dark"; polarity = "dark";
scheme = "${pkgs.base16-schemes}/share/themes/atelier-sulphurpool.yaml"; scheme = fromBase16Schemes "atelier-sulphurpool";
wallpaper = builtins.fetchurl { wallpaper = fetchurl {
url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg"; url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg";
name = "wallhaven-rd5q3m.jpg"; name = "wallhaven-rd5q3m.jpg";
sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6"; sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6";
@ -235,7 +267,7 @@
himalaya = { himalaya = {
# lightly pink like himalayan salt # lightly pink like himalayan salt
polarity = "light"; polarity = "light";
scheme = "${pkgs.base16-schemes}/share/themes/atelier-plateau-light.yaml"; scheme = fromBase16Schemes "atelier-plateau-light";
wallpaper = wallpapers.mountains-pink; wallpaper = wallpapers.mountains-pink;
serif = { serif = {
@ -248,6 +280,48 @@
name = "MesloLGM Nerd Font Mono"; name = "MesloLGM Nerd Font Mono";
}; };
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
};
vesper = {
polarity = "dark";
scheme = fromBase16Schemes "vesper";
wallpaper = wallpapers.abstract.squares;
serif = {
package = geistPackage;
name = "Geist";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono Nerd Font";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
github = {
polarity = "light";
scheme = fromBase16Schemes "github";
wallpaper = wallpapers.abstract.squares;
serif = {
package = geistPackage;
name = "Geist Light";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono Nerd Font";
};
cursor = { cursor = {
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice"; name = "Bibata-Modern-Ice";
@ -277,6 +351,7 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
fonts.packages = [pkgs.nerd-fonts.symbols-only];
stylix = stylix =
{ {
enable = true; enable = true;

View File

@ -5,10 +5,10 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.virtual.docker; cfg = config.module.virt.docker;
in { in {
options = { options = {
virtual.docker.enable = module.virt.docker.enable =
mkEnableOption "enable docker"; mkEnableOption "enable docker";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -5,10 +5,10 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.virtual.libvirt; cfg = config.module.virt.libvirt;
in { in {
options = { options = {
virtual.libvirt.enable = module.virt.libvirt.enable =
mkEnableOption "enables virtualisation"; mkEnableOption "enables virtualisation";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -5,10 +5,10 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.virtual.podman; cfg = config.module.virt.podman;
in { in {
options = { options = {
virtual.podman.enable = module.virt.podman.enable =
mkEnableOption "enables podman"; mkEnableOption "enables podman";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -45,17 +45,25 @@ in {
internal = { internal = {
ids = ["0001:0001" "048d:c101"]; ids = ["0001:0001" "048d:c101"];
settings.main = let settings.main = let
idleTimeout = toString 200; # finger = mod;
holdTimeout = toString 150; pinky = "alt";
ring = "meta";
middle = "control";
index = "shift";
# timeouts
idle = "200";
hold = "150";
# function takes finger and letter
homeRowMod = f: l: "lettermod(${f}, ${l}, ${idle}, ${hold})";
in { in {
a = "lettermod(alt, a, ${idleTimeout}, ${holdTimeout})"; "a" = homeRowMod pinky "a";
s = "lettermod(meta, s, ${idleTimeout}, ${holdTimeout})"; "s" = homeRowMod ring "s";
d = "lettermod(control, d, ${idleTimeout}, ${holdTimeout})"; "d" = homeRowMod middle "d";
f = "lettermod(shift, f, ${idleTimeout}, ${holdTimeout})"; "f" = homeRowMod index "f";
j = "lettermod(shift, j, ${idleTimeout}, ${holdTimeout})"; "j" = homeRowMod index "j";
k = "lettermod(control, k, ${idleTimeout}, ${holdTimeout})"; "k" = homeRowMod middle "k";
l = "lettermod(meta, l, ${idleTimeout}, ${holdTimeout})"; "l" = homeRowMod ring "l";
";" = "lettermod(alt, ;, ${idleTimeout}, ${holdTimeout})"; ";" = homeRowMod pinky ";";
}; };
}; };
}; };

View File

@ -1,8 +1,10 @@
{ {
pkgs, pkgs,
# inputs,
lib, lib,
... ...
}: { }: {
# imports = with inputs; [lix.nixosModules.default];
nix = { nix = {
package = pkgs.lixPackageSets.latest.lix; package = pkgs.lixPackageSets.latest.lix;
channel.enable = false; channel.enable = false;

View File

@ -30,8 +30,10 @@
}; };
}; };
openssh.enable = true; openssh.enable = true;
scx.enable = true; scx = {
scx.scheduler = "scx_flash"; enable = true;
scheduler = "scx_flash";
};
syncthing.openDefaultPorts = true; syncthing.openDefaultPorts = true;
userborn.enable = true; userborn.enable = true;
}; };

View File

@ -1,4 +1,5 @@
{ {
config,
inputs, inputs,
osConfig, osConfig,
... ...
@ -8,7 +9,27 @@
self.homeModules.desktop self.homeModules.desktop
self.homeModules.programs self.homeModules.programs
]; ];
inherit (osConfig) desktop; inherit (osConfig) desktop;
home.stateVersion = osConfig.system.stateVersion;
home.sessionPath = ["$HOME/.local/bin"]; home = {
inherit (osConfig.system) stateVersion;
sessionPath = ["$HOME/.local/bin"];
};
xdg.userDirs = let
inherit (config.home) homeDirectory;
homeDir = f: "${homeDirectory}/${f}";
in {
enable = true;
createDirectories = true;
templates = homeDir "temps";
publicShare = homeDir "pub";
desktop = homeDir "desktop";
download = homeDir "downloads";
documents = homeDir "docs";
pictures = homeDir "pics";
videos = homeDir "vids";
music = homeDir "music";
};
} }

View File

@ -69,7 +69,7 @@
"com.obsproject.Studio" "com.obsproject.Studio"
"com.usebottles.bottles" # wine containers "com.usebottles.bottles" # wine containers
"de.capypara.FieldMonitor" # libvirt "de.capypara.FieldMonitor" # libvirt
"de.haeckerfelix.Fragments" # torrents "org.qbittorrent.qBittorrent" # torrents
"io.github.amit9838.mousam" # weather "io.github.amit9838.mousam" # weather
"io.github.finefindus.Hieroglyphic" # find latex symbols (in rust) "io.github.finefindus.Hieroglyphic" # find latex symbols (in rust)
"io.github.lainsce.Khronos" # log time for tasks "io.github.lainsce.Khronos" # log time for tasks
@ -129,6 +129,7 @@
"org.gimp.GIMP" = {inherit (homeNoNetwork) Context;}; "org.gimp.GIMP" = {inherit (homeNoNetwork) Context;};
"org.kde.kdenlive" = {inherit (homeNoNetwork) Context;}; "org.kde.kdenlive" = {inherit (homeNoNetwork) Context;};
"org.signal.Signal".Environment.SIGNAL_PASSWORD_STORE = "gnome-libsecret"; "org.signal.Signal".Environment.SIGNAL_PASSWORD_STORE = "gnome-libsecret";
"org.qbittorrent.qBittorrent".Context.filesystems = ["host"]; # evil
}; };
}; };
} }

View File

@ -1,10 +1,13 @@
{ {
config, config,
lib, lib,
osConfig,
pkgs, pkgs,
... ...
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
inherit (osConfig.virtualisation) libvirtd;
inherit (osConfig.hardware) bluetooth;
in { in {
console.yazi.enable = true; console.yazi.enable = true;
editor.helix.enable = true; editor.helix.enable = true;
@ -20,23 +23,36 @@ in {
}; };
services = { services = {
pueue.enable = true; # process queue in rust # pueue.enable = true; # process queue in rust
ssh-agent.enable = true; ssh-agent.enable = true;
}; };
programs = { programs =
lib.attrsets.recursiveUpdate
{
bat.enable = true; # cat in rust bat.enable = true; # cat in rust
btop = { btop.enable = true;
enable = true;
settings.update_ms = 200;
};
# direnv.enable = true; # direnv.enable = true;
# direnv.silent = true;
eza.enable = true; # ls in rust eza.enable = true; # ls in rust
fd.enable = true; # find in rust fd.enable = true; # find in rust
fzf.enable = true; # fuzzy finder in rust fzf.enable = true; # fuzzy finder in rust
git.enable = true;
gitui.enable = true; # git ui in rust
jujutsu.enable = true; # vcs in rust
keychain.enable = true;
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
zellij.enable = true;
zk.enable = true;
zoxide.enable = true; # fuzzy cd in rust
}
{
btop.settings.update_ms = 200;
# direnv.silent = true;
git = { git = {
enable = true;
delta.enable = true; # diff in rust delta.enable = true; # diff in rust
signing.format = "ssh"; signing.format = "ssh";
aliases = { aliases = {
@ -45,20 +61,7 @@ in {
pom = "push origin main"; pom = "push origin main";
}; };
}; };
gitui.enable = true; # git ui in rust keychain.keys = ["id_ed25519"];
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
zk.enable = true;
zoxide.enable = true; # fuzzy cd in rust
zellij.enable = true;
}; };
home.packages = with pkgs; home.packages = with pkgs;
@ -76,20 +79,21 @@ in {
dua # disk space usage in rust dua # disk space usage in rust
duf # better df in go duf # better df in go
fend # calculator in rust fend # calculator in rust
mprocs # process runner in rust # mprocs # process runner in rust
ouch # archive manager in rust ouch # archive manager in rust
# procs # ps in rust # procs # ps in rust
rbw # bitwarden cli in rust rbw # bitwarden cli in rust
sd # sed in rust sd # sed in rust
systemctl-tui # systemctl tui in rust systemctl-tui # systemctl tui in rust
trashy # trash cli in rust trashy # trash cli in rust
up # ultimate plumber in go
] ]
++ [ ++ [
# misc apps # misc apps
adwaita-icon-theme adwaita-icon-theme
# vial # qmk keyboard configuring app # vial # qmk keyboard configuring app
pinentry-qt # pinentry for rbw pinentry-qt # pinentry for rbw
virt-manager # libvirt gui (mkIf libvirtd.enable virt-manager) # libvirt gui
# waycheck # check wayland protocols # waycheck # check wayland protocols
gpu-screen-recorder-gtk gpu-screen-recorder-gtk
] ]
@ -99,28 +103,22 @@ in {
# gnome-text-editor # gnome-text-editor
helvum # pipewire patchbay in rust helvum # pipewire patchbay in rust
junction # app chooser junction # app chooser
# loupe # image viewer and editor in rust
mission-center # task manager in rust (partly) mission-center # task manager in rust (partly)
# nautilus # file manager (mkIf bluetooth.enable overskride) # bluetooth gui in rust
overskride # bluetooth gui in rust
papers # pdf reader in rust
pika-backup # borg gui in rust pika-backup # borg gui in rust
pwvucontrol # pipewire gui in rust pwvucontrol # pipewire gui in rust
sonusmix # pipewire routing tool in rust sonusmix # pipewire routing tool in rust
# wdisplays # wlroots display configurator
]; ];
xdg.desktopEntries = { # xdg.desktopEntries.uni = {
uni = { # actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\"";
actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\""; # categories = ["Utility" "X-Launch" "Network"];
categories = ["Utility" "X-Launch" "Network"]; # comment = "Select and open or copy URLs from a list.";
comment = "Select and open or copy URLs from a list."; # exec = "fish -c \"~/.local/bin/uni\"";
exec = "fish -c \"~/.local/bin/uni\""; # icon = "web-browser";
icon = "web-browser"; # name = "Uni URL Handler";
name = "Uni URL Handler"; # startupNotify = true;
startupNotify = true; # terminal = false;
terminal = false; # type = "Application";
type = "Application"; # };
};
};
} }