Compare commits

..

16 commits

Author SHA1 Message Date
6543506115
Flake, flake-part+easy-host, remove unused inputs
IF YOU ARE NOT ME: I would not use this configuration. In the past I
would feel confident telling you to drop in your own host and be off to
the races, but right now users are in a state which required hard coding
some of my nominal preferences. Read on for more specifics

Completely refactors the flake.nix part of the repo. This removes my
strange legacy code for directory-based hosts+users in favor of using
easy-host and flake-parts.

As a result of this some specialArgs were lost, namely the list of users
and the username being passed. I think this is the right way to go in
the short term, but it has lead to some hardcoded values. Namely "pan"
is created as a user regardless of configuration

In tandem with this is the deprecation of some modules which had inputs
in flake which I wasn't using. I'm sure there is a better way to do
this, but I didn't like downloading and caching them every time when I
knew I wasn't using them.

I'm currently very unhappy with the users part of this change, but that
wasn't the goal of this branch. I will revisit in a larger commit.
2025-11-19 13:07:08 -08:00
98ad425b01
Gitignore, add result directory 2025-11-19 09:38:33 -08:00
5bddc3384b
Flake update 2025-11-05 & Niri fix 2025-11-17 09:25:24 -08:00
1e89810074
Caddy, DNS Challenges; Headscale, Magic_dns
Changed to using Porkbun DNS Challenges for Caddy. This enables wildcard
certificates. Documentation
- https://caddyserver.com/docs/caddyfile/patterns#wildcard-certificates
- https://caddyserver.com/docs/automatic-https#dns-challenge

Changed headscale to use a domain I own instead of the beautiful madoka
OP.
2025-11-05 08:25:01 -08:00
0447a25a77
Greetd, switch to direct packages 2025-09-16 18:33:29 -07:00
41e952efaf
Onizuka, update extra packages 2025-09-16 18:33:29 -07:00
ec38f08e3c
Onizuka, vertical second monitor 2025-09-16 18:33:29 -07:00
5c996e0885
Fava, change port to number; open port 2025-09-16 17:35:34 -07:00
a2939e5613
Fava, change ledgers to list 2025-09-15 11:52:12 -07:00
1de1ba027b
Pds, change pds to bluesky-pds 2025-09-15 10:42:36 -07:00
641e226f9b
Fava, setup service; enable for Juri 2025-09-15 10:38:44 -07:00
0ce82962bb
OSAuto, add extraPkgs option to OS 2025-09-15 10:38:44 -07:00
3a49fecf1d
Syncthing, add jibril to wiki 2025-09-15 09:15:39 -07:00
78a0ccb71a
Flake update 2025-09-05 2025-09-05 20:31:36 -07:00
991c4aae0a
Syncthing, add kobayashi to wiki 2025-08-11 09:15:01 -07:00
e1d54a6850
Flake update 2025-08-07 2025-08-07 21:06:20 -07:00
27 changed files with 600 additions and 1157 deletions

1
.gitignore vendored
View file

@ -0,0 +1 @@
result

771
flake.lock generated
View file

