Compare commits

..

63 commits
logo ... main

Author SHA1 Message Date
afaa34df91 feat: use hypridle and hyprlock
All checks were successful
/ check (push) Successful in 5m27s
2024-12-21 17:10:45 -06:00
43c3db7f8a Center new floating windows
All checks were successful
/ check (push) Successful in 5m19s
2024-12-20 14:08:02 -06:00
4982ab72e3 Hopefully fix hyprland not waking from swayidle and use movewindow instead of swapwindow
All checks were successful
/ check (push) Successful in 5m11s
2024-12-20 13:18:26 -06:00
50c06ebd7f Merge remote-tracking branch 'origin/main'
All checks were successful
/ check (push) Successful in 5m15s
2024-12-20 11:08:06 -06:00
0baa4cadc7 Foxtrot bar 2024-12-20 11:07:57 -06:00
5149e4aef0 Fix memory icon
Some checks failed
/ check (push) Has been cancelled
2024-12-20 11:07:00 -06:00
7078e5b872 Add systray to eww bar
Some checks failed
/ check (push) Has been cancelled
2024-12-20 11:03:50 -06:00
cce109e79d Update xwaylandvideobridge windowrules
All checks were successful
/ check (push) Successful in 5m19s
2024-12-20 10:40:28 -06:00
43f35b76ce Fix window rules to work as intended, open initial apps on initial workspace
Some checks failed
/ check (push) Has been cancelled
2024-12-20 10:37:49 -06:00
4f8aea1ef4 Merge remote-tracking branch 'origin/main'
All checks were successful
/ check (push) Successful in 5m18s
2024-12-20 10:19:41 -06:00
0e38f4dd2a move dragon to hyprland, add wezterm long-command-finished notifications, update mako styles to be transparent and rounded, use mise by default 2024-12-20 10:14:12 -06:00
a49df451a2 Notifications are round
All checks were successful
/ check (push) Successful in 5m29s
2024-12-20 09:02:26 -06:00
df79b8dc4a Work on elixir template
All checks were successful
/ check (push) Successful in 5m24s
2024-12-19 21:39:53 -06:00
ebfe621f4c Simplify
All checks were successful
/ check (push) Successful in 5m19s
2024-12-19 20:36:06 -06:00
9fdea1fd17 Fix typo
Some checks failed
/ check (push) Has been cancelled
2024-12-19 20:34:17 -06:00
8c0dd0aa54 Merge remote-tracking branch 'origin/main'
Some checks failed
/ check (push) Has been cancelled
2024-12-19 20:31:28 -06:00
ab352eb08e Don't lock in templates during testing 2024-12-19 20:29:10 -06:00
d32bba279a Merge remote-tracking branch 'origin/main'
All checks were successful
/ check (push) Successful in 5m22s
2024-12-19 12:23:43 -06:00
9b24af3def Fix wezterm window changing size when font does 2024-12-19 12:23:24 -06:00
d5d4a1d96c Break up flake
All checks were successful
/ check (push) Successful in 5m16s
2024-12-18 09:30:00 -06:00
5481cdb362 Install jujutsu, disable emacs, bat for pager
All checks were successful
/ check (push) Successful in 5m31s
2024-12-16 10:44:00 -06:00
08f8e07f03 Forgejo style fixes
All checks were successful
/ check (push) Successful in 5m30s
2024-12-14 09:03:57 -06:00
76ee9ce49b Merge remote-tracking branch 'origin/main'
All checks were successful
/ check (push) Successful in 5m21s
2024-12-13 20:48:59 -06:00
78cfa9d619 Setup catppuccin forgejo/gitea theme 2024-12-13 20:48:40 -06:00
e0c8f39121 Enable asciidoc rendering in forgejo 2024-12-13 10:48:50 -06:00
46d30b8959 Merge remote-tracking branch 'origin/main'
All checks were successful
/ check (push) Successful in 5m35s
2024-12-12 18:55:06 -06:00
99b8097aa6 Fire 2024-12-12 18:54:56 -06:00
83e98441a7 Remove mako I hope?
Some checks failed
/ check (push) Has been cancelled
2024-12-12 10:35:51 -06:00
db9ec77114 HTPC updates
All checks were successful
/ check (push) Successful in 5m19s
2024-12-06 08:22:35 -06:00
b7ce066115 Thinker plasma
All checks were successful
/ check (push) Successful in 5m21s
2024-12-03 13:34:49 -06:00
7e8a92ddc7 Merge remote-tracking branch 'origin/main' 2024-12-03 13:29:05 -06:00
6ff76be7e4 Thablet graphics 2024-12-03 13:28:57 -06:00
3a7c517435 Wez
All checks were successful
/ check (push) Successful in 5m12s
2024-12-03 12:53:29 -06:00
6e4d4cfafc Re-activate the cache
All checks were successful
/ check (push) Successful in 5m14s
2024-12-02 20:09:05 -06:00
7373b9af7e Merge remote-tracking branch 'origin/main' 2024-12-02 19:58:23 -06:00
50b5b24d0f Merge 2024-12-02 19:58:12 -06:00
88e55cbd3a AMDGPU?
All checks were successful
/ check (push) Successful in 5m52s
2024-12-02 17:01:30 -06:00
a9b1a299cd Beef up
Some checks failed
/ check (push) Failing after 8s
2024-12-02 16:05:05 -06:00
849bb6bc9b Dragon up
Some checks failed
/ check (push) Has been cancelled
2024-12-02 13:31:59 -06:00
e9f6f85251 Home manager, too! 2024-12-02 13:27:49 -06:00
fd4d4ffa1a Update flake, nixos 24.11
Some checks failed
/ check (push) Failing after 9s
2024-12-02 13:05:36 -06:00
25d8cf48d5 No tmpfs for desktop since weird apps use /tmp weird
Some checks failed
/ check (push) Failing after 3m43s
2024-11-25 13:34:16 -06:00
196bd09206 Fix hyprland status in eww bar 2024-11-25 10:38:50 -06:00
c11e683a6a Bar
Some checks failed
/ check (push) Failing after 3m44s
2024-11-24 16:52:12 -06:00
fdc1fe0e16 Merge remote-tracking branch 'origin/main'
Some checks failed
/ check (push) Has been cancelled
2024-11-24 16:44:26 -06:00
787124b6fa Hyprland up 2024-11-24 16:44:17 -06:00
b43ada1c2b Merge remote-tracking branch 'origin/main'
Some checks failed
/ check (push) Failing after 3m32s
2024-11-24 08:56:34 -06:00
df933bdc6f oils 2024-11-24 08:55:26 -06:00
d8ed1f42ae Consistent tofi
All checks were successful
/ check (push) Successful in 4m42s
2024-11-22 08:22:14 -06:00
444502d6f1 Wezterm broken on wayland
Some checks failed
/ check (push) Has been cancelled
2024-11-22 08:13:16 -06:00
78daebdbb3 WIP WezTerm fixes
All checks were successful
/ check (push) Successful in 4m51s
2024-11-20 10:10:05 -06:00
c53d4b832b Fix flake check 2024-11-20 09:46:11 -06:00
724c4fdbda Disable jujutsu due to CVE
Some checks failed
/ check (push) Failing after 3m55s
2024-11-12 10:54:34 -06:00
c520b80cee Flake update
Some checks failed
/ check (push) Failing after 2m37s
2024-11-11 14:39:47 -06:00
57ae703b38 Update factorio server version
Some checks failed
/ check (push) Failing after 3m37s
2024-11-09 22:12:24 -06:00
f7b0b54871 Simplified UI
Some checks failed
/ check (push) Failing after 3m20s
2024-11-06 09:33:36 -06:00
f735072e34 Use more of zellij's defaults
Some checks failed
/ check (push) Failing after 3m31s
2024-11-05 09:08:59 -06:00
c5b0de57c4 Overlay zellij 0.41
Some checks failed
/ check (push) Has been cancelled
2024-11-05 09:04:54 -06:00
e32f46fa20 Lengths
Some checks failed
/ check (push) Failing after 3m24s
2024-11-03 14:48:41 -06:00
30cddbdc37 Flake 2024-11-03 11:08:49 -06:00
c7e033e1d6 Merge remote-tracking branch 'origin/main'
Some checks failed
/ check (push) Failing after 3m14s
2024-10-25 10:44:27 -05:00
da5f4d9a9c Merge remote-tracking branch 'origin/main'
Some checks failed
/ check (push) Failing after 3m21s
2024-10-24 21:09:23 -05:00
13ad12efda Android? 2024-10-24 21:09:13 -05:00
27 changed files with 1464 additions and 945 deletions

View file

