Compare commits

..

No commits in common. "main" and "pinephone" have entirely different histories.

34 changed files with 921 additions and 2012 deletions

View file

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

126
flake.nix
View file

@ -1,6 +1,6 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
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.11"; home-manager.url = "github:nix-community/home-manager/release-24.05";
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";
@ -31,9 +31,6 @@
slippi.inputs.nixpkgs.follows = "nixpkgs-unstable"; slippi.inputs.nixpkgs.follows = "nixpkgs-unstable";
slippi.inputs.home-manager.follows = "home-manager-unstable"; slippi.inputs.home-manager.follows = "home-manager-unstable";
jovian.url = "github:Jovian-Experiments/Jovian-NixOS/development";
jovian.inputs.nixpkgs.follows = "nixpkgs-unstable";
# nnf.url = "github:thelegy/nixos-nftables-firewall?rev=71fc2b79358d0dbacde83c806a0f008ece567b7b"; # nnf.url = "github:thelegy/nixos-nftables-firewall?rev=71fc2b79358d0dbacde83c806a0f008ece567b7b";
mobile-nixos = { mobile-nixos = {
@ -74,7 +71,6 @@
home-manager-unstable, home-manager-unstable,
helix, helix,
hardware, hardware,
jovian,
mobile-nixos, mobile-nixos,
# nnf, # nnf,
# hyprland, # hyprland,
@ -89,7 +85,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 +179,7 @@
nodejs nodejs
wget wget
sudo sudo
nixVersions.stable nixFlakes
cacert cacert
gnutar gnutar
gzip gzip
@ -242,24 +238,7 @@
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: {
@ -282,43 +261,37 @@
}; };
nixosConfigurations = { nixosConfigurations = {
beefcake = let beefcake = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
in modules = with nixosModules; [
nixpkgs.lib.nixosSystem { home-manager-defaults
inherit system;
modules = with nixosModules; [
home-manager-defaults
# TODO: disko? # TODO: disko?
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 = {
enable = true;
username = "beefcake.h";
# TODO: router doesn't even do ipv6 yet...
ipv6 = false;
};
}
family-users {
common services.deno-netlify-ddns-client = {
podman enable = true;
troubleshooting-tools username = "beefcake.h";
virtual-machines # TODO: router doesn't even do ipv6 yet...
virtual-machines-gui ipv6 = false;
linux };
fonts }
./nixos/beefcake.nix family-users
common
podman
troubleshooting-tools
virtual-machines
virtual-machines-gui
linux
fonts
{ ./nixos/beefcake.nix
services.kanidm.package = (unstable.pkgsFor system).kanidm; ];
} };
];
};
dragon = nixpkgs-unstable.lib.nixosSystem { dragon = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
@ -336,11 +309,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;
@ -418,37 +391,6 @@
]; ];
}; };
steamdeck1 = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux";
modules = with nixosModules; [
home-manager-unstable-defaults
outputs.diskoConfigurations.standard
hardware.nixosModules.common-pc-ssd
common
gaming
graphical-workstation
plasma6
jovian.outputs.nixosModules.jovian
{
networking.hostName = "steamdeck1";
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
hardware.bluetooth.enable = true;
networking.networkmanager.enable = true;
home-manager.users.daniel = {
imports = with homeManagerModules; [
firefox-no-tabs
linux-desktop-environment-config
];
};
}
];
};
foxtrot = nixpkgs-unstable.lib.nixosSystem { foxtrot = nixpkgs-unstable.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = with nixosModules; [ modules = with nixosModules; [
@ -461,7 +403,6 @@
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
@ -497,7 +438,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 balanced' command -v powerprofilesctl &>/dev/null && bash -x -c 'powerprofilesctl set performance'
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'
''; '';
}) })
@ -524,7 +465,6 @@
common common
password-manager password-manager
graphical-workstation graphical-workstation
plasma6
music-production music-production
laptop laptop
gaming gaming
@ -595,7 +535,6 @@
common common
password-manager password-manager
graphical-workstation graphical-workstation
plasma6
laptop laptop
gaming gaming
@ -674,6 +613,7 @@
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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View file