@ -1,140 +1,50 @@
{ {
"nodes": { "nodes": {
"aagl": { "easy-hosts": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs"
},
"locked": { "locked": {
"lastModified": 1750597689, "lastModified": 1755470564,
"narHash": "sha256-3ComII0BkmdohISrshICQiAB6TU+VHHIRnWK0ckA0/s=", "narHash": "sha256-KB1ZryVDoQcbIsItOf4WtxkHhh3ppj+XwMpSnt/2QHc=",
"owner": "ezKEa", "owner": "tgirlcloud",
"repo": "aagl-gtk-on-nix", "repo": "easy-hosts",
"rev": "ec2ec4ec3f908ed9b125ea4afd52627bed60f183", "rev": "d0422bc7b3db26268982aa15d07e60370e76ee1d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "ezKEa", "owner": "tgirlcloud",
"repo": "aagl-gtk-on-nix", "repo": "easy-hosts",
"type": "github" "type": "github"
} }
}, },
"ags": { "flake-parts": {
"inputs": { "inputs": {
"astal": "astal", "nixpkgs-lib": [
"gnim": "gnim",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1751930350,
"narHash": "sha256-hBIrzyrwG3XjeNyzVNWKDX+yYVlpwAqf9ovgF7qecug=",
"owner": "Aylur",
"repo": "ags",
"rev": "22f37ccb0db58d9d8a11ad0054ab20ecfad005ad",
"type": "github"
},
"original": {
"owner": "Aylur",
"repo": "ags",
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751740947,
"narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"astal": {
"inputs": {
"nixpkgs": [
"ags",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1751126708, "lastModified": 1762980239,
"narHash": "sha256-AodIKw7TmI7rHVcOfEsO82stupMYIMVQeLAUQfVxnkU=", "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
"owner": "aylur", "owner": "hercules-ci",
"repo": "astal", "repo": "flake-parts",
"rev": "ac90f09385a2295da9fdc108aaba4a317aaeacc7", "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "aylur", "owner": "hercules-ci",
"repo": "astal", "repo": "flake-parts",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"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" "type": "github"
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1731533236,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -158,54 +68,18 @@
"type": "github" "type": "github"
} }
}, },
"gitignore": {
"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"
}
},
"gnim": {
"flake": false,
"locked": {
"lastModified": 1751928958,
"narHash": "sha256-vQY2L+Hnp6F1MHFa3UbMft1goGw3iODI5M+96Z7P+9Q=",
"owner": "aylur",
"repo": "gnim",
"rev": "9bffa83f52f711b13e3c139454623a9aea4f5552",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "gnim",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1752093218, "lastModified": 1763416652,
"narHash": "sha256-+3rXu8ewcNDi65/2mKkdSGrivQs5zEZVp5aYszXC0d0=", "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "206ed3c71418b52e176f16f58805c96e84555320", "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -214,331 +88,60 @@
"type": "github" "type": "github"
} }
}, },
"hyprcursor": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749155331,
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprgraphics": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751808145,
"narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_4",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1752149340,
"narHash": "sha256-DJc2ROpttbP6FHcXwWpmK7EB2cpVsP/LmXjEr8RWcO8=",
"ref": "refs/heads/main",
"rev": "b5433bb75324a95dd27eb5492141565466c2cdd6",
"revCount": 6265,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
},
"original": {
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
}
},
"hyprland-contrib": {
"inputs": {
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1752069516,
"narHash": "sha256-dyzDJvt8IVgHJVmpnw1mueHHSLYnChW1XMkwz9WUBZ8=",
"owner": "hyprwm",
"repo": "contrib",
"rev": "34d0c01910552b873a07c96921ef70e32bf369a2",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "contrib",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749046714,
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1749154592,
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371198,
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751888065,
"narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "a8229739cf36d159001cfc203871917b83fdf917",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751881472,
"narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"lix": { "lix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1729298361, "lastModified": 1763570812,
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=", "narHash": "sha256-A42G8ulTZ1MFCR0VsLF21CoKi0XKGUYwtVBHGm5mFgQ=",
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be", "rev": "f3b2f3496bd6d346cba475d0ba152a9d3a83dec7",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be" "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/f3b2f3496bd6d346cba475d0ba152a9d3a83dec7.tar.gz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz" "url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
} }
}, },
"lix-module": { "lix-module": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"flakey-profile": "flakey-profile", "flakey-profile": "flakey-profile",
"lix": "lix", "lix": [
"nixpkgs": "nixpkgs_6" "lix"
],
"nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1732605668, "lastModified": 1763435414,
"narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=", "narHash": "sha256-i2467FddWfd19q5Qoj+1/BAeg6LZmM5m4mYGRSQn/as=",
"rev": "f19bd752910bbe3a861c9cad269bd078689d50fe", "rev": "192c92b603731fbc1bade6c1b18c8d8a0086f703",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz" "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/192c92b603731fbc1bade6c1b18c8d8a0086f703.tar.gz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz" "url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
} }
}, },
"niri": { "niri": {
"inputs": { "inputs": {
"niri-stable": "niri-stable", "niri-stable": "niri-stable",
"niri-unstable": "niri-unstable", "niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_7", "nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable", "xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1752078530, "lastModified": 1763538184,
"narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=", "narHash": "sha256-6umNY06L6ZUjinthjVZIwyWyAjxOXSPhXfY0U1CVTWw=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf", "rev": "85a16f400641eed912431efcec16f12e2100d46a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -550,16 +153,16 @@
"niri-stable": { "niri-stable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748151941, "lastModified": 1756556321,
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "YaLTeR", "owner": "YaLTeR",
"ref": "v25.05.1", "ref": "v25.08",
"repo": "niri", "repo": "niri",
"type": "github" "type": "github"
} }
@ -567,11 +170,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1750791124, "lastModified": 1763531615,
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=", "narHash": "sha256-cMi8tz+0+gWtlYqVnyMv7phOeQ0/4WmzZ/lxCyraUVw=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c", "rev": "c722634c269ae97a5ea185691bcd0b8c73a600e5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -582,27 +185,24 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1748460289, "lastModified": 1763464769,
"narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "narHash": "sha256-mU85VDFRIgKGq1EhT71bLjhvjJ5yuMEe0Ip1kwCbR80=",
"owner": "nixos", "rev": "6f374686605df381de8541c072038472a5ea2e2d",
"repo": "nixpkgs", "type": "tarball",
"rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre898015.6f374686605d/nixexprs.tar.xz"
"type": "github"
}, },
"original": { "original": {
"owner": "nixos", "type": "tarball",
"ref": "nixos-unstable", "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
"repo": "nixpkgs",
"type": "github"
} }
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1751943650, "lastModified": 1763334038,
"narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "88983d4b665fb491861005137ce2b11a9f89f203", "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -612,179 +212,30 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1751637120,
"narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1712163089,
"narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1729070438,
"narHash": "sha256-KOTTUfPkugH52avUvXGxvWy8ibKKj4genodIYUED+Kc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5785b6bb5eaae44e627d541023034e1601455827",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1751984180,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1751984180,
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1744868846,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1750779888,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"aagl": "aagl", "easy-hosts": "easy-hosts",
"ags": "ags", "flake-parts": "flake-parts",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "lix": "lix",
"hyprland-contrib": "hyprland-contrib",
"lix-module": "lix-module", "lix-module": "lix-module",
"niri": "niri", "niri": "niri",
"nixpkgs": "nixpkgs_8", "nixpkgs": "nixpkgs",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_9" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1751606940, "lastModified": 1763509310,
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=", "narHash": "sha256-s2WzTAD3vJtPACBCZXezNUMTG/wC6SFsU9DxazB9wDI=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d", "rev": "3ee33c0ed7c5aa61b4e10484d2ebdbdc98afb03e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -794,21 +245,6 @@
} }
}, },
"systems": { "systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -823,60 +259,19 @@
"type": "github" "type": "github"
} }
}, },
"xdph": {
"inputs": {
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751300244,
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
},
"xwayland-satellite-stable": { "xwayland-satellite-stable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748488455, "lastModified": 1755491097,
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=", "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73", "rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Supreeeme", "owner": "Supreeeme",
"ref": "v0.6", "ref": "v0.7",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"type": "github" "type": "github"
} }
@ -884,11 +279,11 @@
"xwayland-satellite-unstable": { "xwayland-satellite-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1751228685, "lastModified": 1762747449,
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=", "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b", "rev": "6338574bc5c036487486acde264f38f39ea15fad",
"type": "github" "type": "github"
}, },
"original": { "original": {

159
flake.nix
View file

@ -1,94 +1,89 @@
{ {
inputs = { outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
nixpkgs.url = "nixpkgs/nixos-unstable"; imports = with inputs; [
easy-hosts.flakeModule
home-manager.flakeModules.home-manager
];
home-manager.url = "github:nix-community/home-manager"; systems = [ "x86_64-linux" ];
easy-hosts = {
autoConstruct = true;
path = ./hosts;
onlySystem = "x86_64-nixos";
lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"; shared = {
modules = [
inputs.lix-module.nixosModules.default
./nixosModules
];
};
};
hyprland.url = "git+https://github.com/hyprwm/Hyprland"; flake = {
hyprland-contrib.url = "github:hyprwm/contrib"; homeConfigurations = let
userConfig = system: extraModules:
niri.url = "github:sodiboo/niri-flake"; inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = { inherit inputs; };
sops-nix.url = "github:Mic92/sops-nix"; pkgs = inputs.nixpkgs.legacyPackages.${system};
ags.url = "github:Aylur/ags"; modules = [ ./hmModules ] ++ extraModules;
aagl.url = "github:ezKEa/aagl-gtk-on-nix"; };
in {
"pan@juri" = userConfig "x86_64-linux" [ ./users/juri ];
"pan@jibril" = userConfig "x86_64-linux" [ ./users/jibril ];
"pan@onizuka" = userConfig "x86_64-linux" [ ./users/onizuka ];
};
};
}; };
outputs = { self, home-manager, nixpkgs, lix-module, ... }@inputs: let inputs = {
system = "x86_64-linux"; # Save data with this url. Source:
pkgs = nixpkgs.legacyPackages.${system}; # at://did:plc:mojgntlezho4qt7uvcfkdndg/app.bsky.feed.post/3loogwsoqok2w
fs = pkgs.lib.fileset; # cid: bafyreidhuuxs3cuabneygtxir65hnd7hvy4hwj5rwrylpwmp7jhxciasve
st = pkgs.lib.strings; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
as = pkgs.lib.attrsets;
hosts = let home-manager = {
hostFilter = { name, ...}: name == "host.nix"; type = "github";
hostPaths = fs.toList (fs.fileFilter hostFilter ./hosts); owner = "nix-community";
# Assumes dir structure is start_of_path/hosts/hostname/host.nix repo = "home-manager";
extractHostName = path: builtins.unsafeDiscardStringContext ( inputs.nixpkgs.follows = "nixpkgs";
st.removeSuffix "/host.nix" (
builtins.elemAt (st.splitString "/hosts/" path) 1
)
);
in builtins.listToAttrs (map (path: {
value = path;
name = extractHostName path;
}) hostPaths);
users = let
userFilter = { name, ...}: name == "user.nix";
userPaths = fs.toList (fs.fileFilter userFilter ./hosts);
in builtins.listToAttrs (map (path: let
dirsAndFiles = st.splitString "/" path;
dAFLength = builtins.length dirsAndFiles;
# Assumes dir structure is start_of_path/hosts/hostname/users/username/user.nix
hostname = builtins.unsafeDiscardStringContext (
builtins.elemAt dirsAndFiles (dAFLength - 4));
username = builtins.unsafeDiscardStringContext (
builtins.elemAt dirsAndFiles (dAFLength - 2));
in {
name = username + "@" + hostname;
value = path;
}
) userPaths);
userConfig = usernameAtHostname: userpath: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit inputs;
inherit usernameAtHostname;
};
modules = [
./hmModules
userpath
];
}; };
hostConfig = hostname: hostpath: nixpkgs.lib.nixosSystem { flake-parts = {
specialArgs = let type = "github";
hostFilteredUsers = as.filterAttrs ( owner = "hercules-ci";
name: value: let repo = "flake-parts";
userHostname = builtins.elemAt (st.splitString "@" name) 1; inputs.nixpkgs-lib.follows = "nixpkgs";
in userHostname == hostname };
) users;
easy-hosts = {
hostUsers = as.mapAttrsToList ( type = "github";
name: value: builtins.elemAt (st.splitString "@" name) 0 owner = "tgirlcloud";
) hostFilteredUsers; repo = "easy-hosts";
in { };
inherit inputs;
inherit hostname; lix = {
"usernameList" = hostUsers; url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
}; flake = false;
modules = [ };
./nixosModules
hostpath lix-module = {
]; url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
inputs.lix.follows = "lix";
};
niri = {
type = "github";
owner = "sodiboo";
repo = "niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
type = "github";
owner = "Mic92";
repo = "sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
}; };
in {
nixosConfigurations = builtins.mapAttrs (name: path: hostConfig name path) hosts;
homeConfigurations = builtins.mapAttrs (name: path: userConfig name path) users;
}; };
} }