@ -20,11 +20,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725199881, "lastModified": 1731959031,
"narHash": "sha256-jsmipf/u1GFZE5tBUkr56CHMN6VpUWCAjfLIhvQijU0=", "narHash": "sha256-TGcvIjftziC1CjuiHCzrYDwmOoSFYIhdiKmLetzB5L0=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "f8a687dd29ff019657498f1bd14da2fbbf0e604b", "rev": "4468981c1c50999f315baa1508f0e53c4ee70c52",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -34,18 +34,12 @@
} }
}, },
"crane": { "crane": {
"inputs": {
"nixpkgs": [
"helix",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1709610799, "lastModified": 1727974419,
"narHash": "sha256-5jfLQx0U9hXbi2skYMGodDJkIgffrjIOgMRjZqms2QE=", "narHash": "sha256-WD0//20h+2/yPGkO88d2nYbb23WMWYvnRyDQ9Dx4UHg=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "81c393c776d5379c030607866afef6406ca1be57", "rev": "37e4f9f0976cb9281cd3f0c70081e5e0ecaee93f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -61,11 +55,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725377834, "lastModified": 1732988076,
"narHash": "sha256-tqoAO8oT6zEUDXte98cvA1saU9+1dLJQe3pMKLXv8ps=", "narHash": "sha256-2uMaVAZn7fiyTUGhKgleuLYe5+EAAYB/diKxrM7g3as=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "e55f9a8678adc02024a4877c2a403e3f6daf24fe", "rev": "2814a5224a47ca19e858e027f7e8bff74a8ea9f1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -107,16 +101,32 @@
"type": "github" "type": "github"
} }
}, },
"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-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1709126324, "lastModified": 1726560853,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "d465f4819400de7c8d874d50b982301f28a84605", "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -130,11 +140,11 @@
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1726560853,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -170,11 +180,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1725513492, "lastModified": 1732021966,
"narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -185,13 +195,13 @@
}, },
"git-hooks_2": { "git-hooks_2": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_3",
"gitignore": "gitignore_2", "gitignore": "gitignore_3",
"nixpkgs": [ "nixpkgs": [
"slippi", "slippi",
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable_3"
}, },
"locked": { "locked": {
"lastModified": 1721042469, "lastModified": 1721042469,
@ -229,6 +239,28 @@
} }
}, },
"gitignore_2": { "gitignore_2": {
"inputs": {
"nixpkgs": [
"hyprland",
"pre-commit-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"
}
},
"gitignore_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"slippi", "slippi",
@ -252,11 +284,11 @@
}, },
"hardware": { "hardware": {
"locked": { "locked": {
"lastModified": 1725885300, "lastModified": 1733139194,
"narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=", "narHash": "sha256-PVQW9ovo0CJbhuhCsrhFJGGdD1euwUornspKpBIgdok=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e", "rev": "c6c90887f84c02ce9ebf33b95ca79ef45007bf88",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -290,11 +322,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1725976743, "lastModified": 1733164621,
"narHash": "sha256-pLQQbiC9uO4lF58fAnlcDxlbsBB1XFWswsU1oZOIVqU=", "narHash": "sha256-AhYHB343nLY4bkm9yyOT9I7LIg799ouuIBWb31gORcA=",
"owner": "helix-editor", "owner": "helix-editor",
"repo": "helix", "repo": "helix",
"rev": "237cbe4bca46eed52efed39ed75eb44aaccbdde3", "rev": "c0bfdd7bfe8b5a3d13e7e8631eec2e8ea0b726a5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -311,16 +343,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725703823, "lastModified": 1733050161,
"narHash": "sha256-tDgM4d8mLK0Hd6YMB2w1BqMto1XBXADOzPEaLl10VI4=", "narHash": "sha256-lYnT+EYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "208df2e558b73b6a1f0faec98493cb59a25f62ba", "rev": "62d536255879be574ebfe9b87c4ac194febf47c5",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05", "ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -332,11 +364,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725948275, "lastModified": 1733133928,
"narHash": "sha256-4QOPemDQ9VRLQaAdWuvdDBhh+lEUOAnSMHhdr4nS1mk=", "narHash": "sha256-gU40r9AfpIr4eq+0noM8yH1Hxf+EA3dqfIpFtQl8Y1E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e5fa72bad0c6f533e8d558182529ee2acc9454fe", "rev": "873e39d5f4437d2f3ab06881fea8e63e45e1d011",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -361,11 +393,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1722623071, "lastModified": 1728669738,
"narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "912d56025f03d41b1ad29510c423757b4379eb1c", "rev": "0264e698149fcb857a66a53018157b41f8d97bb0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -378,19 +410,21 @@
"inputs": { "inputs": {
"aquamarine": "aquamarine", "aquamarine": "aquamarine",
"hyprcursor": "hyprcursor", "hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang", "hyprlang": "hyprlang",
"hyprutils": "hyprutils", "hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner", "hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems_2", "systems": "systems_2",
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1726132501, "lastModified": 1733157082,
"narHash": "sha256-mFSCZCvUZJX51V7F2NA3uAj5iaCzsDWhBXMNDz0PhH0=", "narHash": "sha256-rmJkUKyvaejRaQeEOpInjGjQv6rgFkm2uJ2iVlMEuOk=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "73b9756b8d7ee06fc1c9f072f2a41f2dd1aeb2c9", "rev": "92186898c0ca1b3f72922b72c4af1723f0d9b888",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -403,21 +437,19 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
"xdph",
"nixpkgs" "nixpkgs"
], ],
"systems": [ "systems": [
"hyprland", "hyprland",
"xdph",
"systems" "systems"
] ]
}, },
"locked": { "locked": {
"lastModified": 1721326555, "lastModified": 1728345020,
"narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-protocols", "repo": "hyprland-protocols",
"rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", "rev": "a7c183800e74f337753de186522b9017a07a8cee",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -442,11 +474,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725188252, "lastModified": 1728168612,
"narHash": "sha256-yBH8c4GDaEAtBrh+BqIlrx5vp6gG/Gu8fQQK63KAQgs=", "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "c12ab785ce1982f82594aff03b3104c598186ddd", "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -467,11 +499,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1724966483, "lastModified": 1732288281,
"narHash": "sha256-WXDgKIbzjYKczxSZOsJplCS1i1yrTUpsDPuJV/xpYLo=", "narHash": "sha256-XTU9B53IjGeJiJ7LstOhuxcRjCOFkQFl01H78sT9Lg4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "8976e3f6a5357da953a09511d0c7f6a890fb6ec2", "rev": "b26f33cc1c8a7fd5076e19e2cce3f062dca6351c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -492,11 +524,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1721324119, "lastModified": 1726874836,
"narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -513,11 +545,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728974938, "lastModified": 1732739177,
"narHash": "sha256-pTPEx6WlM+nJVGrRUGx7Di4ljZMwE9HfvlZ6f3NzNfo=", "narHash": "sha256-iL32+TA/8geCzcL1r3uthrH/GPvbUak5QE++WJUkaiI=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "23170582b0658e6afd913149a58863af3a57b376", "rev": "8d7b2149e618696d5100c2683af1ffa893f02a75",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -568,11 +600,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1690328911, "lastModified": 1729697500,
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=", "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli", "owner": "zhaofengli",
"repo": "nix-github-actions", "repo": "nix-github-actions",
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747", "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -584,11 +616,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1709479366, "lastModified": 1728018373,
"narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", "rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -600,11 +632,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1720386169, "lastModified": 1730741070,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -615,6 +647,22 @@
} }
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": {
"lastModified": 1730741070,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_3": {
"locked": { "locked": {
"lastModified": 1720386169, "lastModified": 1720386169,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
@ -632,11 +680,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1725910328, "lastModified": 1733064805,
"narHash": "sha256-n9pCtzGZ0httmTwMuEbi5E78UQ4ZbQMr1pzi5N0LAG8=", "narHash": "sha256-7NbtSLfZO0q7MXPl5hzA0sbVJt6pWxxtGWbaVUDDmjs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5775c2583f1801df7b790bf7f7d710a19bac66f4", "rev": "31d66ae40417bb13765b0ad75dd200400e98de84",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -648,11 +696,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1725103162, "lastModified": 1732758367,
"narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=", "narHash": "sha256-RzaI1RO0UXqLjydtz3GAXSTzHkpb/lLD1JD8a0W4Wpo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b", "rev": "fa42b5a5f401aab8a32bd33c9a4de0738180dc59",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -664,20 +712,44 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1725826545, "lastModified": 1732981179,
"narHash": "sha256-L64N1rpLlXdc94H+F6scnrbuEu+utC03cDDVvvJGOME=", "narHash": "sha256-F7thesZPvAMSwjRu0K8uFshTk3ZZSNAsXTIFvXBT+34=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "f4c846aee8e1e29062aa8514d5e0ab270f4ec2f9", "rev": "62c435d93bf046a5396f3016472e8f7c8e2aed65",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-24.05", "ref": "nixos-24.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore_2",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1732021966,
"narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"disko": "disko", "disko": "disko",
@ -698,21 +770,17 @@
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"flake-utils": [
"helix",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"helix", "helix",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1709604635, "lastModified": 1728268235,
"narHash": "sha256-le4fwmWmjGRYWwkho0Gr7mnnZndOOe4XGbLw68OvF40=", "narHash": "sha256-lJMFnMO4maJuNO6PQ5fZesrTmglze3UFTTBuKGwR1Nw=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "e86c0fb5d3a22a5f30d7f64ecad88643fe26449d", "rev": "25685cc2c7054efc31351c172ae77b21814f2d42",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -729,11 +797,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726280639, "lastModified": 1729477859,
"narHash": "sha256-YfLRPlFZWrT2oRLNAoqf7G3+NnUTDdlIJk6tmBU7kXM=", "narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "e9f8641c92f26fd1e076e705edb12147c384171d", "rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -753,11 +821,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725647475, "lastModified": 1725994332,
"narHash": "sha256-1PaNuhxB+rhAcpBMwDZCUJpI7Lw0AJfzYot/S18hrXo=", "narHash": "sha256-gla6TlSG6MIczpJ7xhXA66amcaJPAZ9lFHSUrLmR/QY=",
"owner": "lytedev", "owner": "lytedev",
"repo": "slippi-nix", "repo": "slippi-nix",
"rev": "10eb5d58b9d9c0da276d48d1c12898ea53c89d2a", "rev": "68e971a57de45fb3f2081e837962f2c9b8c34240",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -770,17 +838,14 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs-unstable" "nixpkgs-unstable"
],
"nixpkgs-stable": [
"nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1725922448, "lastModified": 1733128155,
"narHash": "sha256-ruvh8tlEflRPifs5tlpa0gkttzq4UtgXkJQS7FusgFE=", "narHash": "sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "cede1a08039178ac12957733e97ab1006c6b6892", "rev": "c6134b6fff6bda95a1ac872a2a9d5f32e3c37856",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -848,11 +913,11 @@
}, },
"locked": { "locked": {
"dir": "nix", "dir": "nix",
"lastModified": 1727585736, "lastModified": 1732918908,
"narHash": "sha256-vEkcyKdFpfWbrtZlB5DCjNCmI2GudIJuHstWo3F9gL8=", "narHash": "sha256-k43oaC+35/LGqJ+3MjIhn4Ko+ap3wTvHCJ4sj9W/o+k=",
"owner": "wez", "owner": "wez",
"repo": "wezterm", "repo": "wezterm",
"rev": "a2f2c07a29f5c98f6736cde0c86b24887f9fd48a", "rev": "4906789a6d61da58f73b95f89b59c41af60e0f3b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -864,11 +929,22 @@
}, },
"xdph": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": "hyprland-protocols", "hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [ "hyprlang": [
"hyprland", "hyprland",
"hyprlang" "hyprlang"
], ],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
"nixpkgs" "nixpkgs"
@ -879,11 +955,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725203932, "lastModified": 1731703417,
"narHash": "sha256-VLULC/OnI+6R9KEP2OIGk+uLJJsfRlaLouZ5gyFd2+Y=", "narHash": "sha256-rheDc/7C+yI+QspYr9J2z9kQ5P9F4ATapI7qyFAe1XA=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "2425e8f541525fa7409d9f26a8ffaf92a3767251", "rev": "8070f36deec723de71e7557441acb17e478204d3",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -1,6 +1,6 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
disko.url = "github:nix-community/disko/master"; disko.url = "github:nix-community/disko/master";
@ -8,12 +8,12 @@
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs-unstable"; sops-nix.inputs.nixpkgs.follows = "nixpkgs-unstable";
sops-nix.inputs.nixpkgs-stable.follows = "nixpkgs"; # sops-nix.inputs.nixpkgs-stable.follows = "nixpkgs";
git-hooks.url = "github:cachix/git-hooks.nix"; git-hooks.url = "github:cachix/git-hooks.nix";
git-hooks.inputs.nixpkgs.follows = "nixpkgs"; git-hooks.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager/release-24.05"; home-manager.url = "github:nix-community/home-manager/release-24.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
home-manager-unstable.url = "github:nix-community/home-manager"; home-manager-unstable.url = "github:nix-community/home-manager";
@ -89,7 +89,7 @@
forSystems = nixpkgs.lib.genAttrs systems; forSystems = nixpkgs.lib.genAttrs systems;
pkgsFor = system: (import nixpkgs {inherit system;}).extend overlays.default; pkgsFor = system: (import nixpkgs {inherit system;}).extend overlays.default;
genPkgs = func: (forSystems (system: func (pkgsFor system))); genPkgs = func: (forSystems (system: func (pkgsFor system)));
pkg = callee: overrides: genPkgs (pkgs: pkgs.callPackage callee overrides); # pkg = callee: overrides: genPkgs (pkgs: pkgs.callPackage callee overrides);
unstable = { unstable = {
forSystems = nixpkgs-unstable.lib.genAttrs systems; forSystems = nixpkgs-unstable.lib.genAttrs systems;
@ -183,7 +183,7 @@
nodejs nodejs
wget wget
sudo sudo
nixFlakes nixVersions.stable
cacert cacert
gnutar gnutar
gzip gzip
@ -242,7 +242,24 @@
I did try using the latest code via the flake, but alas it did not resolve my issues with mux'ing I did try using the latest code via the flake, but alas it did not resolve my issues with mux'ing
*/ */
wezterm = wezterm-input.outputs.packages.${prev.system}.default; wezterm = wezterm-input.outputs.packages.${prev.system}.default;
# wezterm = (import nixpkgs {inherit (prev) system;}).wezterm;
final.wezterm = wezterm; final.wezterm = wezterm;
# zellij = prev.zellij.overrideAttrs rec {
# version = "0.41.0";
# src = prev.fetchFromGitHub {
# owner = "zellij-org";
# repo = "zellij";
# rev = "v0.41.0";
# hash = "sha256-A+JVWYz0t9cVA8XZciOwDkCecsC2r5TU2O9i9rVg7do=";
# };
# cargoDeps = prev.zellij.cargoDeps.overrideAttrs (prev.lib.const {
# name = "zellij-vendor.tar.gz";
# inherit src;
# outputHash = "sha256-WxrMI7fV0pNsGjbNpXLr+xnMdWYkC4WxIeN4OK3ZPIE=";
# });
# };
# final.zellij = zellij;
}; };
unstable-packages = final: _prev: { unstable-packages = final: _prev: {
@ -265,8 +282,11 @@
}; };
nixosConfigurations = { nixosConfigurations = {
beefcake = nixpkgs.lib.nixosSystem { beefcake = let
system = "x86_64-linux"; system = "x86_64-linux";
in
nixpkgs.lib.nixosSystem {
inherit system;
modules = with nixosModules; [ modules = with nixosModules; [
home-manager-defaults home-manager-defaults
@ -274,7 +294,6 @@
hardware.nixosModules.common-cpu-intel hardware.nixosModules.common-cpu-intel
outputs.nixosModules.deno-netlify-ddns-client outputs.nixosModules.deno-netlify-ddns-client
{ {
services.deno-netlify-ddns-client = { services.deno-netlify-ddns-client = {
enable = true; enable = true;
@ -294,6 +313,10 @@
fonts fonts
./nixos/beefcake.nix ./nixos/beefcake.nix
{
services.kanidm.package = (unstable.pkgsFor system).kanidm;
}
]; ];
}; };
@ -313,11 +336,11 @@
virtual-machines virtual-machines
virtual-machines-gui virtual-machines-gui
music-production music-production
# plasma6
gaming gaming
slippi.nixosModules.default slippi.nixosModules.default
outputs.nixosModules.deno-netlify-ddns-client outputs.nixosModules.deno-netlify-ddns-client
{ {
services.deno-netlify-ddns-client = { services.deno-netlify-ddns-client = {
enable = true; enable = true;
@ -438,6 +461,7 @@
kde-connect kde-connect
password-manager password-manager
graphical-workstation graphical-workstation
# plasma6
virtual-machines virtual-machines
virtual-machines-gui virtual-machines-gui
laptop laptop
@ -473,7 +497,7 @@
# we use command -v $cmd here because we only want to invoke these calls _if_ the related package is installed on the system # we use command -v $cmd here because we only want to invoke these calls _if_ the related package is installed on the system
# otherwise, they will likely have no effect anyways # otherwise, they will likely have no effect anyways
text = '' text = ''
command -v powerprofilesctl &>/dev/null && bash -x -c 'powerprofilesctl set performance' command -v powerprofilesctl &>/dev/null && bash -x -c 'powerprofilesctl set balanced'
command -v swaymsg &>/dev/null && bash -x -c 'swaymsg output eDP-1 mode 2880x1920@120Hz' command -v swaymsg &>/dev/null && bash -x -c 'swaymsg output eDP-1 mode 2880x1920@120Hz'
''; '';
}) })
@ -500,6 +524,7 @@
common common
password-manager password-manager
graphical-workstation graphical-workstation
plasma6
music-production music-production
laptop laptop
gaming gaming
@ -570,6 +595,7 @@
common common
password-manager password-manager
graphical-workstation graphical-workstation
plasma6
laptop laptop
gaming gaming
@ -648,7 +674,6 @@
troubleshooting-tools troubleshooting-tools
outputs.nixosModules.deno-netlify-ddns-client outputs.nixosModules.deno-netlify-ddns-client
{ {
services.deno-netlify-ddns-client = { services.deno-netlify-ddns-client = {
enable = true; enable = true;

File diff suppressed because it is too large Load diff

View file

@ -38,7 +38,7 @@ $rosewater: #f5e0dc;
font-size: 12.0pt; font-size: 12.0pt;
} }
.sidestuff slider { .leftsidestuff slider {
color: $sapphire; color: $sapphire;
} }
@ -84,6 +84,7 @@ $rosewater: #f5e0dc;
} }
.workspace { .workspace {
/* height: 100%; */
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
color: #666666; color: #666666;

View file

@ -1,8 +1,9 @@
(defwidget bar [] (defwidget bar []
(centerbox :orientation "h" (centerbox :orientation "h"
(sidestuff) (leftsidestuff)
(box) (box)
(music))) (rightsidestuff)
))
(defwindow bar0 (defwindow bar0
:monitor 0 :monitor 0
@ -30,14 +31,16 @@
:anchor "bottom center") :anchor "bottom center")
(bar)) (bar))
(defwidget sidestuff [] (defwidget rightsidestuff []
(box :class "sidestuff" :orientation "h" :space-evenly false :halign "start" :valign "center" :spacing 10 (box :class "rightsidestuff" :orientation "h" :space-evenly false :halign "end" :valign "center" :spacing 10
time (music)
; TODO: indicator/tray/taskbar/toolbar icons and management? (probably should use something standalone?) (systray)
; https://github.com/elkowar/eww/issues/111 ))
(defwidget leftsidestuff []
(box :class "leftsidestuff" :orientation "h" :space-evenly false :halign "start" :valign "center" :spacing 10
time
; TODO: idle inhibitor? ; TODO: idle inhibitor?
; TODO: hyprland workspaces?
; TODO: get these to align properly? icons seem lower than they should be? ; TODO: get these to align properly? icons seem lower than they should be?
(box :class "mic" ( (box :class "mic" (
box :class {micMuted == "false" ? "live" : "muted"} {micMuted == "false" ? " " : " "} box :class {micMuted == "false" ? "live" : "muted"} {micMuted == "false" ? " " : " "}
@ -48,7 +51,7 @@
) {"${volume}%"} ) {"${volume}%"}
) )
{" ${round(EWW_CPU["avg"], 0)}%"} {" ${round(EWW_CPU["avg"], 0)}%"}
{" ${round(EWW_RAM["used_mem_perc"], 0)}%"} {" ${round(EWW_RAM["used_mem_perc"], 0)}%"}
; TODO: have these "widgets" be omitted entirely instead of just empty strings ; TODO: have these "widgets" be omitted entirely instead of just empty strings
{(showBrightness == "true") ? (" ${brightness}%") : ""} {(showBrightness == "true") ? (" ${brightness}%") : ""}
{(showBattery == "true") ? ("󱊣 ${EWW_BATTERY["BAT1"]["capacity"]}% (${batteryTime})") : ""} {(showBattery == "true") ? ("󱊣 ${EWW_BATTERY["BAT1"]["capacity"]}% (${batteryTime})") : ""}

View file

@ -63,7 +63,7 @@ workspaces
# listen to events and re-render # listen to events and re-render
while true; do while true; do
# TODO: not sure why this socat | read invocation seems to stop? # TODO: not sure why this socat | read invocation seems to stop?
socat - "UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do
workspaces "$line" workspaces "$line"
done done
done done

View file

@ -1,6 +0,0 @@
{...}: {
programs.eww = {
enable = true;
configDir = ./eww;
};
}

View file

@ -61,6 +61,9 @@ end
function _last_cmd_duration function _last_cmd_duration
set_color -b normal green set_color -b normal green
set -q CMD_DURATION && printf " %dms" $CMD_DURATION set -q CMD_DURATION && printf " %dms" $CMD_DURATION
if test $CMD_DURATION -gt 5000
printf "\e]777;notify;%s;%s\e\\" "WezTerm: Command Finished" (history --max 1)
end
end end
function _maybe_jobs_summary function _maybe_jobs_summary

View file

@ -1,24 +1,16 @@
{ {
pkgs, pkgs,
colors, style,
config, config,
lib, lib,
# font, # font,
... ...
}: { }: let
imports = [ inherit (style) colors;
./ewwbar.nix in {
./mako.nix # TODO: Hyprland seems to sometimes use a ton of CPU?
./swaylock.nix
# TODO: figure out how to import this for this module _and_ for the sway module?
./linux-desktop.nix
];
# TODO: Hyprland seems to have issues with resuming from hibernation on my
# laptop where it uses a ton of CPU.
home.packages = with pkgs; [ home.packages = with pkgs; [
# TODO: integrate osd
swayosd swayosd
]; ];
@ -47,38 +39,12 @@
"hyprpaper" "hyprpaper"
"mako" "mako"
"swayosd-server" "swayosd-server"
"eww daemon && eww open bar$EWW_BAR_MON" "eww daemon"
"firefox" "[workspace 1 silent] firefox"
"wezterm" "[workspace 1 silent] wezterm"
"xwaylandvideobridge" "xwaylandvideobridge"
"dbus-update-activation-environment --systemd --all"
"systemctl --user import-environment QT_QPA_PLATFORMTHEME" "systemctl --user import-environment QT_QPA_PLATFORMTHEME"
# "wezterm" "hypridle"
# NOTE: maybe check out hypridle?
(lib.concatStringsSep " " [
"swayidle -w"
"timeout 300 'notify-send \"Idling in 300 seconds\"' resume 'notify-send \"Idling cancelled.\"'"
"timeout 480 'notify-send -u critical \"Idling in 120 seconds\"'"
"timeout 510 'notify-send -u critical \"Idling in 90 seconds\"'"
"timeout 540 'notify-send -u critical \"Idling in 60 seconds!\"'"
"timeout 570 'notify-send -u critical \"Idling in 30 seconds!\"'"
"timeout 590 'notify-send -u critical \"Idling in 10 seconds!\"'"
"timeout 591 'notify-send -u critical \"Idling in 9 seconds!\"'"
"timeout 592 'notify-send -u critical \"Idling in 8 seconds!\"'"
"timeout 593 'notify-send -u critical \"Idling in 7 seconds!\"'"
"timeout 594 'notify-send -u critical \"Idling in 6 seconds!\"'"
"timeout 595 'notify-send -u critical \"Idling in 5 seconds!\"'"
"timeout 596 'notify-send -u critical \"Idling in 4 seconds!\"'"
"timeout 597 'notify-send -u critical \"Idling in 3 seconds!\"'"
"timeout 598 'notify-send -u critical \"Idling in 2 seconds!\"'"
"timeout 599 'notify-send -u critical \"Idling in 1 second!\"'"
"timeout 600 'swaylock --daemonize'"
"timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on'"
"after-resume 'maybe-good-morning'"
"before-sleep 'swaylock --daemonize'"
])
''swayidle -w timeout 600 'notify-send "Locking in 30 seconds..."' timeout 630 'swaylock -f' timeout 660 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on && maybe-good-morning' before-sleep 'swaylock -f'"''
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
]; ];
env = [ env = [
@ -97,8 +63,8 @@
follow_mouse = 2; follow_mouse = 2;
repeat_delay = 200; repeat_delay = 180;
repeat_rate = 60; repeat_rate = 120;
touchpad = { touchpad = {
natural_scroll = "yes"; natural_scroll = "yes";
@ -117,6 +83,10 @@
allow_workspace_cycles = true; allow_workspace_cycles = true;
}; };
cursor = {
no_warps = true;
};
general = { general = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more # See https://wiki.hyprland.org/Configuring/Variables/ for more
"col.active_border" = "0xff${colors.primary} 0xff${colors.green} 45deg"; "col.active_border" = "0xff${colors.primary} 0xff${colors.green} 45deg";
@ -125,7 +95,6 @@
gaps_in = 3; gaps_in = 3;
gaps_out = 6; gaps_out = 6;
border_size = 2; border_size = 2;
no_cursor_warps = true;
resize_on_border = true; resize_on_border = true;
no_focus_fallback = true; no_focus_fallback = true;
@ -133,7 +102,7 @@
}; };
decoration = { decoration = {
rounding = 3; rounding = 5;
/* /*
blur = "no"; blur = "no";
@ -142,10 +111,12 @@
blur_new_optimizations = on blur_new_optimizations = on
*/ */
drop_shadow = "yes"; shadow = {
shadow_range = 4; enabled = true;
shadow_render_power = 3; color = "rgba(1a1a1aee)";
"col.shadow" = "rgba(1a1a1aee)"; range = 4;
render_power = 3;
};
dim_inactive = false; dim_inactive = false;
}; };
@ -179,10 +150,10 @@
"$mod, l, movefocus, r" "$mod, l, movefocus, r"
"$mod, k, movefocus, u" "$mod, k, movefocus, u"
"$mod, j, movefocus, d" "$mod, j, movefocus, d"
"$mod SHIFT, H, swapwindow, l" "$mod SHIFT, H, movewindow, l"
"$mod SHIFT, L, swapwindow, r" "$mod SHIFT, L, movewindow, r"
"$mod SHIFT, K, swapwindow, u" "$mod SHIFT, K, movewindow, u"
"$mod SHIFT, J, swapwindow, d" "$mod SHIFT, J, movewindow, d"
"$mod SHIFT, V, exec, swayosd-client --input-volume mute-toggle" "$mod SHIFT, V, exec, swayosd-client --input-volume mute-toggle"
", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle" ", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle"
@ -228,10 +199,10 @@
# Scroll through existing workspaces with mod + scroll # Scroll through existing workspaces with mod + scroll
"$mod, mouse_down, workspace, e+1" "$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1" "$mod, mouse_up, workspace, e-1"
"CTRL SHIFT $mod, L, exec, swaylock" "CTRL SHIFT $mod, L, exec, hyprlock"
"$mod CTRL, space, exec, makoctl dismiss" "$mod CTRL, space, exec, makoctl dismiss"
"$mod SHIFT CTRL, space, exec, makoctl restore" "$mod SHIFT CTRL, space, exec, makoctl restore"
"$mod SHIFT, space, exec, makoctl invoke" "$mod SHIFT, space, exec, makoctl invoke default"
"$mod, E, exec, thunar" "$mod, E, exec, thunar"
]; ];
@ -259,12 +230,12 @@
# master switch for pseudotiling. Enabling is bound to mod + P in the keybinds section below # master switch for pseudotiling. Enabling is bound to mod + P in the keybinds section below
pseudotile = yes pseudotile = yes
preserve_split = 1 preserve_split = 1
no_gaps_when_only = true # no_gaps_when_only = true
} }
master { master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true # new_is_master = true
} }
gestures { gestures {
@ -280,14 +251,170 @@
## See https://wiki.hyprland.org/Configuring/Window-Rules/ for more ## See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = idleinhibit,class:^.*([Ss]lippi).*$ windowrulev2 = idleinhibit,class:^.*([Ss]lippi).*$
windowrulev2 = float,class:^.*([Kk]itty|[Ff]irefox|[Ww]ezterm|[Dd]iscord|[Ss]potify|[Ss]lack).*$ windowrulev2 = float,class:^.*$
windowrulev2 = opacity 1.0 0.9,floating:1 windowrulev2 = tile,class:^.*([Kk]itty|[Ff]irefox|[Ww]ezterm|[Dd]iscord|[Ss]potify|[Ss]lack).*$
windowrulev2 = opacity 1.0 0.95,class:^.*$
windowrulev2 = center 1,floating:1
windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = opacity 0.0 override, class:^(xwaylandvideobridge)$
windowrulev2 = noanim, class:^(xwaylandvideobridge)$ windowrulev2 = noanim, class:^(xwaylandvideobridge)$
windowrulev2 = noinitialfocus, class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus, class:^(xwaylandvideobridge)$
windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$ windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$
windowrulev2 = noblur, class:^(xwaylandvideobridge)$ windowrulev2 = noblur, class:^(xwaylandvideobridge)$
windowrulev2 = nofocus, class:^(xwaylandvideobridge)$
''; '';
}; };
programs.hyprlock = {
enable = true;
settings = {
# docs: https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
general = {
grace = 0;
no_face_out = true;
};
input-field = [
{
monitor = "";
fade_on_empty = false;
placeholder_text = "Locked";
rounding = 5;
font_size = 20;
font_color = "rgba(255, 255, 255, 1.0)";
inner_color = "rgba(31, 31, 47, 0.95)";
outer_color = "0xff74c7ec 0xff74c7ec 45deg";
outline_thickness = 3;
position = "0, -200";
dots_size = 0.1;
size = "300 75";
font_family = "IosevkaLyteTerm";
shadow_passes = 3;
shadow_size = 8;
shadow_color = "rgba(0, 0, 0, 1.0)";
shadow_boost = 0.8;
}
];
background = [
{
path = "~/.wallpaper";
blur_passes = 2;
}
];
label = [
{
monitor = "";
font_size = 64;
halign = "center";
valign = "center";
text_align = "center";
# rotate = 10;
position = "0, 200";
font_family = "IosevkaLyteTerm";
text = ''Locked for <span foreground="##74c7ec">$USER</span>'';
shadow_passes = 1;
shadow_size = 8;
shadow_color = "rgba(0, 0, 0, 1.0)";
shadow_boost = 0.5;
}
{
monitor = "";
font_size = 20;
halign = "center";
valign = "center";
text_align = "center";
color = "rgba(255, 255, 255, 0.5)";
position = "0 120";
font_family = "IosevkaLyteTerm";
text = "cmd[update:1000] date '+%a %b %d %H:%M:%S'";
shadow_passes = 3;
shadow_size = 1;
shadow_color = "rgba(0, 0, 0, 1.0)";
shadow_boost = 1.0;
}
{
monitor = "";
font_size = 200;
halign = "center";
valign = "center";
text_align = "center";
color = "rgba(220, 240, 255, 0.8)";
position = "0 500";
font_family = "NerdFontSymbolsOnly";
text = "󰍁";
shadow_passes = 3;
shadow_size = 1;
shadow_color = "rgba(0, 0, 0, 1.0)";
shadow_boost = 1.0;
}
];
};
};
services.hypridle = let
secondsPerMinute = 60;
lockSeconds = 10 * secondsPerMinute;
in {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
before_sleep_cmd = "loginctl lock-session";
ignore_dbus_inhibit = false;
lock_cmd = "pidof hyprlock || hyprlock";
};
listener = [
{
timeout = lockSeconds - 300;
on-timeout = ''notify-send "Auto-locking in 5 minutes"'';
on-resume = ''notify-send "Auto-locking cancelled"'';
}
{
timeout = lockSeconds - 180;
on-timeout = ''notify-send "Auto-locking in 3 minutes"'';
}
{
timeout = lockSeconds - 120;
on-timeout = ''notify-send "Auto-locking in 2 minutes"'';
}
{
timeout = lockSeconds - 60;
on-timeout = ''notify-send "Auto-locking in 1 minute"'';
}
{
timeout = lockSeconds - 30;
on-timeout = ''notify-send "Auto-locking in 30 seconds"'';
}
{
timeout = lockSeconds - 10;
on-timeout = ''notify-send -u critical "Auto-locking in 10 seconds"'';
}
{
timeout = lockSeconds;
on-timeout = ''loginctl lock-session'';
}
{
timeout = lockSeconds + 5;
on-timeout = ''hyprctl dispatch dpms off'';
on-resume = ''hyprctl dispatch dpms on'';
}
];
};
};
} }

View file

@ -2,7 +2,6 @@
style, style,
lib, lib,
config, config,
pkgs,
... ...
}: { }: {
programs.foot = { programs.foot = {
@ -20,47 +19,6 @@
}; };
}; };
home.file."${config.xdg.configHome}/mako/config" = {
enable = true;
text = with style.colors.withHashPrefix; ''
border-size=1
max-visible=5
default-timeout=15000
font=Symbols Nerd Font ${toString style.font.size},${style.font.name} ${toString style.font.size}
anchor=top-right
on-notify=exec ${pkgs.mpv}/bin/mpv --volume=50 ~/.notify.wav
background-color=${bg}
text-color=${text}
border-color=${primary}
progress-color=${primary}
[urgency=high]
border-color=${urgent}
[urgency=high]
background-color=${urgent}
border-color=${urgent}
text-color=${bg}
'';
};
home.file."${config.xdg.configHome}/tofi/config" = {
enable = true;
text = ''
font = ${pkgs.iosevkaLyteTerm}/share/fonts/truetype/IosevkaLyteTerm-regular.ttf
text-color = #f8f8f8
prompt-color = #f38ba8
selection-color = #66d9ef
background-color = #1e1e2e
border-width = 4
border-color = #66d9ef
fuzzy-match = true
'';
};
wayland.windowManager.sway = { wayland.windowManager.sway = {
/* /*
TODO: TODO:

View file

@ -123,6 +123,8 @@
}; };
"mpris" = { "mpris" = {
"format" = "{title}\nby {artist}"; "format" = "{title}\nby {artist}";
"title-len" = 64;
"artist-len" = 61;
"justify" = "center"; "justify" = "center";
}; };
"pulseaudio" = { "pulseaudio" = {

View file

@ -4,6 +4,7 @@ if wezterm.config_builder then
config = wezterm.config_builder() config = wezterm.config_builder()
end end
config.adjust_window_size_when_changing_font_size = false
config.font = wezterm.font_with_fallback { config.font = wezterm.font_with_fallback {
{ family = "IosevkaLyteTerm", weight = 'Medium', italic = false }, { family = "IosevkaLyteTerm", weight = 'Medium', italic = false },
{ family = 'Symbols Nerd Font Mono', weight = 'Regular', italic = false }, { family = 'Symbols Nerd Font Mono', weight = 'Regular', italic = false },
@ -21,8 +22,12 @@ config.tab_bar_at_bottom = true
config.window_background_opacity = 1.0 config.window_background_opacity = 1.0
config.enable_kitty_keyboard = true config.enable_kitty_keyboard = true
config.show_new_tab_button_in_tab_bar = true config.show_new_tab_button_in_tab_bar = true
config.notification_handling = "SuppressFromFocusedTab"
-- config.front_end = "WebGpu" -- config.front_end = "WebGpu"
-- config.webgpu_power_preference = 'HighPerformance'
config.enable_wayland = true
-- config.use_ime = true
local function tab_title(tab_info) local function tab_title(tab_info)
local title = tab_info.tab_title local title = tab_info.tab_title

View file

@ -33,6 +33,12 @@
package = flakeInputs.hyprland.packages.${pkgs.system}.hyprland; package = flakeInputs.hyprland.packages.${pkgs.system}.hyprland;
}; };
home-manager.users.daniel = {
imports = with homeManagerModules; [
hyprland
];
};
# TODO: include the home-manager modules for daniel? # TODO: include the home-manager modules for daniel?
}; };
@ -101,8 +107,6 @@
environment = { environment = {
variables = { variables = {
VISUAL = "hx"; VISUAL = "hx";
PAGER = "less";
MANPAGER = "less";
}; };
systemPackages = with pkgs; [ systemPackages = with pkgs; [
@ -191,22 +195,9 @@
}; };
}; };
less-pager = {pkgs, ...}: {
environment = {
systemPackages = [
pkgs.less
];
variables = {
PAGER = "less";
MANPAGER = "less";
};
};
};
helix-text-editor = {pkgs, ...}: { helix-text-editor = {pkgs, ...}: {
environment = { environment = {
systemPackages = [ systemPackages = [
pkgs.less
helix.packages.${pkgs.system}.helix helix.packages.${pkgs.system}.helix
]; ];
variables = { variables = {
@ -246,16 +237,21 @@
my-favorite-default-system-apps = {pkgs, ...}: { my-favorite-default-system-apps = {pkgs, ...}: {
imports = with nixosModules; [ imports = with nixosModules; [
less-pager
helix-text-editor helix-text-editor
zellij-multiplexer zellij-multiplexer
fish-shell fish-shell
]; ];
environment.systemPackages = with pkgs; [ environment = {
variables = {
PAGER = "bat --style=plain";
MANPAGER = "bat --style=plain";
};
systemPackages = with pkgs; [
curl curl
dua dua
eza # TODO: needs shell aliases bat
eza
fd fd
file file
iputils iputils
@ -270,6 +266,7 @@
rsync rsync
sd sd
]; ];
};
programs = { programs = {
traceroute.enable = true; traceroute.enable = true;
@ -456,7 +453,11 @@
}; };
}; };
development-tools = {pkgs, ...}: { development-tools = {
pkgs,
lib,
...
}: {
imports = with nixosModules; [ imports = with nixosModules; [
postgres postgres
podman podman
@ -478,10 +479,9 @@
taplo # toml language server for editing helix configs per repo taplo # toml language server for editing helix configs per repo
picocom # serial picocom # serial
pgcli pgcli
oil oils-for-unix
watchexec watchexec
android-tools android-tools
kubectl
stern stern
libresprite libresprite
# logseq # logseq
@ -521,6 +521,17 @@
yubico-piv-tool yubico-piv-tool
]; ];
programs.direnv.mise = {
enable = true;
};
programs.mise = {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
programs.thunderbird = { programs.thunderbird = {
enable = true; enable = true;
@ -537,7 +548,7 @@
}; };
programs.jujutsu = { programs.jujutsu = {
enable = true; enable = lib.mkDefault true;
}; };
programs.k9s = { programs.k9s = {
@ -602,6 +613,13 @@
}; };
}; };
android-dev = {pkgs, ...}: {
services.udev.packages = [
pkgs.android-udev-rules
];
environment.systemPackages = [pkgs.android-studio];
};
graphical-workstation = { graphical-workstation = {
pkgs, pkgs,
lib, lib,
@ -611,7 +629,7 @@
}: { }: {
imports = with nixosModules; [ imports = with nixosModules; [
sway sway
# hyprland hyprland
enable-flatpaks-and-appimages enable-flatpaks-and-appimages
fonts fonts
development-tools development-tools
@ -619,6 +637,7 @@
music-consumption music-consumption
video-tools video-tools
radio-tools radio-tools
android-dev
]; ];
xdg.portal.enable = true; xdg.portal.enable = true;
@ -628,6 +647,7 @@
then { then {
graphics = { graphics = {
enable = true; enable = true;
enable32Bit = true;
/* /*
driSupport32Bit = true; driSupport32Bit = true;
driSupport = true; driSupport = true;
@ -681,8 +701,13 @@
}; };
fonts = {pkgs, ...}: { fonts = {pkgs, ...}: {
fonts.packages = with pkgs; [ fonts.packages = [
(nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) (
# allow nixpkgs 24.11 and unstable to both work
if builtins.hasAttr "nerd-fonts" pkgs
then (pkgs.nerd-fonts.symbols-only)
else (pkgs.nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];})
)
pkgs.iosevkaLyteTerm pkgs.iosevkaLyteTerm
]; ];
}; };
@ -742,7 +767,7 @@
*/ */
]; ];
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-tty; programs.gnupg.agent.pinentryPackage = lib.mkForce pkgs.pinentry-qt;
}; };
lutris = {pkgs, ...}: { lutris = {pkgs, ...}: {
@ -994,7 +1019,26 @@
wifi = {lib, ...}: let wifi = {lib, ...}: let
inherit (lib) mkDefault; inherit (lib) mkDefault;
in { in {
networking.networkmanager.enable = mkDefault true; networking.networkmanager = {
enable = mkDefault true;
# ensureProfiles = {
# profiles = {
# home-wifi = {
# id="home-wifi";
# permissions = "";
# type = "wifi";
# };
# wifi = {
# ssid = "";
# };
# wifi-security = {
# # auth-alg = "";
# # key-mgmt = "";
# psk = "";
# };
# };
# };
};
systemd.services.NetworkManager-wait-online.enable = mkDefault false; systemd.services.NetworkManager-wait-online.enable = mkDefault false;
/* /*
@ -1174,12 +1218,13 @@
root root
]; ];
boot.tmp.useTmpfs = true; # boot.tmp.useTmpfs = true;
systemd.services.nix-daemon = { systemd.services.nix-daemon = {
environment.TMPDIR = "/var/tmp"; environment.TMPDIR = "/var/tmp";
}; };
boot.tmp.cleanOnBoot = true; boot.tmp.cleanOnBoot = true;
services.irqbalance.enable = true; # boot.uki.tries = 3;
# services.irqbalance.enable = true;
# this is not ready for primetime yet # this is not ready for primetime yet
# services.kanidm = { # services.kanidm = {

View file

@ -35,7 +35,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
initrd.supportedFilesystems = { initrd.supportedFilesystems = {
zfs = true; zfs = true;
}; };
kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; # kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
initrd.availableKernelModules = ["ehci_pci" "mpt3sas" "usbhid" "sd_mod"]; initrd.availableKernelModules = ["ehci_pci" "mpt3sas" "usbhid" "sd_mod"];
kernelModules = ["kvm-intel"]; kernelModules = ["kvm-intel"];
kernelParams = ["nohibernate"]; kernelParams = ["nohibernate"];
@ -268,7 +268,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
]; ];
}; };
services.nextcloud = { services.nextcloud = {
enable = true; enable = false;
hostName = "nextcloud.h.lyte.dev"; hostName = "nextcloud.h.lyte.dev";
maxUploadSize = "100G"; maxUploadSize = "100G";
extraAppsEnable = true; extraAppsEnable = true;
@ -304,10 +304,12 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
serviceConfig.Group = "nextcloud"; serviceConfig.Group = "nextcloud";
}; };
services.phpfpm.pools.nextcloud.settings = { services.phpfpm = lib.mkIf config.services.nextcloud.enable {
pools.nextcloud.settings = {
"listen.owner" = "caddy"; "listen.owner" = "caddy";
"listen.group" = "caddy"; "listen.group" = "caddy";
}; };
};
services.caddy.virtualHosts."nextcloud.h.lyte.dev" = let services.caddy.virtualHosts."nextcloud.h.lyte.dev" = let
fpm-nextcloud-pool = config.services.phpfpm.pools.nextcloud; fpm-nextcloud-pool = config.services.phpfpm.pools.nextcloud;
@ -811,7 +813,117 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# acmeCA = "https://acme-staging-v02.api.letsencrypt.org/directory"; # acmeCA = "https://acme-staging-v02.api.letsencrypt.org/directory";
}; };
} }
{ ({...}: let
theme = pkgs.fetchzip {
url = "https://github.com/catppuccin/gitea/releases/download/v1.0.1/catppuccin-gitea.tar.gz";
sha256 = "sha256-et5luA3SI7iOcEIQ3CVIu0+eiLs8C/8mOitYlWQa/uI=";
};
logos = {
png = pkgs.fetchurl {
url = "https://lyte.dev/icon.png";
sha256 = "sha256-o/iZDohzXBGbpJ2PR1z23IF4FZignTAK88QwrfgTwlk=";
};
svg = pkgs.fetchurl {
url = "https://lyte.dev/img/logo.svg";
sha256 = "sha256-G9leVXNanoaCizXJaXn++JzaVcYOgRc3dJKhTQsMhVs=";
};
svg-with-background = pkgs.fetchurl {
url = "https://lyte.dev/img/logo-with-background.svg";
sha256 = "sha256-CdMTRXoQ3AI76aHW/sTqvZo1q/0XQdnQs9V1vGmiffY=";
};
};
forgejoCustomCss =
pkgs.writeText "iosevkalyte.css"
''
@font-face {
font-family: ldiosevka;
font-style: normal;
font-weight: 300;
src: local("Iosevka"), url("//lyte.dev/font/iosevkalytewebmin/iosevkalyteweb-regular.subset.woff2");
font-display: swap
}
@font-face {
font-family: ldiosevka;
font-style: italic;
font-weight: 300;
src: local("Iosevka"), url("//lyte.dev/font/iosevkalytewebmin/iosevkalyteweb-italic.subset.woff2");
font-display: swap
}
@font-face {
font-family: ldiosevka;
font-style: italic;
font-weight: 500;
src: local("Iosevka"), url("//lyte.dev/font/iosevkalytewebmin/iosevkalyteweb-bolditalic.woff2");
font-display: swap
}
:root {
--fonts-monospace: ldiosevka, ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace, var(--fonts-emoji);
}
'';
forgejoCustomHeaderTmpl =
pkgs.writeText "header.tmpl"
''
<link rel="stylesheet" href="/assets/css/iosevkalyte.css" />
<script async="" defer="" data-domain="lyte.dev" src="https://a.lyte.dev/js/script.js"></script>
'';
forgejoCustomHomeTmpl =
pkgs.writeText "home.tmpl"
''
{{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="tw-mb-8 tw-px-8">
<div class="center">
<img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
<div class="hero">
<h1 class="ui icon header title">
{{AppDisplayName}}
</h1>
<h2>{{ctx.Locale.Tr "startpage.app_desc"}}</h2>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-flame"}} {{ctx.Locale.Tr "startpage.install"}}
</h1>
<p class="large">
{{ctx.Locale.Tr "startpage.install_desc" "https://forgejo.org/download/#installation-from-binary" "https://forgejo.org/download/#container-image" "https://forgejo.org/download"}}
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-device-desktop"}} {{ctx.Locale.Tr "startpage.platform"}}
</h1>
<p class="large">
{{ctx.Locale.Tr "startpage.platform_desc"}}
</p>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-rocket"}} {{ctx.Locale.Tr "startpage.lightweight"}}
</h1>
<p class="large">
{{ctx.Locale.Tr "startpage.lightweight_desc"}}
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-code"}} {{ctx.Locale.Tr "startpage.license"}}
</h1>
<p class="large">
{{ctx.Locale.Tr "startpage.license_desc" "https://forgejo.org/download" "https://codeberg.org/forgejo/forgejo"}}
</p>
</div>
</div>
</div>
{{template "base/footer" .}}
'';
in {
# systemd.tmpfiles.settings = { # systemd.tmpfiles.settings = {
# "10-forgejo" = { # "10-forgejo" = {
# "/storage/forgejo" = { # "/storage/forgejo" = {
@ -825,6 +937,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# }; # };
services.forgejo = { services.forgejo = {
enable = true; enable = true;
package = pkgs.unstable-packages.forgejo;
stateDir = "/storage/forgejo"; stateDir = "/storage/forgejo";
settings = { settings = {
DEFAULT = { DEFAULT = {
@ -852,8 +965,8 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# LEVEL = "Debug"; # LEVEL = "Debug";
}; };
ui = { ui = {
THEMES = "forgejo-auto,forgejo-light,forgejo-dark"; THEMES = "catppuccin-mocha-sapphire,forgejo-auto,forgejo-light,forgejo-dark";
DEFAULT_THEME = "forgejo-auto"; DEFAULT_THEME = "catppuccin-mocha-sapphire";
}; };
indexer = { indexer = {
REPO_INDEXER_ENABLED = "true"; REPO_INDEXER_ENABLED = "true";
@ -862,6 +975,13 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# REPO_INDEXER_INCLUDE = # REPO_INDEXER_INCLUDE =
REPO_INDEXER_EXCLUDE = "resources/bin/**"; REPO_INDEXER_EXCLUDE = "resources/bin/**";
}; };
"markup.asciidoc" = {
ENABLED = true;
NEED_POSTPROCESS = true;
FILE_EXTENSIONS = ".adoc,.asciidoc";
RENDER_COMMAND = "${pkgs.asciidoctor}/bin/asciidoctor --embedded --safe-mode=secure --out-file=- -";
IS_INPUT_FILE = false;
};
}; };
lfs = { lfs = {
enable = true; enable = true;
@ -881,6 +1001,26 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
"forgejo-runner.env" = {mode = "0400";}; "forgejo-runner.env" = {mode = "0400";};
}; };
systemd.services.gitea-runner-beefcake.after = ["sops-nix.service"]; systemd.services.gitea-runner-beefcake.after = ["sops-nix.service"];
systemd.services.forgejo = {
preStart = lib.mkAfter ''
rm -rf ${config.services.forgejo.stateDir}/custom/public
mkdir -p ${config.services.forgejo.stateDir}/custom/public/
mkdir -p ${config.services.forgejo.stateDir}/custom/public/assets/
mkdir -p ${config.services.forgejo.stateDir}/custom/public/assets/img/
mkdir -p ${config.services.forgejo.stateDir}/custom/public/assets/css/
mkdir -p ${config.services.forgejo.stateDir}/custom/templates/custom/
ln -sf ${logos.png} ${config.services.forgejo.stateDir}/custom/public/assets/img/logo.png
ln -sf ${logos.svg} ${config.services.forgejo.stateDir}/custom/public/assets/img/logo.svg
ln -sf ${logos.png} ${config.services.forgejo.stateDir}/custom/public/assets/img/favicon.png
ln -sf ${logos.svg-with-background} ${config.services.forgejo.stateDir}/custom/public/assets/img/favicon.svg
ln -sf ${theme}/theme-catppuccin-mocha-sapphire.css ${config.services.forgejo.stateDir}/custom/public/assets/css/
ln -sf ${forgejoCustomCss} ${config.services.forgejo.stateDir}/custom/public/assets/css/iosevkalyte.css
ln -sf ${forgejoCustomHeaderTmpl} ${config.services.forgejo.stateDir}/custom/templates/custom/header.tmpl
ln -sf ${forgejoCustomHomeTmpl} ${config.services.forgejo.stateDir}/custom/templates/home.tmpl
'';
};
services.gitea-actions-runner = { services.gitea-actions-runner = {
# TODO: simple git-based automation would be dope? maybe especially for # TODO: simple git-based automation would be dope? maybe especially for
# mirroring to github super easy? # mirroring to github super easy?
@ -929,7 +1069,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
reverse_proxy :${toString config.services.forgejo.settings.server.HTTP_PORT} reverse_proxy :${toString config.services.forgejo.settings.server.HTTP_PORT}
''; '';
}; };
} })
{ {
services.restic.commonPaths = [ services.restic.commonPaths = [
config.services.vaultwarden.backupDir config.services.vaultwarden.backupDir
@ -1250,10 +1390,13 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
port port
]; ];
}) })
({options, ...}: let ({
/* config,
options,
...
}: let
toml = pkgs.formats.toml {}; toml = pkgs.formats.toml {};
package = pkgs.kanidm; kanidm-package = config.services.kanidm.package;
domain = "idm.h.lyte.dev"; domain = "idm.h.lyte.dev";
name = "kanidm"; name = "kanidm";
storage = "/storage/${name}"; storage = "/storage/${name}";
@ -1332,12 +1475,12 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# Does not work well with the temporary root # Does not work well with the temporary root
#UMask = "0066"; #UMask = "0066";
}; };
*/
in { in {
# kanidm # kanidm
/*
config = { config = {
# we need a mechanism to get the certificates that caddy provisions for us # reload certs from caddy every 5 minutes
# TODO: ideally some kind of file watcher service would make way more sense here?
# or we could simply setup the permissions properly somehow?
systemd.timers."copy-kanidm-certificates-from-caddy" = { systemd.timers."copy-kanidm-certificates-from-caddy" = {
wantedBy = ["timers.target"]; wantedBy = ["timers.target"];
timerConfig = { timerConfig = {
@ -1348,8 +1491,10 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
}; };
systemd.services."copy-kanidm-certificates-from-caddy" = { systemd.services."copy-kanidm-certificates-from-caddy" = {
# get the certificates that caddy provisions for us
script = '' script = ''
umask 077 umask 077
# this line should be unnecessary now that we have this in tmpfiles
install -d -m 0700 -o "${user}" -g "${group}" "${storage}/data" "${storage}/certs" install -d -m 0700 -o "${user}" -g "${group}" "${storage}/data" "${storage}/certs"
cd /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/idm.h.lyte.dev cd /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/idm.h.lyte.dev
install -m 0700 -o "${user}" -g "${group}" idm.h.lyte.dev.key idm.h.lyte.dev.crt "${storage}/certs" install -m 0700 -o "${user}" -g "${group}" idm.h.lyte.dev.key idm.h.lyte.dev.crt "${storage}/certs"
@ -1361,9 +1506,8 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
}; };
}; };
environment.systemPackages = [package]; environment.systemPackages = [kanidm-package];
# TODO: should I use this for /storage/kanidm/certs etc.?
systemd.tmpfiles.settings."10-kanidm" = { systemd.tmpfiles.settings."10-kanidm" = {
"${serverSettings.online_backup.path}".d = { "${serverSettings.online_backup.path}".d = {
inherit user group; inherit user group;
@ -1393,7 +1537,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
inherit group; inherit group;
description = "kanidm server"; description = "kanidm server";
isSystemUser = true; isSystemUser = true;
packages = [package]; packages = [kanidm-package];
}; };
users.users."${user}-unixd" = { users.users."${user}-unixd" = {
group = "${group}-unixd"; group = "${group}-unixd";
@ -1405,7 +1549,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# loosely based off it # loosely based off it
systemd.services.kanidm = { systemd.services.kanidm = {
enable = true; enable = true;
path = with pkgs; [openssl] ++ [package]; path = with pkgs; [openssl] ++ [kanidm-package];
description = "kanidm identity management daemon"; description = "kanidm identity management daemon";
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
after = ["network.target"]; after = ["network.target"];
@ -1414,7 +1558,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
pwd pwd
ls -la ls -la
ls -laR /storage/kanidm ls -laR /storage/kanidm
${package}/bin/kanidmd server -c ${serverConfigFile} ${kanidm-package}/bin/kanidmd server -c ${serverConfigFile}
''; '';
# environment.RUST_LOG = serverSettings.log_level; # environment.RUST_LOG = serverSettings.log_level;
serviceConfig = lib.mkMerge [ serviceConfig = lib.mkMerge [
@ -1459,7 +1603,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
CacheDirectory = "${name}-unixd"; CacheDirectory = "${name}-unixd";
CacheDirectoryMode = "0700"; CacheDirectoryMode = "0700";
RuntimeDirectory = "${name}-unixd"; RuntimeDirectory = "${name}-unixd";
ExecStart = "${package}/bin/kanidm_unixd"; ExecStart = "${kanidm-package}/bin/kanidm_unixd";
User = "${user}-unixd"; User = "${user}-unixd";
Group = "${group}-unixd"; Group = "${group}-unixd";
@ -1493,7 +1637,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
partOf = ["kanidm-unixd.service"]; partOf = ["kanidm-unixd.service"];
restartTriggers = [unixdConfigFile clientConfigFile]; restartTriggers = [unixdConfigFile clientConfigFile];
serviceConfig = { serviceConfig = {
ExecStart = "${package}/bin/kanidm_unixd_tasks"; ExecStart = "${kanidm-package}/bin/kanidm_unixd_tasks";
BindReadOnlyPaths = [ BindReadOnlyPaths = [
"/nix/store" "/nix/store"
@ -1531,7 +1675,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
"kanidm/unixd".source = unixdConfigFile; "kanidm/unixd".source = unixdConfigFile;
}; };
system.nssModules = [package]; system.nssModules = [kanidm-package];
system.nssDatabases.group = [name]; system.nssDatabases.group = [name];
system.nssDatabases.passwd = [name]; system.nssDatabases.passwd = [name];
@ -1559,7 +1703,6 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
''; '';
}; };
}; };
*/
}) })
{ {
systemd.tmpfiles.settings = { systemd.tmpfiles.settings = {
@ -1764,7 +1907,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
services.paperless = { services.paperless = {
enable = true; enable = true;
package = pkgs.paperless-ngx; # package = pkgs.paperless-ngx;
dataDir = "/storage/paperless"; dataDir = "/storage/paperless";
passwordFile = config.sops.secrets.paperless-superuser-password.path; passwordFile = config.sops.secrets.paperless-superuser-password.path;
}; };
@ -1791,7 +1934,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
virtualisation.oci-containers = { virtualisation.oci-containers = {
containers.actual = { containers.actual = {
image = "ghcr.io/actualbudget/actual-server:24.10.1"; image = "ghcr.io/actualbudget/actual-server:24.11.0";
autoStart = true; autoStart = true;
ports = ["5006:5006"]; ports = ["5006:5006"];
volumes = ["/storage/actual:/data"]; volumes = ["/storage/actual:/data"];

View file

@ -6,7 +6,7 @@
}: { }: {
imports = [ imports = [
{ {
system.stateVersion = "24.05"; system.stateVersion = "24.11";
home-manager.users.daniel.home.stateVersion = "24.05"; home-manager.users.daniel.home.stateVersion = "24.05";
networking.hostName = "dragon"; networking.hostName = "dragon";
} }
@ -31,6 +31,14 @@
}; };
} }
]; ];
hardware.amdgpu = {
amdvlk = {
enable = true;
support32Bit = {
enable = true;
};
};
};
hardware.graphics.extraPackages = [ hardware.graphics.extraPackages = [
# pkgs.rocmPackages.clr.icd # pkgs.rocmPackages.clr.icd
pkgs.amdvlk pkgs.amdvlk
@ -95,8 +103,8 @@
# TODO: monitor config module? # TODO: monitor config module?
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
settings = { settings = {
env = [ exec-once = [
"EWW_BAR_MON,1" "eww open bar1"
]; ];
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
monitor = [ monitor = [
@ -108,12 +116,23 @@
"desc:LG Display 0x0521,3840x2160@120,0x0,1" "desc:LG Display 0x0521,3840x2160@120,0x0,1"
"desc:Dell Inc. DELL U2720Q D3TM623,3840x2160@60,3840x0,1.5,transform,1" "desc:Dell Inc. DELL U2720Q D3TM623,3840x2160@60,3840x0,1.5,transform,1"
*/ */
"DP-2,3840x2160@60,0x0,1.5,transform,1" "DP-1,3840x2160@60,0x0,1.5,transform,1"
]; ];
input = { input = {
force_no_accel = true; force_no_accel = true;
sensitivity = 1; # -1.0 - 1.0, 0 means no modification. sensitivity = 1; # -1.0 - 1.0, 0 means no modification.
}; };
workspace = [
"1, monitor:DP-3, default:true"
"2, monitor:DP-3, default:false"
"3, monitor:DP-3, default:false"
"4, monitor:DP-3, default:false"
"5, monitor:DP-3, default:false"
"6, monitor:DP-3, default:false"
"7, monitor:DP-3, default:false"
"8, monitor:DP-1, default:true"
"9, monitor:DP-1, default:false"
];
}; };
}; };

View file

@ -1,57 +1,13 @@
{ {
"x86_64-linux": { "x86_64-linux": {
"alpha": {
"experimental": {
"name": "factorio_alpha_x64-1.1.110.tar.xz",
"needsAuth": true,
"sha256": "0ndhb94lh47n09a7wshm2inv52fd6rjfa7fk7nk9b7zzh84i7f4x",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/1.1.110/alpha/linux64",
"version": "1.1.110"
},
"stable": {
"name": "factorio_alpha_x64-1.1.110.tar.xz",
"needsAuth": true,
"sha256": "0ndhb94lh47n09a7wshm2inv52fd6rjfa7fk7nk9b7zzh84i7f4x",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/1.1.110/alpha/linux64",
"version": "1.1.110"
}
},
"demo": {
"experimental": {
"name": "factorio_demo_x64-1.1.110.tar.xz",
"needsAuth": false,
"sha256": "0dasxgrybl00vrabgrlarsvg0hdg5rvn3y4hsljhqc4zpbf93nxx",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
"version": "1.1.110"
},
"stable": {
"name": "factorio_demo_x64-1.1.110.tar.xz",
"needsAuth": false,
"sha256": "0dasxgrybl00vrabgrlarsvg0hdg5rvn3y4hsljhqc4zpbf93nxx",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/1.1.110/demo/linux64",
"version": "1.1.110"
}
},
"headless": { "headless": {
"experimental": {
"name": "factorio_headless_x64-2.0.9.tar.xz",
"needsAuth": false,
"sha256": "0sk4g9y051xjhiwdhj1yz808308zwsbpq3nps1ywvpp56vdycps8",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.9/headless/linux64",
"version": "2.0.9"
},
"stable": { "stable": {
"name": "factorio_headless_x64-2.0.8.tar.xz", "name": "factorio_headless_x64-2.0.15.tar.xz",
"needsAuth": false, "needsAuth": false,
"sha256": "2VlMTVUqPk+WWxiKR3TajIsBD8I92w78Y7HZSBjd4co=", "sha256": "cLRBy4B4EaYFhsARBySMHY164EO9HyNnX8kk+6qlONg=",
"tarDirectory": "x64", "tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.8/headless/linux64", "url": "https://factorio.com/get-download/2.0.15/headless/linux64",
"version": "2.0.8" "version": "2.0.15"
} }
} }
} }

View file

@ -258,7 +258,7 @@ in
]; ];
# findmnt -no UUID -T /swap/swapfile # findmnt -no UUID -T /swap/swapfile
boot.resumeDevice = "/dev/disk/by-uuid/81c3354a-f629-4b6b-a249-7705aeb9f0d5"; boot.resumeDevice = "/dev/disk/by-uuid/81c3354a-f629-4b6b-a249-7705aeb9f0d5";
systemd.sleep.extraConfig = "HibernateDelaySec=11m"; # systemd.sleep.extraConfig = "HibernateDelaySec=180m";
services.fwupd.enable = true; services.fwupd.enable = true;
services.fwupd.extraRemotes = ["lvfs-testing"]; services.fwupd.extraRemotes = ["lvfs-testing"];
} }
@ -266,6 +266,7 @@ in
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
easyeffects
godot_4 godot_4
fractal fractal
prismlauncher prismlauncher
@ -285,19 +286,39 @@ in
}; };
}; };
/* services.easyeffects = {
enable = true;
preset = "philonmetal";
# clone from https://github.com/ceiphr/ee-framework-presets
# then `cp *.json ~/.config/easyeffects/output`
# TODO: nixify this
};
services.hypridle = let
secondsPerMinute = 60;
lockSeconds = 10 * secondsPerMinute;
in {
settings = {
listener = [
{
timeout = lockSeconds + 55;
on-timeout = ''systemctl suspend'';
}
];
};
};
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
settings = { settings = {
env = [ exec-once = [
"EWW_BAR_MON,0" "eww open bar0"
]; ];
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
monitor = [ monitor = [
"eDP-1,2256x1504@60,0x0,${toString scale}" "eDP-1,2880x1920@120Hz,0x0,1.66667"
]; ];
}; };
}; };
*/
wayland.windowManager.sway = { wayland.windowManager.sway = {
config = { config = {
@ -305,12 +326,13 @@ in
"BOE NE135A1M-NY1 Unknown" = { "BOE NE135A1M-NY1 Unknown" = {
mode = "2880x1920@120Hz"; mode = "2880x1920@120Hz";
position = "1092,2160"; position = "1092,2160";
scale = toString 1.75; scale = toString (5 / 3);
}; };
"Dell Inc. DELL U2720Q CWTM623" = { "Dell Inc. DELL U2720Q CWTM623" = {
mode = "3840x2160@60Hz"; mode = "3840x2160@60Hz";
position = "0,0"; position = "0,0";
scale = toString 1.25;
}; };
/* /*
@ -342,12 +364,21 @@ in
pkgs.vaapiVdpau pkgs.vaapiVdpau
]; ];
hardware.amdgpu = {
amdvlk = {
enable = true;
support32Bit = {
enable = true;
};
};
};
networking.networkmanager.wifi.powersave = false; networking.networkmanager.wifi.powersave = false;
hardware.framework.amd-7040.preventWakeOnAC = true; hardware.framework.amd-7040.preventWakeOnAC = true;
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest; # kernelPackages = pkgs.linuxPackages_latest;
# https://github.com/void-linux/void-packages/issues/50417#issuecomment-2131802836 fix framework 13 not shutting down # https://github.com/void-linux/void-packages/issues/50417#issuecomment-2131802836 fix framework 13 not shutting down
/* /*
@ -392,6 +423,20 @@ in
# TODO: when resuming from hibernation, it would be nice if this would # TODO: when resuming from hibernation, it would be nice if this would
# simply resume the power state at the time of hibernation # simply resume the power state at the time of hibernation
powerOnBoot = false; powerOnBoot = false;
package = pkgs.bluez.overrideAttrs (finalAttrs: previousAttrs: rec {
version = "5.78";
src = pkgs.fetchurl {
url = "mirror://kernel/linux/bluetooth/bluez-${version}.tar.xz";
sha256 = "sha256-gw/tGRXF03W43g9eb0X83qDcxf9f+z0x227Q8A1zxeM=";
};
patches = [];
buildInputs =
previousAttrs.buildInputs
++ [
pkgs.python3Packages.pygments
];
});
}; };
powerManagement.cpuFreqGovernor = "ondemand"; powerManagement.cpuFreqGovernor = "ondemand";
/* /*
@ -436,15 +481,19 @@ in
networking.firewall.allowedTCPPorts = let networking.firewall.allowedTCPPorts = let
stardewValley = 24642; stardewValley = 24642;
factorio = 34197;
in [ in [
8000 # dev stuff 8000 # dev stuff
factorio
stardewValley stardewValley
7777 7777
]; ];
networking.firewall.allowedUDPPorts = let networking.firewall.allowedUDPPorts = let
stardewValley = 24642; stardewValley = 24642;
factorio = 34197;
in [ in [
8000 # dev stuff 8000 # dev stuff
factorio
stardewValley stardewValley
7777 7777
]; ];

View file

@ -1,4 +1,5 @@
{ {
pkgs,
config, config,
lib, lib,
... ...

View file

@ -1,4 +1,5 @@
{ {
pkgs,
lib, lib,
config, config,
... ...
@ -41,7 +42,18 @@
boot.kernelModules = ["kvm-intel" "acpi_call"]; boot.kernelModules = ["kvm-intel" "acpi_call"];
boot.extraModulePackages = with config.boot.kernelPackages; [acpi_call]; boot.extraModulePackages = with config.boot.kernelPackages; [acpi_call];
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware = {
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver
intel-ocl
intel-vaapi-driver
];
};
};
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;

1
templates/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
flake.lock

View file

@ -1,81 +1,16 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
git-hooks.url = "github:cachix/git-hooks.nix";
git-hooks.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = { outputs = inputs: let
self, inherit (import nix/boilerplate.nix inputs) call;
nixpkgs,
...
}: let
inherit (self) outputs;
supportedSystems = [
"aarch64-linux"
"x86_64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
overlay = final: prev: {
erlangPackages = prev.beam.packagesWith prev.erlang_26;
erlang = final.erlangPackages.erlang;
elixir = final.erlangPackages.elixir_1_16;
mixRelease = final.erlangPackages.mixRelease.override {
elixir = final.elixir;
};
fetchMixDeps = final.erlangPackages.fetchMixDeps.override {
elixir = final.elixir;
};
elixir-ls = prev.elixir-ls.override {elixir = final.elixir;};
};
nixpkgsFor = system: ((import nixpkgs {inherit system;}).extend overlay);
in { in {
packages = forAllSystems (system: let overlays = import nix/overlays.nix;
pkgs = nixpkgsFor system; packages = call (import nix/packages.nix);
checks = call (import nix/checks.nix);
inherit (pkgs) beamPackages; devShells = call (import nix/shells.nix);
inherit (beamPackages) mixRelease fetchMixDeps;
version = "0.1.0";
src = ./.;
pname = "api.lyte.dev";
in {
/*
this-package = mixRelease {
inherit pname version src;
mixFodDeps = fetchMixDeps {
inherit version src;
pname = "mix-deps-${pname}";
hash = pkgs.lib.fakeSha256;
};
buildInputs = with pkgs; [sqlite];
HOME = "$(pwd)";
MIX_XDG = "$HOME";
};
default = outputs.packages.${system}.this-package;
*/
});
devShells = forAllSystems (system: let
pkgs = nixpkgsFor system;
in {
default = pkgs.mkShell {
shellHook = "export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive";
buildInputs = with pkgs; [
elixir
elixir-ls
inotify-tools
];
};
});
}; };
} }

View file

@ -0,0 +1,16 @@
inputs @ {
nixpkgs,
self,
...
}: let
forSelfOverlay =
if builtins.hasAttr "forSelf" self.overlays
then self.overlays.forSelf
else (_: p: p);
in rec {
systems = ["aarch64-linux" "x86_64-linux" "x86_64-darwin" "aarch64-darwin"];
forSystems = nixpkgs.lib.genAttrs systems;
pkgsFor = system: ((import nixpkgs {inherit system;}).extend forSelfOverlay);
genPkgs = func: (forSystems (system: func (pkgsFor system)));
call = imported: genPkgs (pkgs: imported (inputs // {inherit pkgs;}));
}

View file

@ -0,0 +1,17 @@
{
git-hooks,
pkgs,
...
}: {
git-hooks = git-hooks.lib.${pkgs.system}.run {
src = ./..;
hooks = {
alejandra.enable = true;
convco.enable = true;
credo.enable = true;
dialyzer.enable = true;
mix-format.enable = true;
mix-test.enable = true;
};
};
}

View file

@ -0,0 +1,9 @@
{
forSelf = final: prev: {
erlang = prev.beam.packagesWith prev.beam.interpreters.erlang_27;
elixir = final.erlang.elixir_1_18;
mixRelease = final.erlang.mixRelease.override {elixir = final.elixir;};
fetchMixDeps = final.erlang.fetchMixDeps.override {elixir = final.elixir;};
elixir-ls = prev.elixir-ls.override {elixir = final.elixir;};
};
}

View file

@ -0,0 +1,24 @@
{
pkgs,
self,
...
}: let
version = "1.0.0";
src = ../.;
pname = "my-package";
in {
${pname} = pkgs.mixRelease {
inherit pname version src;
mixFodDeps = pkgs.fetchMixDeps {
inherit version src;
pname = "mix-deps-${pname}";
sha256 = pkgs.lib.fakeSha256;
};
# buildInputs = with pkgs; [];
# HOME = "$(pwd)";
# MIX_XDG = "$HOME";
# RELEASE_COOKIE = "test-cookie";
};
default = self.packages.${pkgs.system}.${pname};
}

View file

@ -0,0 +1,15 @@
{
pkgs,
# self,
...
}: {
elixir-dev = pkgs.mkShell {
shellHook = "export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive";
# inputsFrom = [self.packages.${pkgs.system}.my-package];
buildInputs = with pkgs; [
elixir
elixir-ls
inotify-tools
];
};
}

View file

@ -20,16 +20,12 @@
src = ./.; src = ./.;
hooks = { hooks = {
alejandra.enable = true; alejandra.enable = true;
# NOTE: These do not work well with `nix flake check` due to pure environments
# https://github.com/cachix/git-hooks.nix/issues/452
/*
cargo-check.enable = true; cargo-check.enable = true;
clippy = { clippy = {
enable = true; enable = true;
packageOverrides.cargo = pkgs.cargo; packageOverrides.cargo = pkgs.cargo;
packageOverrides.clippy = pkgs.rustPackages.clippy; packageOverrides.clippy = pkgs.rustPackages.clippy;
}; };
*/
rustfmt = { rustfmt = {
enable = true; enable = true;
packageOverrides.rustfmt = pkgs.rustfmt; packageOverrides.rustfmt = pkgs.rustfmt;
@ -40,7 +36,7 @@
packages = genPkgs (pkgs: { packages = genPkgs (pkgs: {
my-package = pkgs.rustPlatform.buildRustPackage { my-package = pkgs.rustPlatform.buildRustPackage {
pname = "kodotag"; pname = "my-package";
version = "0.1.0"; version = "0.1.0";
/* /*