@ -1,380 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="141.5919mm"
height="122.80626mm"
viewBox="0 0 501.70361 435.14028"
id="svg2"
version="1.1"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="Nix_snowflake_lytedev.svg"
inkscape:export-filename="Nix_snowflake_lytedev.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient5562">
<stop
style="stop-color:#699ad7;stop-opacity:1"
offset="0"
id="stop5564" />
<stop
id="stop5566"
offset="0.24345198"
style="stop-color:#7eb1dd;stop-opacity:1" />
<stop
style="stop-color:#7ebae4;stop-opacity:1"
offset="1"
id="stop5568" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5053">
<stop
style="stop-color:#415e9a;stop-opacity:1"
offset="0"
id="stop5055" />
<stop
id="stop5057"
offset="0.23168644"
style="stop-color:#4a6baf;stop-opacity:1" />
<stop
style="stop-color:#5277c3;stop-opacity:1"
offset="1"
id="stop5059" />
</linearGradient>
<linearGradient
id="linearGradient5960"
inkscape:collect="always">
<stop
id="stop5962"
offset="0"
style="stop-color:#637ddf;stop-opacity:1" />
<stop
style="stop-color:#649afa;stop-opacity:1"
offset="0.23168644"
id="stop5964" />
<stop
id="stop5966"
offset="1"
style="stop-color:#719efa;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5867">
<stop
style="stop-color:#7363df;stop-opacity:1"
offset="0"
id="stop5869" />
<stop
id="stop5871"
offset="0.23168644"
style="stop-color:#6478fa;stop-opacity:1" />
<stop
style="stop-color:#719efa;stop-opacity:1"
offset="1"
id="stop5873" />
</linearGradient>
<linearGradient
y2="515.97058"
x2="282.26105"
y1="338.62445"
x1="213.95642"
gradientTransform="translate(983.36076,601.38885)"
gradientUnits="userSpaceOnUse"
id="linearGradient5855"
xlink:href="#linearGradient5960"
inkscape:collect="always" />
<linearGradient
y2="515.97058"
x2="282.26105"
y1="338.62445"
x1="213.95642"
gradientTransform="translate(-197.75174,-337.1451)"
gradientUnits="userSpaceOnUse"
id="linearGradient5855-8"
xlink:href="#linearGradient5867"
inkscape:collect="always" />
<linearGradient
y2="247.58188"
x2="-702.75317"
y1="102.74675"
x1="-775.20807"
gradientTransform="translate(983.36076,601.38885)"
gradientUnits="userSpaceOnUse"
id="linearGradient4544"
xlink:href="#linearGradient5960"
inkscape:collect="always" />
<clipPath
id="clipPath4501"
clipPathUnits="userSpaceOnUse">
<circle
r="241.06563"
cy="686.09473"
cx="335.13995"
id="circle4503"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#adadad;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</clipPath>
<clipPath
id="clipPath5410"
clipPathUnits="userSpaceOnUse">
<circle
r="241.13741"
cy="340.98975"
cx="335.98114"
id="circle5412"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5053"
id="linearGradient5137"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(864.55062,-2197.497)"
x1="-584.19934"
y1="782.33563"
x2="-496.29703"
y2="937.71399" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5053"
id="linearGradient5147"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(864.55062,-2197.497)"
x1="-584.19934"
y1="782.33563"
x2="-496.29703"
y2="937.71399" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5562"
id="linearGradient5162"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(70.505061,-1761.3076)"
x1="200.59668"
y1="351.41116"
x2="290.08701"
y2="506.18814" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5562"
id="linearGradient5172"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(70.505061,-1761.3076)"
x1="200.59668"
y1="351.41116"
x2="290.08701"
y2="506.18814" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5562"
id="linearGradient5182"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(70.505061,-1761.3076)"
x1="200.59668"
y1="351.41116"
x2="290.08701"
y2="506.18814" />
<linearGradient
y2="506.18814"
x2="290.08701"
y1="351.41116"
x1="200.59668"
gradientTransform="translate(70.505061,-1761.3076)"
gradientUnits="userSpaceOnUse"
id="linearGradient5201"
xlink:href="#linearGradient5562"
inkscape:collect="always" />
<linearGradient
y2="937.71399"
x2="-496.29703"
y1="782.33563"
x1="-584.19934"
gradientTransform="translate(864.55062,-2197.497)"
gradientUnits="userSpaceOnUse"
id="linearGradient5205"
xlink:href="#linearGradient5053"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98318225"
inkscape:cx="112.8987"
inkscape:cy="191.21582"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2059"
inkscape:window-height="1588"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:snap-global="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="print-logo"
inkscape:groupmode="layer"
id="layer1"
style="display:inline"
transform="translate(-156.33871,933.1905)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
id="path4861"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#df3c59;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z"
id="use4863"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#df3c59;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z"
id="use4865"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#df3c59;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z"
id="use4867"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path4873"
d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#8e293b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use4875"
d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#8e293b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="use4877"
d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#8e293b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<g
id="layer2"
inkscape:label="guides"
style="display:none"
transform="translate(72.039038,-1799.4476)">
<path
d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.5707963"
sodipodi:arg1="1.0471976"
sodipodi:r2="217.25499"
sodipodi:r1="250.86446"
sodipodi:cy="377.47382"
sodipodi:cx="335.17407"
sodipodi:sides="6"
id="path6032"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.236;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
sodipodi:type="star" />
<path
transform="translate(0,-308.26772)"
sodipodi:type="star"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="path5875"
sodipodi:sides="6"
sodipodi:cx="335.17407"
sodipodi:cy="685.74158"
sodipodi:r1="100.83495"
sodipodi:r2="87.32563"
sodipodi:arg1="1.0471976"
sodipodi:arg2="1.5707963"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 385.59154,773.06721 -100.83495,0 -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" />
<path
transform="translate(0,-308.26772)"
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path5851"
d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z"
style="fill:url(#linearGradient5855);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.415;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c53a3a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect5884"
width="48.834862"
height="226.22897"
x="-34.74221"
y="446.17056"
transform="rotate(-30)" />
<path
transform="translate(0,-308.26772)"
sodipodi:type="star"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.509;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="path3428"
sodipodi:sides="6"
sodipodi:cx="223.93674"
sodipodi:cy="878.63831"
sodipodi:r1="28.048939"
sodipodi:r2="24.291094"
sodipodi:arg1="0"
sodipodi:arg2="0.52359878"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" />
<use
x="0"
y="0"
xlink:href="#rect5884"
id="use4252"
transform="rotate(60,268.29786,489.4515)"
width="100%"
height="100%" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.650794;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4254"
width="5.3947482"
height="115.12564"
x="545.71014"
y="467.07007"
transform="rotate(30,575.23539,-154.13386)" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 19 KiB

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;
} }
.leftsidestuff slider { .sidestuff slider {
color: $sapphire; color: $sapphire;
} }
@ -84,7 +84,6 @@ $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,9 +1,8 @@
(defwidget bar [] (defwidget bar []
(centerbox :orientation "h" (centerbox :orientation "h"
(leftsidestuff) (sidestuff)
(box) (box)
(rightsidestuff) (music)))
))
(defwindow bar0 (defwindow bar0
:monitor 0 :monitor 0
@ -31,16 +30,14 @@
:anchor "bottom center") :anchor "bottom center")
(bar)) (bar))
(defwidget rightsidestuff [] (defwidget sidestuff []
(box :class "rightsidestuff" :orientation "h" :space-evenly false :halign "end" :valign "center" :spacing 10 (box :class "sidestuff" :orientation "h" :space-evenly false :halign "start" :valign "center" :spacing 10
(music)
(systray)
))
(defwidget leftsidestuff []
(box :class "leftsidestuff" :orientation "h" :space-evenly false :halign "start" :valign "center" :spacing 10
time time
; TODO: indicator/tray/taskbar/toolbar icons and management? (probably should use something standalone?)
; https://github.com/elkowar/eww/issues/111
; 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" ? " " : " "}
@ -51,7 +48,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:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do socat - "UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do
workspaces "$line" workspaces "$line"
done done
done done

View file

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

View file

@ -61,9 +61,6 @@ 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

@ -33,7 +33,7 @@ set --export --universal EXA_COLORS '*=0'
set --export --universal ERL_AFLAGS "-kernel shell_history enabled -kernel shell_history_file_bytes 1024000" set --export --universal ERL_AFLAGS "-kernel shell_history enabled -kernel shell_history_file_bytes 1024000"
set --export --universal BROWSER (which firefox) set --export --universal BROWSER firefox
set --export --universal SOPS_AGE_KEY_FILE "$XDG_CONFIG_HOME/sops/age/keys.txt" set --export --universal SOPS_AGE_KEY_FILE "$XDG_CONFIG_HOME/sops/age/keys.txt"

View file

@ -1,16 +1,24 @@
{ {
pkgs, pkgs,
style, colors,
config, config,
lib, lib,
# font, # font,
... ...
}: let }: {
inherit (style) colors; imports = [
in { ./ewwbar.nix
# TODO: Hyprland seems to sometimes use a ton of CPU? ./mako.nix
./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
]; ];
@ -39,12 +47,38 @@ in {
"hyprpaper" "hyprpaper"
"mako" "mako"
"swayosd-server" "swayosd-server"
"eww daemon" "eww daemon && eww open bar$EWW_BAR_MON"
"[workspace 1 silent] firefox" "firefox"
"[workspace 1 silent] wezterm" "wezterm"
"xwaylandvideobridge" "xwaylandvideobridge"
"dbus-update-activation-environment --systemd --all"
"systemctl --user import-environment QT_QPA_PLATFORMTHEME" "systemctl --user import-environment QT_QPA_PLATFORMTHEME"
"hypridle" # "wezterm"
# 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 = [
@ -63,8 +97,8 @@ in {
follow_mouse = 2; follow_mouse = 2;
repeat_delay = 180; repeat_delay = 200;
repeat_rate = 120; repeat_rate = 60;
touchpad = { touchpad = {
natural_scroll = "yes"; natural_scroll = "yes";
@ -83,10 +117,6 @@ in {
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";
@ -95,6 +125,7 @@ in {
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;
@ -102,7 +133,7 @@ in {
}; };
decoration = { decoration = {
rounding = 5; rounding = 3;
/* /*
blur = "no"; blur = "no";
@ -111,12 +142,10 @@ in {
blur_new_optimizations = on blur_new_optimizations = on
*/ */
shadow = { drop_shadow = "yes";
enabled = true; shadow_range = 4;
color = "rgba(1a1a1aee)"; shadow_render_power = 3;
range = 4; "col.shadow" = "rgba(1a1a1aee)";
render_power = 3;
};
dim_inactive = false; dim_inactive = false;
}; };
@ -150,10 +179,10 @@ in {
"$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, movewindow, l" "$mod SHIFT, H, swapwindow, l"
"$mod SHIFT, L, movewindow, r" "$mod SHIFT, L, swapwindow, r"
"$mod SHIFT, K, movewindow, u" "$mod SHIFT, K, swapwindow, u"
"$mod SHIFT, J, movewindow, d" "$mod SHIFT, J, swapwindow, 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"
@ -199,10 +228,10 @@ in {
# 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, hyprlock" "CTRL SHIFT $mod, L, exec, swaylock"
"$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 default" "$mod SHIFT, space, exec, makoctl invoke"
"$mod, E, exec, thunar" "$mod, E, exec, thunar"
]; ];
@ -230,12 +259,12 @@ in {
# 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 {
@ -251,170 +280,14 @@ in {
## 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:^.*$ windowrulev2 = float,class:^.*([Kk]itty|[Ff]irefox|[Ww]ezterm|[Dd]iscord|[Ss]potify|[Ss]lack).*$
windowrulev2 = tile,class:^.*([Kk]itty|[Ff]irefox|[Ww]ezterm|[Dd]iscord|[Ss]potify|[Ss]lack).*$ windowrulev2 = opacity 1.0 0.9,floating:1
windowrulev2 = opacity 1.0 0.95,class:^.*$
windowrulev2 = center 1,floating:1
windowrulev2 = opacity 0.0 override, class:^(xwaylandvideobridge)$ windowrulev2 = opacity 0.0 override 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

@ -0,0 +1,28 @@
{style, ...}: {
services.mako = with style.colors.withHashPrefix; {
enable = false;
anchor = "top-right";
extraConfig = ''
border-size=1
max-visible=5
default-timeout=15000
font=Symbols Nerd Font ${toString font.size},${font.name} ${toString font.size}
anchor=top-right
background-color=${colors.bg}
text-color=${colors.text}
border-color=${colors.primary}
progress-color=${colors.primary}
[urgency=high]
border-color=${urgent}
[urgency=high]
background-color=${urgent}
border-color=${urgent}
text-color=${bg}
'';
};
}

View file

@ -2,21 +2,51 @@
style, style,
lib, lib,
config, config,
pkgs,
... ...
}: { }: {
programs.foot = { programs.foot = {
enable = true; enable = true;
}; };
xdg = { home.file."${config.xdg.configHome}/mako/config" = {
enable = true; enable = true;
mimeApps = { text = with style.colors.withHashPrefix; ''
enable = true; border-size=1
defaultApplications = { max-visible=5
"x-scheme-handler/http" = "firefox.desktop"; default-timeout=15000
"x-scheme-handler/https" = "firefox.desktop"; font=Symbols Nerd Font ${toString style.font.size},${style.font.name} ${toString style.font.size}
}; anchor=top-right
};
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 = {

View file

@ -123,8 +123,6 @@
}; };
"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,7 +4,6 @@ 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 },
@ -22,12 +21,8 @@ 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,12 +33,6 @@
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?
}; };
@ -47,25 +41,6 @@
pipewire pipewire
]; ];
systemd.user.services."wait-for-full-path" = {
description = "wait for systemd units to have full PATH";
wantedBy = ["xdg-desktop-portal.service"];
before = ["xdg-desktop-portal.service"];
path = with pkgs; [systemd coreutils gnugrep];
script = ''
ispresent () {
systemctl --user show-environment | grep -E '^PATH=.*/.nix-profile/bin'
}
while ! ispresent; do
sleep 0.1;
done
'';
serviceConfig = {
Type = "oneshot";
TimeoutStartSec = "60";
};
};
home-manager.users.daniel = { home-manager.users.daniel = {
imports = with homeManagerModules; [ imports = with homeManagerModules; [
sway sway
@ -107,6 +82,8 @@
environment = { environment = {
variables = { variables = {
VISUAL = "hx"; VISUAL = "hx";
PAGER = "less";
MANPAGER = "less";
}; };
systemPackages = with pkgs; [ systemPackages = with pkgs; [
@ -195,9 +172,22 @@
}; };
}; };
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 = {
@ -237,36 +227,30 @@
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 = { environment.systemPackages = with pkgs; [
variables = { curl
PAGER = "bat --style=plain"; dua
MANPAGER = "bat --style=plain"; eza # TODO: needs shell aliases
}; fd
systemPackages = with pkgs; [ file
curl iputils
dua nettools
bat /*
eza nodePackages.bash-language-server # just pull in as needed?
fd shellcheck
file shfmt
iputils */
nettools killall
/* ripgrep
nodePackages.bash-language-server # just pull in as needed? rsync
shellcheck sd
shfmt ];
*/
killall
ripgrep
rsync
sd
];
};
programs = { programs = {
traceroute.enable = true; traceroute.enable = true;
@ -368,7 +352,7 @@
}; };
cross-compiler = {config, ...}: { cross-compiler = {config, ...}: {
boot.binfmt.emulatedSystems = ["aarch64-linux" "i686-linux"]; boot.binfmt.emulatedSystems = ["aarch64-linux"];
}; };
default-nix-configuration-and-overlays = { default-nix-configuration-and-overlays = {
@ -393,7 +377,7 @@
trusted-users = ["root" "daniel"]; trusted-users = ["root" "daniel"];
experimental-features = lib.mkDefault ["nix-command" "flakes"]; experimental-features = lib.mkDefault ["nix-command" "flakes"];
extra-platforms = ["i686-linux" "aarch64-linux"]; extra-platforms = ["aarch64-linux"];
substituters = [ substituters = [
# TODO: dedupe with flake's config? is that even necessary? # TODO: dedupe with flake's config? is that even necessary?
@ -453,11 +437,7 @@
}; };
}; };
development-tools = { development-tools = {pkgs, ...}: {
pkgs,
lib,
...
}: {
imports = with nixosModules; [ imports = with nixosModules; [
postgres postgres
podman podman
@ -477,11 +457,11 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
taplo # toml language server for editing helix configs per repo taplo # toml language server for editing helix configs per repo
picocom # serial
pgcli pgcli
oils-for-unix oil
watchexec watchexec
android-tools android-tools
kubectl
stern stern
libresprite libresprite
# logseq # logseq
@ -521,17 +501,6 @@
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;
@ -548,7 +517,7 @@
}; };
programs.jujutsu = { programs.jujutsu = {
enable = lib.mkDefault true; enable = true;
}; };
programs.k9s = { programs.k9s = {
@ -613,13 +582,6 @@
}; };
}; };
android-dev = {pkgs, ...}: {
services.udev.packages = [
pkgs.android-udev-rules
];
environment.systemPackages = [pkgs.android-studio];
};
graphical-workstation = { graphical-workstation = {
pkgs, pkgs,
lib, lib,
@ -629,15 +591,13 @@
}: { }: {
imports = with nixosModules; [ imports = with nixosModules; [
sway sway
hyprland # hyprland
enable-flatpaks-and-appimages enable-flatpaks-and-appimages
fonts fonts
development-tools development-tools
printing printing
music-consumption music-consumption
video-tools video-tools
radio-tools
android-dev
]; ];
xdg.portal.enable = true; xdg.portal.enable = true;
@ -647,7 +607,6 @@
then { then {
graphics = { graphics = {
enable = true; enable = true;
enable32Bit = true;
/* /*
driSupport32Bit = true; driSupport32Bit = true;
driSupport = true; driSupport = true;
@ -665,8 +624,6 @@
systemPackages = with pkgs; [ systemPackages = with pkgs; [
libnotify libnotify
slides slides
slack
discord
]; ];
variables = { variables = {
/* /*
@ -680,14 +637,6 @@
# gnome = {}; # gnome = {};
# intel = {}; # intel = {};
radio-tools = {pkgs, ...}: {
environment = {
systemPackages = with pkgs; [
chirp
];
};
};
kde-connect = { kde-connect = {
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
@ -701,13 +650,8 @@
}; };
fonts = {pkgs, ...}: { fonts = {pkgs, ...}: {
fonts.packages = [ fonts.packages = with pkgs; [
( (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
]; ];
}; };
@ -767,7 +711,7 @@
*/ */
]; ];
programs.gnupg.agent.pinentryPackage = lib.mkForce pkgs.pinentry-qt; programs.gnupg.agent.pinentryPackage = pkgs.pinentry-tty;
}; };
lutris = {pkgs, ...}: { lutris = {pkgs, ...}: {
@ -933,15 +877,6 @@
backend = "podman"; backend = "podman";
}; };
}; };
networking = {
extraHosts = ''
127.0.0.1 host.docker.internal
::1 host.docker.internal
127.0.0.1 host.containers.internal
::1 host.containers.internal
'';
};
}; };
virtual-machines = {pkgs, ...}: { virtual-machines = {pkgs, ...}: {
@ -1019,26 +954,7 @@
wifi = {lib, ...}: let wifi = {lib, ...}: let
inherit (lib) mkDefault; inherit (lib) mkDefault;
in { in {
networking.networkmanager = { networking.networkmanager.enable = mkDefault true;
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;
/* /*
@ -1121,7 +1037,7 @@
createHome = true; createHome = true;
openssh.authorizedKeys.keys = [pubkey]; openssh.authorizedKeys.keys = [pubkey];
group = username; group = username;
extraGroups = ["users" "wheel" "video" "dialout" "uucp" "kvm"]; extraGroups = ["users" "wheel" "video" "dialout" "uucp"];
packages = []; packages = [];
}; };
home-manager.users.daniel = { home-manager.users.daniel = {
@ -1218,13 +1134,12 @@
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;
# boot.uki.tries = 3; services.irqbalance.enable = true;
# 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"];
@ -220,6 +220,8 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
networking.firewall.allowedUDPPorts = lib.mkIf config.services.headscale.enable [3478]; networking.firewall.allowedUDPPorts = lib.mkIf config.services.headscale.enable [3478];
} }
{ {
# TODO: I think I need to setup my account? wondering if this can be done in nix as well
services.restic.commonPaths = ["/var/lib/soju" "/var/lib/private/soju"]; services.restic.commonPaths = ["/var/lib/soju" "/var/lib/private/soju"];
services.soju = { services.soju = {
enable = true; enable = true;
@ -268,7 +270,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
]; ];
}; };
services.nextcloud = { services.nextcloud = {
enable = false; enable = true;
hostName = "nextcloud.h.lyte.dev"; hostName = "nextcloud.h.lyte.dev";
maxUploadSize = "100G"; maxUploadSize = "100G";
extraAppsEnable = true; extraAppsEnable = true;
@ -304,11 +306,9 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
serviceConfig.Group = "nextcloud"; serviceConfig.Group = "nextcloud";
}; };
services.phpfpm = lib.mkIf config.services.nextcloud.enable { services.phpfpm.pools.nextcloud.settings = {
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
@ -813,117 +813,7 @@ 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" = {
@ -937,7 +827,6 @@ 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 = {
@ -965,8 +854,8 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
# LEVEL = "Debug"; # LEVEL = "Debug";
}; };
ui = { ui = {
THEMES = "catppuccin-mocha-sapphire,forgejo-auto,forgejo-light,forgejo-dark"; THEMES = "forgejo-auto,forgejo-light,forgejo-dark";
DEFAULT_THEME = "catppuccin-mocha-sapphire"; DEFAULT_THEME = "forgejo-auto";
}; };
indexer = { indexer = {
REPO_INDEXER_ENABLED = "true"; REPO_INDEXER_ENABLED = "true";
@ -975,13 +864,6 @@ 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;
@ -1001,26 +883,6 @@ 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?
@ -1069,7 +931,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
@ -1390,13 +1252,10 @@ 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 {};
kanidm-package = config.services.kanidm.package; package = pkgs.kanidm;
domain = "idm.h.lyte.dev"; domain = "idm.h.lyte.dev";
name = "kanidm"; name = "kanidm";
storage = "/storage/${name}"; storage = "/storage/${name}";
@ -1475,12 +1334,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 = {
# reload certs from caddy every 5 minutes # we need a mechanism to get the certificates that caddy provisions for us
# 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 = {
@ -1491,10 +1350,8 @@ 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"
@ -1506,8 +1363,9 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
}; };
}; };
environment.systemPackages = [kanidm-package]; environment.systemPackages = [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;
@ -1537,7 +1395,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 = [kanidm-package]; packages = [package];
}; };
users.users."${user}-unixd" = { users.users."${user}-unixd" = {
group = "${group}-unixd"; group = "${group}-unixd";
@ -1549,7 +1407,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] ++ [kanidm-package]; path = with pkgs; [openssl] ++ [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"];
@ -1558,7 +1416,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
${kanidm-package}/bin/kanidmd server -c ${serverConfigFile} ${package}/bin/kanidmd server -c ${serverConfigFile}
''; '';
# environment.RUST_LOG = serverSettings.log_level; # environment.RUST_LOG = serverSettings.log_level;
serviceConfig = lib.mkMerge [ serviceConfig = lib.mkMerge [
@ -1603,7 +1461,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 = "${kanidm-package}/bin/kanidm_unixd"; ExecStart = "${package}/bin/kanidm_unixd";
User = "${user}-unixd"; User = "${user}-unixd";
Group = "${group}-unixd"; Group = "${group}-unixd";
@ -1637,7 +1495,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 = "${kanidm-package}/bin/kanidm_unixd_tasks"; ExecStart = "${package}/bin/kanidm_unixd_tasks";
BindReadOnlyPaths = [ BindReadOnlyPaths = [
"/nix/store" "/nix/store"
@ -1675,7 +1533,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
"kanidm/unixd".source = unixdConfigFile; "kanidm/unixd".source = unixdConfigFile;
}; };
system.nssModules = [kanidm-package]; system.nssModules = [package];
system.nssDatabases.group = [name]; system.nssDatabases.group = [name];
system.nssDatabases.passwd = [name]; system.nssDatabases.passwd = [name];
@ -1703,6 +1561,7 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
''; '';
}; };
}; };
*/
}) })
{ {
systemd.tmpfiles.settings = { systemd.tmpfiles.settings = {
@ -1907,7 +1766,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;
}; };
@ -1934,7 +1793,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.11.0"; image = "ghcr.io/actualbudget/actual-server:24.10.1";
autoStart = true; autoStart = true;
ports = ["5006:5006"]; ports = ["5006:5006"];
volumes = ["/storage/actual:/data"]; volumes = ["/storage/actual:/data"];
@ -1945,29 +1804,6 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00
extraConfig = ''reverse_proxy :5006''; extraConfig = ''reverse_proxy :5006'';
}; };
} }
{
services.factorio = {
enable = true;
package = pkgs.factorio-headless.override {
versionsJson = ./factorio-versions.json;
};
admins = ["lytedev"];
autosave-interval = 5;
game-name = "Flanwheel Online";
description = "Space Age 2.0";
openFirewall = true;
lan = true;
# public = true; # NOTE: cannot be true if requireUserVerification is false
port = 34197;
requireUserVerification = false; # critical for DRM-free users
# contains the game password and account password for "public" servers
extraSettingsFile = config.sops.secrets.factorio-server-settings.path;
};
sops.secrets = {
factorio-server-settings = {mode = "0777";};
};
}
]; ];
/* /*

View file

@ -6,7 +6,7 @@
}: { }: {
imports = [ imports = [
{ {
system.stateVersion = "24.11"; system.stateVersion = "24.05";
home-manager.users.daniel.home.stateVersion = "24.05"; home-manager.users.daniel.home.stateVersion = "24.05";
networking.hostName = "dragon"; networking.hostName = "dragon";
} }
@ -31,14 +31,6 @@
}; };
} }
]; ];
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
@ -103,8 +95,8 @@
# TODO: monitor config module? # TODO: monitor config module?
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
settings = { settings = {
exec-once = [ env = [
"eww open bar1" "EWW_BAR_MON,1"
]; ];
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
monitor = [ monitor = [
@ -116,23 +108,12 @@
"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-1,3840x2160@60,0x0,1.5,transform,1" "DP-2,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,14 +0,0 @@
{
"x86_64-linux": {
"headless": {
"stable": {
"name": "factorio_headless_x64-2.0.15.tar.xz",
"needsAuth": false,
"sha256": "cLRBy4B4EaYFhsARBySMHY164EO9HyNnX8kk+6qlONg=",
"tarDirectory": "x64",
"url": "https://factorio.com/get-download/2.0.15/headless/linux64",
"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=180m"; systemd.sleep.extraConfig = "HibernateDelaySec=11m";
services.fwupd.enable = true; services.fwupd.enable = true;
services.fwupd.extraRemotes = ["lvfs-testing"]; services.fwupd.extraRemotes = ["lvfs-testing"];
} }
@ -266,7 +266,6 @@ in
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
easyeffects
godot_4 godot_4
fractal fractal
prismlauncher prismlauncher
@ -286,39 +285,19 @@ 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 = {
exec-once = [ env = [
"eww open bar0" "EWW_BAR_MON,0"
]; ];
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
monitor = [ monitor = [
"eDP-1,2880x1920@120Hz,0x0,1.66667" "eDP-1,2256x1504@60,0x0,${toString scale}"
]; ];
}; };
}; };
*/
wayland.windowManager.sway = { wayland.windowManager.sway = {
config = { config = {
@ -326,13 +305,12 @@ in
"BOE NE135A1M-NY1 Unknown" = { "BOE NE135A1M-NY1 Unknown" = {
mode = "2880x1920@120Hz"; mode = "2880x1920@120Hz";
position = "1092,2160"; position = "1092,2160";
scale = toString (5 / 3); scale = toString 1.75;
}; };
"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;
}; };
/* /*
@ -364,21 +342,12 @@ 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
/* /*
@ -423,20 +392,6 @@ 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";
/* /*
@ -481,19 +436,15 @@ 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,5 +1,4 @@
{ {
pkgs,
config, config,
lib, lib,
... ...

View file

@ -214,7 +214,6 @@ in {
udp dport { 80, 443 } accept comment "Allow QUIC to server (see nat prerouting)" udp dport { 80, 443 } accept comment "Allow QUIC to server (see nat prerouting)"
tcp dport { 22 } accept comment "Allow SSH to server (see nat prerouting)" tcp dport { 22 } accept comment "Allow SSH to server (see nat prerouting)"
tcp dport { 25565 } accept comment "Allow Minecraft server connections (see nat prerouting)" tcp dport { 25565 } accept comment "Allow Minecraft server connections (see nat prerouting)"
udp dport { 34197 } accept comment "Allow Factorio server connections (see nat prerouting)"
iifname "${lan}" accept comment "Allow local network to access the router" iifname "${lan}" accept comment "Allow local network to access the router"
iifname "tailscale0" accept comment "Allow local network to access the router" iifname "tailscale0" accept comment "Allow local network to access the router"
@ -257,7 +256,6 @@ in {
iifname ${wan} tcp dport {26966} dnat to ${hosts.beefcake.ip} iifname ${wan} tcp dport {26966} dnat to ${hosts.beefcake.ip}
iifname ${wan} tcp dport {25565} dnat to ${hosts.bald.ip} iifname ${wan} tcp dport {25565} dnat to ${hosts.bald.ip}
iifname ${wan} udp dport {25565} dnat to ${hosts.bald.ip} iifname ${wan} udp dport {25565} dnat to ${hosts.bald.ip}
iifname ${wan} udp dport {34197} dnat to ${hosts.beefcake.ip}
} }
chain postrouting { chain postrouting {

View file

@ -1,5 +1,4 @@
{ {
pkgs,
lib, lib,
config, config,
... ...
@ -42,18 +41,7 @@
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 = { hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
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;

View file

@ -1,15 +1,8 @@
<div align="center"> # Nix
<h1>
<img width="100" src="images/Nix_snowflake_lytedev.svg" /> <br>
Nix for <code>lytedev</code>
</h1>
[![flake check status](https://git.lyte.dev/lytedev/nix/badges/workflows/nix-flake-check.yaml/badge.svg)](https://git.lyte.dev/lytedev/nix/actions?workflow=nix-flake-check.yaml) [![flake check status](https://git.lyte.dev/lytedev/nix/badges/workflows/nix-flake-check.yaml/badge.svg)](https://git.lyte.dev/lytedev/nix/actions?workflow=nix-flake-check.yaml)
[![build status](https://git.lyte.dev/lytedev/nix/badges/workflows/nix-build.yaml/badge.svg)](https://git.lyte.dev/lytedev/nix/actions?workflow=nix-build.yaml) [![build status](https://git.lyte.dev/lytedev/nix/badges/workflows/nix-build.yaml/badge.svg)](https://git.lyte.dev/lytedev/nix/actions?workflow=nix-build.yaml)
</div>
My grand, declarative, and unified application, service, environment, and My grand, declarative, and unified application, service, environment, and
machine configuration, secret, and package management in a single flake. ❤️ ❄️ machine configuration, secret, and package management in a single flake. ❤️ ❄️

View file

@ -27,7 +27,6 @@ restic-rascal-passphrase: ENC[AES256_GCM,data:yonKbBh4riGwxc/qcj8F/qrgAtA1sWhYej
restic-rascal-ssh-private-key: ENC[AES256_GCM,data:ddsOs0XsayyQI9qc6LzwQpdDnfwNpbj8PbBJ5fyuqtlVNYndeLxaYcbZI2ULSUhgR1tN0FS+ggGTHQhVvjwksNvpskUGHNKkSLKH3D/mn5N9tsoeAblN4gZsloZdqXBVzEehumcQMdhh6iy6NkNbuinKrVKDhLV25PrFKuSBEYw9VHU7HAMW5Tfop3RzBXjZWETCDAR2OQa7d1dXsJ0Kw6b9RFmRe5MGQ0J7YhjdTg26JGMMVSeHvr5UbiUJkGA5RvOLEDM2Dfai7Lf8yRPZVxUl+rdRsNvNYEoYGu5rGLUFcuqIbQ+s40dP2uXwWauwkIvHUjEahkbP0httj4Kg3qIJBRPg7OuS+MOwAnLEAs3hl5zeBV396yA9qjWW8nhnbml58/uFFbfXbJWTM3r8cMpFbHKD+Ojo/99fm5Vy3pAMzNzEsHOaT+iyDYyNkV5OH1GyKK9n7kIRLdqmWe7GmaKXlwVvNUPi3RvLX9VXq83a4BuupFyTmaNfPGMs/17830aleV674+QVgKh3VyFtuJy6KBpMXDv16wFo,iv:S2I3h6pmKLxEc29E0zn2b8lscqA//5/ZMTV9q+/tdvs=,tag:ALeCT+nrVPDfS21xC555sA==,type:str] restic-rascal-ssh-private-key: ENC[AES256_GCM,data:ddsOs0XsayyQI9qc6LzwQpdDnfwNpbj8PbBJ5fyuqtlVNYndeLxaYcbZI2ULSUhgR1tN0FS+ggGTHQhVvjwksNvpskUGHNKkSLKH3D/mn5N9tsoeAblN4gZsloZdqXBVzEehumcQMdhh6iy6NkNbuinKrVKDhLV25PrFKuSBEYw9VHU7HAMW5Tfop3RzBXjZWETCDAR2OQa7d1dXsJ0Kw6b9RFmRe5MGQ0J7YhjdTg26JGMMVSeHvr5UbiUJkGA5RvOLEDM2Dfai7Lf8yRPZVxUl+rdRsNvNYEoYGu5rGLUFcuqIbQ+s40dP2uXwWauwkIvHUjEahkbP0httj4Kg3qIJBRPg7OuS+MOwAnLEAs3hl5zeBV396yA9qjWW8nhnbml58/uFFbfXbJWTM3r8cMpFbHKD+Ojo/99fm5Vy3pAMzNzEsHOaT+iyDYyNkV5OH1GyKK9n7kIRLdqmWe7GmaKXlwVvNUPi3RvLX9VXq83a4BuupFyTmaNfPGMs/17830aleV674+QVgKh3VyFtuJy6KBpMXDv16wFo,iv:S2I3h6pmKLxEc29E0zn2b8lscqA//5/ZMTV9q+/tdvs=,tag:ALeCT+nrVPDfS21xC555sA==,type:str]
restic-ssh-priv-key-benland: ENC[AES256_GCM,data:G+uiYZTvqXhpJb66j6Q6S+otlXeRX0CdYeMHzSMjIbvbI0AVm0yCU7COO5/O8i47NpvrKKS1kVxVEK8ixLRUowkl3hgRXhxsBIPFnpkMD0ENmJttm4HOpi0qIWMwzPYTjkz/slY4HcTFnCfYy1ZpURQdWwZsr1EdAA05bUMTtM22R3uOMzjO8uf72PCWX7yffo8MxsLmWvNVAOhVlrb2H5KQNR/IquFK3TFoZitq5nVDG9tcEFkX+lgA3zsmCHU/2DvvodgeRoltaAFvgjVznNGf4e5p8owHUtSzX52HwGZRiUlMuhpre2gm1r73n8AyZe41II+LX/85fMfZDdyayIGv3AAMBib8H0/AoChexRcdLQEmzOgRrXsgucDJrWSWP6WMBVyamUm79m5ep0fvL1lJftuJqN0uuq9dBrispdso4x+6jk/pDf5pEM/FE6s1rY832BEb7q0PnjyvVogOez+cIihmMpDdnS0A/8TFzg29i3C+93x5vrt3k7atNzR/jN+/GqX2FKLzxWrrIw2d,iv:IP+N8JQu+XRvwTtBnxu54ujzU5UliltXG3mk9HfJaN8=,tag:4oinE9QMaSh8IfUd/ttM3Q==,type:str] restic-ssh-priv-key-benland: ENC[AES256_GCM,data:G+uiYZTvqXhpJb66j6Q6S+otlXeRX0CdYeMHzSMjIbvbI0AVm0yCU7COO5/O8i47NpvrKKS1kVxVEK8ixLRUowkl3hgRXhxsBIPFnpkMD0ENmJttm4HOpi0qIWMwzPYTjkz/slY4HcTFnCfYy1ZpURQdWwZsr1EdAA05bUMTtM22R3uOMzjO8uf72PCWX7yffo8MxsLmWvNVAOhVlrb2H5KQNR/IquFK3TFoZitq5nVDG9tcEFkX+lgA3zsmCHU/2DvvodgeRoltaAFvgjVznNGf4e5p8owHUtSzX52HwGZRiUlMuhpre2gm1r73n8AyZe41II+LX/85fMfZDdyayIGv3AAMBib8H0/AoChexRcdLQEmzOgRrXsgucDJrWSWP6WMBVyamUm79m5ep0fvL1lJftuJqN0uuq9dBrispdso4x+6jk/pDf5pEM/FE6s1rY832BEb7q0PnjyvVogOez+cIihmMpDdnS0A/8TFzg29i3C+93x5vrt3k7atNzR/jN+/GqX2FKLzxWrrIw2d,iv:IP+N8JQu+XRvwTtBnxu54ujzU5UliltXG3mk9HfJaN8=,tag:4oinE9QMaSh8IfUd/ttM3Q==,type:str]
paperless-superuser-password: ENC[AES256_GCM,data:lypWK73mOYI2hyQAW/4T3cDiVtsts3kKb7LZb9ES3n97Kn5l,iv:jBHUBFbb4GqQ3gnK0h5VCaGj3/kd3/eGa1QFiE7+B9I=,tag:UoQar+x1xVnCV2k+9hYjWA==,type:str] paperless-superuser-password: ENC[AES256_GCM,data:lypWK73mOYI2hyQAW/4T3cDiVtsts3kKb7LZb9ES3n97Kn5l,iv:jBHUBFbb4GqQ3gnK0h5VCaGj3/kd3/eGa1QFiE7+B9I=,tag:UoQar+x1xVnCV2k+9hYjWA==,type:str]
factorio-server-settings: ENC[AES256_GCM,data:KlHkHGenkoLtqt0YCETwQdhH0tvvqsyake3lC9Wimso3Y8IXvDfkLpOTE53Jq4frf1QMJh0LYyle+AmIgGvB0gAp/4fM1E4Ah9JPtKkcjVPyQIypuaDsPaVQMxMlJt1+TLX2fbSWdxOo0lulNg==,iv:AHq37PY3ZxKF0+ClUrSvhJSBuXFtGZLBZW/ZADrVqLI=,tag:B0gFyy6rmd6CGJfzAhO02A==,type:str]
sops: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@ -52,8 +51,8 @@ sops:
bGpacHFRSkJYUUMwOEh4cVBXZ1NESmsKa5EhZ7148ojCqZldukLcPLr93HqnpNgq bGpacHFRSkJYUUMwOEh4cVBXZ1NESmsKa5EhZ7148ojCqZldukLcPLr93HqnpNgq
rMI0Nyz4Z4lkTVMRpA94zyNTkNwJ02/CYcKi8EJi6jGZnNPUTcnTwg== rMI0Nyz4Z4lkTVMRpA94zyNTkNwJ02/CYcKi8EJi6jGZnNPUTcnTwg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-22T22:31:46Z" lastmodified: "2024-09-13T05:09:18Z"
mac: ENC[AES256_GCM,data:nCGtkRXZuo3SZLjL2I3fJelaS1g9U4SVdzPZlZPgXzCWVyxokIMFwoSM15HgDu5KsFR+3kIfWVzIQk/lwt9lQPG3O6iUkfPRsIg0dnVrNSauNk0QXR91vCVlDmbFuDUf0C4EVrbE9RRgHzGzToSJYxQHSInMYVhJBcBfdbYZF9A=,iv:qu6p45+ATOs5Ms3bqM8ynXK0tKnN3wNmtwAsc2DSQbU=,tag:xpTeHWawPXfeqq/azPIPPg==,type:str] mac: ENC[AES256_GCM,data:rS12xfQ6FQwVa19rdfk6i1DThUOfsrw+IdKGYOMrX8a7sOKPkNxyxyZASfaKopg3BaM8qmoOFUW4B9VWwTh4d+MhruH3DhJO3UuZpOtDv7H8JFmzqg8rlYx0nm+8/+dB0zjgK7m2FP8wn0jfXraaaQ7/HobgLgGtl+NAsXQkrwQ=,iv:+JO3Yq6Kp2CHu20dSRDOJf0ivq5ASHYrKvlCgg1vGxQ=,tag:y6nIISSZFQwRoFNvqaQWbg==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.9.0 version: 3.9.0

View file

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

View file

@ -1,16 +1,81 @@
{ {
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 = inputs: let outputs = {
inherit (import nix/boilerplate.nix inputs) call; self,
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 {
overlays = import nix/overlays.nix; packages = forAllSystems (system: let
packages = call (import nix/packages.nix); pkgs = nixpkgsFor system;
checks = call (import nix/checks.nix);
devShells = call (import nix/shells.nix); inherit (pkgs) beamPackages;
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

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

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

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

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

@ -1,15 +0,0 @@
{
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,12 +20,16 @@
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;
@ -36,7 +40,7 @@
packages = genPkgs (pkgs: { packages = genPkgs (pkgs: {
my-package = pkgs.rustPlatform.buildRustPackage { my-package = pkgs.rustPlatform.buildRustPackage {
pname = "my-package"; pname = "kodotag";
version = "0.1.0"; version = "0.1.0";
/* /*