View file

@ -12,10 +12,12 @@
config = lib.mkIf config.git.enable { config = lib.mkIf config.git.enable {
programs.git = { programs.git = {
enable = true; enable = true;
userName = config.git.username; settings = {
userEmail = config.git.email; user = {
extraConfig = { name = config.git.username;
user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub"; email = config.git.email;
signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
};
gpg.format = "ssh"; gpg.format = "ssh";
commit.gpgSign = "true"; commit.gpgSign = "true";
tag.gpgSign = "true"; tag.gpgSign = "true";

View file

@ -1,5 +1,5 @@
{ config, inputs, pkgs, lib, ... }: { config, lib, ... }:
let rootPath = ./.; in # let rootPath = ./.; in
{ {
options.hypr = { options.hypr = {
enable = lib.mkEnableOption "Enables hyprland"; enable = lib.mkEnableOption "Enables hyprland";
@ -34,220 +34,224 @@ let rootPath = ./.; in
polkit.enable = lib.mkEnableOption "Enables polkit agent"; polkit.enable = lib.mkEnableOption "Enables polkit agent";
screenshot.enable = lib.mkEnableOption "Enables Screenshotting"; screenshot.enable = lib.mkEnableOption "Enables Screenshotting";
}; };
config.warnings = lib.mkIf config.hypr.enable [''
hypr.* has been deprecated to allow the removal of hyprland from flake inputs.
''];
imports = [ inputs.hyprland.homeManagerModules.default ]; # imports = [ inputs.hyprland.homeManagerModules.default ];
config = let # config = let
lopts = lib.lists.optionals; # lopts = lib.lists.optionals;
in { # in {
nix.settings = { # nix.settings = {
substituters = ["https://hyprland.cachix.org"]; # substituters = ["https://hyprland.cachix.org"];
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; # trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
}; # };
} // lib.mkIf config.hypr.enable { # } // lib.mkIf config.hypr.enable {
wayland.windowManager.hyprland = let # wayland.windowManager.hyprland = let
mod = config.hypr.mod_key; # mod = config.hypr.mod_key;
# p-s = let # # p-s = let
# chw = config.hypr.workspace; # # chw = config.hypr.workspace;
# findDefaultWs = id: if (builtins.hasAttr id chw.workspaces) # # findDefaultWs = id: if (builtins.hasAttr id chw.workspaces)
# then (builtins.head (builtins.getAttr id chw.workspaces)) # # then (builtins.head (builtins.getAttr id chw.workspaces))
# else ""; # # else "";
# in with config.hypr.workspace; lib.mkIf primary-secondary.enable { # # in with config.hypr.workspace; lib.mkIf primary-secondary.enable {
# primaryWs = findDefaultWs primary-secondary.primary; # # primaryWs = findDefaultWs primary-secondary.primary;
# secondaryWs = findDefaultWs primary-secondary.secondary; # # secondaryWs = findDefaultWs primary-secondary.secondary;
# }; # # };
in { # in {
enable = true; # enable = true;
settings = { # settings = {
monitor = config.hypr.monitor.details; # monitor = config.hypr.monitor.details;
workspace = let # workspace = let
wsMonitor = monitor: wrksps: map (ws: # wsMonitor = monitor: wrksps: map (ws:
if ws == (builtins.head wrksps) # if ws == (builtins.head wrksps)
then "name:"+ws+", monitor:"+monitor+", persistent:true, default:true" # then "name:"+ws+", monitor:"+monitor+", persistent:true, default:true"
else "name:"+ws+", monitor:"+monitor+", persistent:true" # else "name:"+ws+", monitor:"+monitor+", persistent:true"
) wrksps; # ) wrksps;
makeRules = wsAttr: builtins.concatLists (builtins.attrValues ( # makeRules = wsAttr: builtins.concatLists (builtins.attrValues (
builtins.mapAttrs wsMonitor wsAttr # builtins.mapAttrs wsMonitor wsAttr
)); # ));
in makeRules config.hypr.workspace.workspaces # in makeRules config.hypr.workspace.workspaces
++ [ # ++ [
"w[t1], gapsout:0, gapsin:0" # "w[t1], gapsout:0, gapsin:0"
"w[tg1], gapsout:0, gapsin:0" # "w[tg1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0" # "f[1], gapsout:0, gapsin:0"
] # ]
++ lopts config.hypr.workspace.scratchpad.enable [ # ++ lopts config.hypr.workspace.scratchpad.enable [
"special:scratch, on-created-empty: [float; size 50% 50%; center] ${config.defaultApps.terminal}" # "special:scratch, on-created-empty: [float; size 50% 50%; center] ${config.defaultApps.terminal}"
]; # ];
input = { # input = {
accel_profile = "flat"; # accel_profile = "flat";
sensitivity = config.hypr.mouse.sensitivity; # sensitivity = config.hypr.mouse.sensitivity;
}; # };
general = { # general = {
gaps_in = 3; # gaps_in = 3;
gaps_out = 3; # gaps_out = 3;
border_size = 2; # border_size = 2;
"col.active_border" = "rgb(F5C2E7)"; # "col.active_border" = "rgb(F5C2E7)";
"col.inactive_border" = "rgb(1E1D2F)"; # "col.inactive_border" = "rgb(1E1D2F)";
layout = "master"; # layout = "master";
}; # };
decoration = { # decoration = {
rounding = 2; # rounding = 2;
blur = { # blur = {
enabled = true; # enabled = true;
size = 12; # size = 12;
passes = 2; # passes = 2;
special = true; # special = true;
}; # };
}; # };
animation = [ # animation = [
"windows, 1, 4, default, popin 50%" # "windows, 1, 4, default, popin 50%"
"windowsOut, 1, 4, default, popin 50%" # "windowsOut, 1, 4, default, popin 50%"
"windowsMove, 1, 3, default" # "windowsMove, 1, 3, default"
"border, 1, 3, default" # "border, 1, 3, default"
"fade, 1, 3, default" # "fade, 1, 3, default"
"workspaces, 1, 3, default" # "workspaces, 1, 3, default"
]; # ];
master = { # master = {
mfact = config.hypr.master.mfact; # mfact = config.hypr.master.mfact;
}; # };
misc = { # misc = {
focus_on_activate = true; # focus_on_activate = true;
}; # };
#
exec-once = lopts config.hypr.polkit.enable [ # exec-once = lopts config.hypr.polkit.enable [
"${pkgs.kdePackages.polkit-kde-agent-1}/bin/libexec/polkit-kde-authentication-agent-1" # "${pkgs.kdePackages.polkit-kde-agent-1}/bin/libexec/polkit-kde-authentication-agent-1"
] ++ lopts config.hypr.background.enable [ # ] ++ lopts config.hypr.background.enable [
"${pkgs.swww}/bin/swww-daemon" # "${pkgs.swww}/bin/swww-daemon"
"${pkgs.swww}/bin/swww img ${config.hypr.background.path}" # "${pkgs.swww}/bin/swww img ${config.hypr.background.path}"
] ++ lopts config.ags.enable [ # ] ++ lopts config.ags.enable [
"ags" # "ags"
] ++ lopts config.beeper.enable [ # ] ++ lopts config.beeper.enable [
"[workspace name:chat silent] Beeper" # "[workspace name:chat silent] Beeper"
]; # ];
#
env = with config.hypr; [ # env = with config.hypr; [
# "HYPR_MON_PRIMARY, ${workspace.primary-secondary.primary}" # # "HYPR_MON_PRIMARY, ${workspace.primary-secondary.primary}"
# "HYPR_MON_SECONDARY, ${workspace.primary-secondary.secondary}" # # "HYPR_MON_SECONDARY, ${workspace.primary-secondary.secondary}"
"HYPR_WORK_DB, ${config.xdg.cacheHome}/hypr/workspace.db" # "HYPR_WORK_DB, ${config.xdg.cacheHome}/hypr/workspace.db"
] ++ lopts cursor.enable [ # ] ++ lopts cursor.enable [
"HYPRCURSOR_THEME,${cursor.theme}" # "HYPRCURSOR_THEME,${cursor.theme}"
"HYPRCURSOR_SIZE,${cursor.size}" # "HYPRCURSOR_SIZE,${cursor.size}"
] ++ lopts config.nvidia.enable [ # ] ++ lopts config.nvidia.enable [
"LIBVA_DRIVER_NAME,nvidia" # "LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland" # "XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm" # "GBM_BACKEND,nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME,nvidia" # "__GLX_VENDOR_LIBRARY_NAME,nvidia"
"WLR_RENDERER_ALLOW_SOFTWARE,1" # "WLR_RENDERER_ALLOW_SOFTWARE,1"
"WLR_DRM_DEVICES,/dev/dri/card1" # "WLR_DRM_DEVICES,/dev/dri/card1"
]; # ];
#
windowrulev2 = let # windowrulev2 = let
workspaceDefaults = wsname: applist: map ( # workspaceDefaults = wsname: applist: map (
app: "workspace " + wsname + ", " + app # app: "workspace " + wsname + ", " + app
) applist; # ) applist;
allDefault = wsAttr: builtins.concatLists (builtins.attrValues ( # allDefault = wsAttr: builtins.concatLists (builtins.attrValues (
builtins.mapAttrs workspaceDefaults wsAttr # builtins.mapAttrs workspaceDefaults wsAttr
)); # ));
in allDefault config.hypr.workspace.defaults # in allDefault config.hypr.workspace.defaults
++ [ # ++ [
"bordersize 0, floating:0, onworkspace:w[t1]" # "bordersize 0, floating:0, onworkspace:w[t1]"
"rounding 0, floating:0, onworkspace:w[t1]" # "rounding 0, floating:0, onworkspace:w[t1]"
"bordersize 0, floating:0, onworkspace:w[tg1]" # "bordersize 0, floating:0, onworkspace:w[tg1]"
"rounding 0, floating:0, onworkspace:w[tg1]" # "rounding 0, floating:0, onworkspace:w[tg1]"
"bordersize 0, floating:0, onworkspace:f[1]" # "bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]" # "rounding 0, floating:0, onworkspace:f[1]"
] # ]
++ lopts config.hypr.xwayland.videobridge.enable [ # ++ lopts config.hypr.xwayland.videobridge.enable [
"opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$" # "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$"
"noanim,class:^(xwaylandvideobridge)$" # "noanim,class:^(xwaylandvideobridge)$"
"noinitialfocus,class:^(xwaylandvideobridge)$" # "noinitialfocus,class:^(xwaylandvideobridge)$"
"maxsize 1 1,class:^(xwaylandvideobridge)$" # "maxsize 1 1,class:^(xwaylandvideobridge)$"
"noblur,class:^(xwaylandvideobridge)$" # "noblur,class:^(xwaylandvideobridge)$"
] ++ map (id: "opacity 1 override, " + id) config.hypr.windows.opaque # ] ++ map (id: "opacity 1 override, " + id) config.hypr.windows.opaque
++ [ # ++ [
"opacity 0.94 fullscreen:0" # "opacity 0.94 fullscreen:0"
"opacity 0.79 override, class:^(${config.defaultApps.terminal})$" # "opacity 0.79 override, class:^(${config.defaultApps.terminal})$"
]; # ];
#
# 1, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh home # # 1, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh home
# 2, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh web # # 2, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh web
# 3, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh med # # 3, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh med
# 4, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh game # # 4, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh game
# 5, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh etc # # 5, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh etc
# _, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh hell # # _, exec, $XDG_CONFIG_HOME/hypr/scripts/changeprimary.xsh hell
# TAB, exec, $XDG_CONFIG_HOME/hypr/scripts/changesecondary.xsh # # TAB, exec, $XDG_CONFIG_HOME/hypr/scripts/changesecondary.xsh
# # #
# SHIFT, 1, movetoworkspacesilent, name:home # # SHIFT, 1, movetoworkspacesilent, name:home
# SHIFT, 2, movetoworkspacesilent, name:web # # SHIFT, 2, movetoworkspacesilent, name:web
# SHIFT, 3, movetoworkspacesilent, name:med # # SHIFT, 3, movetoworkspacesilent, name:med
# SHIFT, 4, movetoworkspacesilent, name:game # # SHIFT, 4, movetoworkspacesilent, name:game
# SHIFT, TAB, movetoworkspacesilent, r-1 # # SHIFT, TAB, movetoworkspacesilent, r-1
#
bind = let # bind = let
modPrefix = kb: if (lib.strings.hasPrefix "&" kb) # modPrefix = kb: if (lib.strings.hasPrefix "&" kb)
then ("${mod}" + kb) # then ("${mod}" + kb)
else ("${mod}, " + kb); # else ("${mod}, " + kb);
in map modPrefix ([ # in map modPrefix ([
"Return, exec, ${config.defaultApps.terminal}" # "Return, exec, ${config.defaultApps.terminal}"
"&SHIFT, Q, exit" # "&SHIFT, Q, exit"
"h, focusmonitor, l" # "h, focusmonitor, l"
"l, focusmonitor, r" # "l, focusmonitor, r"
"j, cyclenext," # "j, cyclenext,"
"k, cyclenext, prev" # "k, cyclenext, prev"
"&SHIFT, h, movecurrentworkspacetomonitor, -1" # "&SHIFT, h, movecurrentworkspacetomonitor, -1"
"&SHIFT, l, movecurrentworkspacetomonitor, +1" # "&SHIFT, l, movecurrentworkspacetomonitor, +1"
"&SHIFT, j, swapnext," # "&SHIFT, j, swapnext,"
"&SHIFT, k, swapnext, prev" # "&SHIFT, k, swapnext, prev"
"c, killactive" # "c, killactive"
"f, togglefloating" # "f, togglefloating"
"&SHIFT, f, fullscreen" # "&SHIFT, f, fullscreen"
] ++ (let # ] ++ (let
workspaces = builtins.concatLists ( # workspaces = builtins.concatLists (
builtins.attrValues config.hypr.workspace.workspaces); # builtins.attrValues config.hypr.workspace.workspaces);
wsBinds = with builtins; wrksps: depth: if depth > (length wrksps) # wsBinds = with builtins; wrksps: depth: if depth > (length wrksps)
then [] # then []
else let ws = builtins.elemAt wrksps (depth -1); in [ # else let ws = builtins.elemAt wrksps (depth -1); in [
"${toString depth}, workspace, name:${ws}" # "${toString depth}, workspace, name:${ws}"
"&SHIFT, ${toString depth}, movetoworkspacesilent, name:${ws}" # "&SHIFT, ${toString depth}, movetoworkspacesilent, name:${ws}"
] ++ wsBinds wrksps (depth + 1); # ] ++ wsBinds wrksps (depth + 1);
in wsBinds workspaces 1) ++ lopts config.rofi.enable [ # in wsBinds workspaces 1) ++ lopts config.rofi.enable [
"&SHIFT, return, exec, ${pkgs.rofi}/bin/rofi -show run" # "&SHIFT, return, exec, ${pkgs.rofi}/bin/rofi -show run"
] ++ lopts config.hypr.screenshot.enable [ # ] ++ lopts config.hypr.screenshot.enable [
"P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copy area" # "P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copy area"
"&SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copysave area" # "&SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast --freeze copysave area"
] ++ lopts config.hypr.workspace.scratchpad.enable [ # ] ++ lopts config.hypr.workspace.scratchpad.enable [
"i, togglespecialworkspace, scratch" # "i, togglespecialworkspace, scratch"
]); # ]);
#
bindm = map (kb: "${mod}, " + kb) [ # bindm = map (kb: "${mod}, " + kb) [
"mouse:272, movewindow" # "mouse:272, movewindow"
"mouse:273, movewindow" # "mouse:273, movewindow"
]; # ];
}; # };
}; # };
#
home.packages = with pkgs; [ # home.packages = with pkgs; [
wlr-randr # Xrandr for wayland # wlr-randr # Xrandr for wayland
wl-clipboard # Clipboard manager for wayland # wl-clipboard # Clipboard manager for wayland
] ++ lopts config.hypr.xwayland.videobridge.enable [ # ] ++ lopts config.hypr.xwayland.videobridge.enable [
kdePackages.xwaylandvideobridge # kdePackages.xwaylandvideobridge
] ++ lopts config.hypr.cursor.enable [ # ] ++ lopts config.hypr.cursor.enable [
hyprcursor # hyprcursor
] ++ lopts config.hypr.screenshot.enable [ # ] ++ lopts config.hypr.screenshot.enable [
hyprpicker # Colorpicker, needed for screenshot tool # hyprpicker # Colorpicker, needed for screenshot tool
inputs.hyprland-contrib.packages.${pkgs.system}.grimblast # inputs.hyprland-contrib.packages.${pkgs.system}.grimblast
]; # ];
#
xdg.configFile."hypr-scripts" = { # xdg.configFile."hypr-scripts" = {
source = rootPath + "/scripts"; # source = rootPath + "/scripts";
target = "hypr/scripts"; # target = "hypr/scripts";
executable = true; # executable = true;
}; # };
#
xdg.dataFile."hypr-icons" = lib.mkIf config.hypr.cursor.enable { # xdg.dataFile."hypr-icons" = lib.mkIf config.hypr.cursor.enable {
source = rootPath + "/icons"; # source = rootPath + "/icons";
target = "icons/"; # target = "icons/";
recursive = true; # recursive = true;
}; # };
}; # };
} }

View file

@ -33,7 +33,7 @@
relativenumber = true; relativenumber = true;
}; };
commands = { commands = {
dragon-out = ''%${pkgs.xdragon}/bin/xdragon -a -x "$fx"''; dragon-out = ''%${pkgs.dragon-drop}/bin/dragon-drop -a -x "$fx"'';
trash = lib.mkIf config.trash.enable '' trash = lib.mkIf config.trash.enable ''
%${pkgs.trash-cli}/bin/trash "$fx" %${pkgs.trash-cli}/bin/trash "$fx"
''; '';

View file

@ -53,8 +53,8 @@
binds = with config.lib.niri.actions; { binds = with config.lib.niri.actions; {
"Mod+Return".action= spawn "${config.defaultApps.terminal}"; "Mod+Return".action= spawn "${config.defaultApps.terminal}";
"Mod+Shift+Return".action = spawn "${pkgs.fuzzel}/bin/fuzzel"; "Mod+Shift+Return".action = spawn "${pkgs.fuzzel}/bin/fuzzel";
"Mod+P".action = screenshot; "Mod+P".action.screenshot = [];
"Mod+Shift+P".action = screenshot-window; "Mod+Shift+P".action.screenshot-window = [];
"Mod+Tab".action = switch-preset-column-width; "Mod+Tab".action = switch-preset-column-width;
"Mod+Shift+Q".action = quit; "Mod+Shift+Q".action = quit;

View file

@ -1,4 +1,4 @@
{ config, lib, usernameAtHostname, ... }: { config, lib, ... }:
{ {
options = { options = {
@ -9,17 +9,15 @@
browser = lib.mkOption { default = ""; }; browser = lib.mkOption { default = ""; };
}; };
}; };
config = let config = {
st = lib.strings;
in {
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
home.stateVersion = "23.05"; home.stateVersion = "23.05";
home = { home = {
username = builtins.elemAt (st.splitString "@" usernameAtHostname) 0; username = "pan";
homeDirectory = "/home/" + config.home.username; homeDirectory = "/home/pan";
packages = config.extraPkgs; packages = config.extraPkgs;
}; };

View file

@ -1,25 +1,30 @@
{ config, inputs, pkgs, lib, ... }: { config, lib, ... }:
{ {
options.ags = { options.ags = {
enable = lib.mkEnableOption "Enable ags"; enable = lib.mkEnableOption "Enable ags";
}; };
config.warnings = lib.mkIf config.ags.enable [''
ags.enable has been deprecated to allow the removal of ags from flake
inputs.
''];
imports = [ inputs.ags.homeManagerModules.default ]; # imports = [ inputs.ags.homeManagerModules.default ];
config = lib.mkIf config.ags.enable { # config = lib.mkIf config.ags.enable {
home.packages = with pkgs; [ # home.packages = with pkgs; [
libnotify # Notifications through ags # libnotify # Notifications through ags
]; # ];
programs.ags = { # programs.ags = {
enable = true; # enable = true;
configDir = ./config; # configDir = ./config;
#
extraPackages = with pkgs; [ # extraPackages = with pkgs; [
gtksourceview # gtksourceview
webkitgtk # webkitgtk
accountsservice # accountsservice
]; # ];
}; # };
}; # };
} }

View file

@ -1,23 +0,0 @@
{ pkgs, ... }:
{
systemd.timers."bsky-announcements" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "20s";
# OnCalendar = "Thu *-*-* 8:00:00 America/Los_Angeles";
# Persistent = true;
Unit = "bsky-announcements.service";
};
};
systemd.services."bsky-announcements" = {
script = ''
set -eu
${pkgs.coreutils}/bin/echo "Hello World"
'';
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
}

View file

@ -2,9 +2,29 @@
let let
email = "admin@woach.me"; email = "admin@woach.me";
in { in {
imports = [
./hardware.nix ];
system.stateVersion = "24.11";
system.timezone = "America/Los_Angeles";
system.users.bigWheels = [ "pan" ];
sops-nix = {
enable = true;
keyFile = "/etc/sops/age/keys.txt";
sopsFile = ./secrets.yaml;
secrets = {
pdsEnv = {};
forgejoPassword = {
owner = "forgejo";
};
caddyApi = {};
};
};
caddy = { caddy = {
enable = true; enable = true;
adminEmail = email; adminEmail = email;
environmentFile = config.sops.secrets.caddyApi.path;
vhosts = { vhosts = {
"juri.woach.me" = { "juri.woach.me" = {
extraConfig = '' extraConfig = ''
@ -21,6 +41,12 @@ in {
extraConfig = '' extraConfig = ''
reverse_proxy :${builtins.toString config.headscale.server.port} reverse_proxy :${builtins.toString config.headscale.server.port}
''; '';
serverAliases = [ "*.dns.ginko.woach.me" ];
};
"juri.${config.services.headscale.settings.dns.base_domain}" = {
extraConfig = ''
reverse_proxy :${builtins.toString config.fava.port}
'';
}; };
}; };
}; };
@ -47,20 +73,34 @@ in {
server.domain = "ginko.woach.me"; server.domain = "ginko.woach.me";
}; };
fava = {
enable = true;
port = 5128;
};
syncthing = { syncthing = {
enable = true; enable = true;
devices = { devices = {
"homura".id = "NEP24DB-DVXAHTZ-TCCNREQ-Q5TSC7K-ZXPWC4L-5ELGKQX-4I2P47O-2FT5QAU"; "homura".id = "NEP24DB-DVXAHTZ-TCCNREQ-Q5TSC7K-ZXPWC4L-5ELGKQX-4I2P47O-2FT5QAU";
"onizuka".id = "5S6QMND-MHD2HYR-DR6KQD4-6AWJTRL-FQUCR7W-FD2KBT3-AF6RE6R-F47KBQC"; "onizuka".id = "5S6QMND-MHD2HYR-DR6KQD4-6AWJTRL-FQUCR7W-FD2KBT3-AF6RE6R-F47KBQC";
"kobayashi".id = "4JPJHO4-RZHZZYE-ZUDFCZ4-KLBTMLJ-CNZBWWB-NTESYNA-X3EDAZ6-OMKHQAT";
"jibril".id = "EWGTILX-AJPLRZ7-UNGM3DJ-5EXGBTB-SHEZKMB-7A6QSER-H6O73FH-JSXCZQL";
}; };
folders = { folders = {
"wiki" = { "wiki" = {
path = "/var/lib/wiki"; path = "/var/lib/wiki";
devices = [ "homura" "onizuka" ]; devices = [ "homura" "onizuka" "kobayashi" "jibril" ];
}; };
}; };
}; };
systemd.tmpfiles.rules = [ "d /var/lib/wiki 0755 syncthing syncthing -" ]; systemd.tmpfiles.rules = [ "d /var/lib/wiki 0755 syncthing syncthing -" ];
postgres.enable = true;
shell.enabledShells = [ "fish" ];
shell.defaultShell = "fish";
tailscale.enable = true;
sshd.enable = true;
} }

View file

@ -1,31 +0,0 @@
{ ... }:
{
imports = [
./hardware.nix
./webservices.nix
./bskyannouncements.nix
];
system.stateVersion = "24.11";
system.timezone = "America/Los_Angeles";
system.users.bigWheels = [ "pan" ];
sops-nix = {
enable = true;
keyFile = "/etc/sops/age/keys.txt";
sopsFile = ./secrets.yaml;
secrets = {
pdsEnv = {};
forgejoPassword = {
owner = "forgejo";
};
};
};
postgres.enable = true;
shell.enabledShells = [ "fish" ];
shell.defaultShell = "fish";
tailscale.enable = true;
sshd.enable = true;
}

View file

@ -1,10 +1,7 @@
pdsEnv: ENC[AES256_GCM,data:W1kKvcntrBOSgo7gLxwO8A9ZkWjkRWfUDZUMy5YNvhzqYS5xBPGL4QEcknWtQaVfaZklnO/+Gr5JEq/qgU2nIEY3xazfjYl4MNkZBhuwI20RwZB9voVubzHbPwjLtZbNTXRMa7BzO6a3ieSudKWAMP0dumG3/+wHtTYOM6lxUBfpw51+lNikc7kLqI+lzys0jC37ajP0/cm/U644BD0ozSSF289CLtXSkLt8sgHvA1ci8M+wEEq4aJ0JTVs98m0E7Udaride4tjLelESx3hPdoVzBIEa,iv:sQiYE//UGGA2qPfbM9//FcKEued6t8ORiKW8kfzLtz0=,tag:Fj+CzBgL8MH/6FLnUadIPQ==,type:str] pdsEnv: ENC[AES256_GCM,data:W1kKvcntrBOSgo7gLxwO8A9ZkWjkRWfUDZUMy5YNvhzqYS5xBPGL4QEcknWtQaVfaZklnO/+Gr5JEq/qgU2nIEY3xazfjYl4MNkZBhuwI20RwZB9voVubzHbPwjLtZbNTXRMa7BzO6a3ieSudKWAMP0dumG3/+wHtTYOM6lxUBfpw51+lNikc7kLqI+lzys0jC37ajP0/cm/U644BD0ozSSF289CLtXSkLt8sgHvA1ci8M+wEEq4aJ0JTVs98m0E7Udaride4tjLelESx3hPdoVzBIEa,iv:sQiYE//UGGA2qPfbM9//FcKEued6t8ORiKW8kfzLtz0=,tag:Fj+CzBgL8MH/6FLnUadIPQ==,type:str]
forgejoPassword: ENC[AES256_GCM,data:cQJJbf07v4HngeSYE2TwTcAx8WY=,iv:533TO2MfJVop93U4T7yIIiu6i4swDtduFuu79ZzFYFU=,tag:Pz5u/NqOSTKz2zFNzNLY5w==,type:str] forgejoPassword: ENC[AES256_GCM,data:cQJJbf07v4HngeSYE2TwTcAx8WY=,iv:533TO2MfJVop93U4T7yIIiu6i4swDtduFuu79ZzFYFU=,tag:Pz5u/NqOSTKz2zFNzNLY5w==,type:str]
caddyApi: ENC[AES256_GCM,data:mWb/pMr1cxbz6K2ZQkV3AF93/GtIPZyYrJfDDbisK3GhMlWOVZNWDzw7cC/e+1w5aSxeGmOAE13eETVpV9q8W2Bjg8IADn/4j8Su90LxAr+U77pVoF0gUvv1CagEXM8myx+GgaAG80xIeSUNUMOMsgUhJTBoaMrVpHDEPREsa9XyRzEB4X3uQnKx4tUNcUqGSUu5wvMfXDF7rNzJhkVEfE6i,iv:h5QLei1PcZUc4djaqbId9VFv8Rr2dTa7CNowxZVlRUA=,tag:nBfyFVU/fBboswcVsGKL4A==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1ey3wr2wnkgny3dfgvnyrf0cptwzr7s5x464p2y9ya58lpay8lfrsds3y68 - recipient: age1ey3wr2wnkgny3dfgvnyrf0cptwzr7s5x464p2y9ya58lpay8lfrsds3y68
enc: | enc: |
@ -33,8 +30,7 @@ sops:
N3NhMHp3V1ppclQvWTIxNkM5RjhRV0EKl8goB9tCl0BGi4jN7Fzuh0Ajm146x2Hu N3NhMHp3V1ppclQvWTIxNkM5RjhRV0EKl8goB9tCl0BGi4jN7Fzuh0Ajm146x2Hu
vesj+ENu2E9II3OeYuBndD+Y4x2zugIpzNOPg1V8zkarJOf7R/sXEw== vesj+ENu2E9II3OeYuBndD+Y4x2zugIpzNOPg1V8zkarJOf7R/sXEw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-24T19:31:53Z" lastmodified: "2025-09-17T01:49:06Z"
mac: ENC[AES256_GCM,data:5FVSw5wMXRl4qZQmD4yS7g/9qztaveDiU7mgifiOhOBqQrtvv5I/V7rkb5nKew+N3vKmg4vpWBL4kFxsQvWekAPT+ToNED4XhB5H5wZ/RyXga0CU0PMKWtGdEKdyjs4cIZjfScclW0ONgaSkv6XtCLj1V+ukPY3WBI3/2jnf6dA=,iv:7p1qEG1+E7SNLv64/aqjm1ppF4jQ/5h+Z5iHzd8sGDA=,tag:hG59vDcqha1MQf+kN1jguw==,type:str] mac: ENC[AES256_GCM,data:THEyH3KP9VVFiP7NAPn693dolWIWByb3wSjwC9QLSTe3cgdJbFqa5GvVzFa6xM1ue/GYStMwYIZt0+3LP5Wz5B2KWNy2ljvgFXjzlDHxSOzkWi3/yP9fnuRyf0vujW2Q0ltkXMleyKSisZCD87FjuUz1J9LBYQP64e0mhyB5jL4=,iv:WUDt4AusjrQVhDFk/XSohBlmxjp6Dp6EoMe08yQ0RYg=,tag:LC2j1Bvgo7h29O9mmgIFCw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.9.4 version: 3.10.2

View file

@ -1,10 +0,0 @@
{ config, pkgs, ... }:
{
fish.enable = true;
git = {
enable = true;
username = "Badtz";
email = "may@badtz.dev";
};
}

View file

@ -20,8 +20,6 @@
steam.enable = true; steam.enable = true;
steam.gamemode = true; steam.gamemode = true;
aagl.enable = true;
aagl.honkai-rail = true;
input-remapper.enable = true; input-remapper.enable = true;
postgres.enable = true; postgres.enable = true;

View file

@ -1,4 +1,4 @@
{ config, inputs, lib, ... }: { config, lib, ... }:
{ {
options.aagl = { options.aagl = {
@ -12,16 +12,21 @@
"Enables honkai 3rd impact"; "Enables honkai 3rd impact";
}; };
imports = [ inputs.aagl.nixosModules.default ]; # imports = [ inputs.aagl.nixosModules.default ];
config = lib.mkIf config.aagl.enable { config.warnings = lib.mkIf (config.aagl.enable || config.aagl.honkai-rail ||
nix.settings = inputs.aagl.nixConfig; config.aagl.genshin || config.aagl.honkai-3rd) [''
aagl.* has been deprecated to allow the removal of aagl from flake inputs.
''];
programs.honkers-railway-launcher.enable = # config = lib.mkIf config.aagl.enable {
lib.mkIf config.aagl.honkai-rail true; # nix.settings = inputs.aagl.nixConfig;
programs.anime-game-launcher.enable = #
lib.mkIf config.aagl.genshin true; # programs.honkers-railway-launcher.enable =
programs.honkers-launcher.enable = # lib.mkIf config.aagl.honkai-rail true;
lib.mkIf config.aagl.honkai-3rd true; # programs.anime-game-launcher.enable =
}; # lib.mkIf config.aagl.genshin true;
# programs.honkers-launcher.enable =
# lib.mkIf config.aagl.honkai-3rd true;
# };
} }

View file

@ -1,12 +1,13 @@
{ config, pkgs, lib, hostname, usernameList, ... }: { config, pkgs, lib, ... }:
{ {
options = { options.system = {
system.timezone = lib.mkOption { default = "America/Los_Angeles"; }; timezone = lib.mkOption { default = "America/Los_Angeles"; };
system.extraFonts = lib.mkOption { default = []; }; extraFonts = lib.mkOption { default = []; };
system.isNonEFI = lib.mkEnableOption extraPkgs = lib.mkOption { default = []; };
isNonEFI = lib.mkEnableOption
"Enable if you are running a non-EFI system"; "Enable if you are running a non-EFI system";
system.users.bigWheels = lib.mkOption { default = []; }; users.bigWheels = lib.mkOption { default = []; };
}; };
config = lib.mkMerge [ config = lib.mkMerge [
@ -21,7 +22,6 @@
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
}) })
{ {
networking.hostName = hostname;
system.stateVersion = lib.mkDefault "23.05"; system.stateVersion = lib.mkDefault "23.05";
time.timeZone = config.system.timezone; time.timeZone = config.system.timezone;
@ -33,29 +33,29 @@
git git
neovim neovim
xdg-user-dirs xdg-user-dirs
]; ] ++ config.system.extraPkgs;
# XDG Compliance # XDG Compliance
nix.settings.use-xdg-base-directories = true; nix.settings.use-xdg-base-directories = true;
users = { # users = {
users = builtins.listToAttrs (map ( # users = builtins.listToAttrs (map (
user: { # user: {
name = user; # name = user;
value = { # value = {
name = user; # name = user;
isNormalUser = true; # isNormalUser = true;
extraGroups = [ "network" ]; # extraGroups = [ "network" ];
}; # };
} # }
) usernameList); # ) usernameList);
groups = { # groups = {
wheel = { # wheel = {
members = config.system.users.bigWheels; # members = config.system.users.bigWheels;
}; # };
network = { }; # network = { };
}; # };
}; # };
fonts = { fonts = {
enableDefaultPackages = true; enableDefaultPackages = true;

View file

@ -5,14 +5,28 @@
enable = lib.mkEnableOption "Enables caddy webserver"; enable = lib.mkEnableOption "Enables caddy webserver";
vhosts = lib.mkOption {}; vhosts = lib.mkOption {};
adminEmail = lib.mkOption { type = lib.types.str; }; adminEmail = lib.mkOption { type = lib.types.str; };
environmentFile = lib.mkOption {};
}; };
config = lib.mkIf config.caddy.enable { config = lib.mkIf config.caddy.enable {
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
services.caddy = { services.caddy = {
enable = true; enable = true;
globalConfig = ''
acme_dns porkbun {
api_key {$APIKEY}
api_secret_key {$APISECRETKEY}
}
'';
package = pkgs.caddy.withPlugins {
plugins = [ "github.com/caddy-dns/porkbun@v0.3.1" ];
hash = "sha256-NlZY/EEY9TbqrMAkSHK2aGm5AjFTvpvBXV1GW1PnXCc=";
};
virtualHosts = config.caddy.vhosts; virtualHosts = config.caddy.vhosts;
email = config.caddy.adminEmail; email = config.caddy.adminEmail;
}; };
systemd.services.caddy.serviceConfig.EnvironmentFile = [
config.caddy.environmentFile
];
}; };
} }

View file

@ -12,13 +12,10 @@
else (if config.niri.enable then "niri" else null); else (if config.niri.enable then "niri" else null);
in { in {
enable = true; enable = true;
package = pkgs.greetd.tuigreet; package = pkgs.tuigreet;
settings = { settings = {
terminal = {
vt = 2;
};
default_session = lib.mkIf (wm != null) { default_session = lib.mkIf (wm != null) {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${wm}"; command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd ${wm}";
user = "greeter"; user = "greeter";
}; };
}; };

View file

@ -0,0 +1,56 @@
{ config, pkgs, lib, ... }:
{
options.fava = {
enable = lib.mkEnableOption "Enables fava double entry accounting";
ledgerFiles = lib.mkOption {
default = ["/var/lib/fava/ledger.beancount"];
};
port = lib.mkOption { default = 5000; };
host = lib.mkOption { default = "localhost"; };
favaHome = lib.mkOption { default = "/var/lib/fava"; };
};
config = lib.mkIf config.fava.enable {
systemd.services.fava = {
description = "Fava";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = with config.fava; let
command = lib.concatStringsSep " " ([
"${pkgs.fava}/bin/fava"
"--port ${builtins.toString port}"
"--host ${host}"
] ++ ["--"] ++ ledgerFiles);
in command;
Type = "simple";
User = "fava";
Group = "fava";
Restart = "on-failure";
RestartSec = "5s";
NoNewPrivileges = true;
PrivateTmp = true;
PrivateDevices = true;
ProtectHome = true;
ProtectSystem = "full";
ReadWriteDirectories = config.fava.favaHome;
};
};
networking.firewall.allowedTCPPorts = [ config.fava.port ];
users.users.fava = {
home = config.fava.favaHome;
createHome = true;
isSystemUser = true;
group = "fava";
};
users.groups.fava = {};
system.extraPkgs = [
pkgs.beancount
];
};
}

View file

@ -17,7 +17,7 @@
settings = { settings = {
server_url = "https://${config.headscale.server.domain}"; server_url = "https://${config.headscale.server.domain}";
dns = { dns = {
base_domain = "connect.claris"; base_domain = "dns.${config.headscale.server.domain}";
override_local_dns = false; override_local_dns = false;
}; };
}; };

View file

@ -1,4 +1,4 @@
{ inputs, config, lib, ... }: { config, lib, ... }:
{ {
@ -6,18 +6,14 @@
enable = lib.mkEnableOption "Enables hyprland"; enable = lib.mkEnableOption "Enables hyprland";
}; };
imports = [ # imports = [
inputs.hyprland.nixosModules.default # inputs.hyprland.nixosModules.default
]; # ];
config = { config.warnings = lib.mkIf config.hyprland.enable [''
nix.settings = { hyprland.enable has been deprecated to allow the removal of hyprland from
substituters = [ "https://hyprland.cachix.org" ]; flake inputs.
trusted-public-keys = [ ''];
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
]; # config.programs.hyprland.enable = lib.mkIf config.hyprland.enable true;
experimental-features = [ "nix-command" "flakes" ];
};
programs.hyprland.enable = lib.mkIf config.hyprland.enable true;
};
} }

View file

@ -2,14 +2,14 @@
{ {
options.pds = { options.pds = {
enable = lib.mkEnableOption "Enables atproto Personal Data Server"; enable = lib.mkEnableOption "Enables atproto (blueksy) Personal Data Server";
hostname = lib.mkOption { type = lib.types.str; }; hostname = lib.mkOption { type = lib.types.str; };
adminEmail = lib.mkOption { type = lib.types.str; }; adminEmail = lib.mkOption { type = lib.types.str; };
environmentFile = lib.mkOption { type = lib.types.path; }; environmentFile = lib.mkOption { type = lib.types.path; };
}; };
config = lib.mkIf config.pds.enable { config = lib.mkIf config.pds.enable {
services.pds = { services.bluesky-pds = {
enable = true; enable = true;
environmentFiles = [ config.pds.environmentFile ]; environmentFiles = [ config.pds.environmentFile ];
settings = { settings = {

View file

@ -27,8 +27,15 @@
enable = true; enable = true;
mouse.accel = -0.53; mouse.accel = -0.53;
outputs = { outputs = {
"DP-1".mode = { width = 2560; height = 1440; refresh = 144.000; }; "DP-1" = {
"DP-2".mode = { width = 2560; height = 1440; refresh = 144.000; }; position = { x = 2560; y = -100; };
mode = { width = 2560; height = 1440; refresh = 144.000; };
transform.rotation = 270;
};
"DP-2" = {
position = { x = 0; y = 0; };
mode = { width = 2560; height = 1440; refresh = 144.000; };
};
}; };
}; };
@ -103,10 +110,8 @@
lutris.enable = true; lutris.enable = true;
extraPkgs = with pkgs; [ extraPkgs = with pkgs; [
# Applications # Applications
ani-cli # Easy anime player logseq
lutgen # LUT generator claude-code
prismlauncher # Minecraft launcher
jdk8 # For playing older minecraft
]; ];
} }