Compare commits
74 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 58d6fba6cb | |||
| 450f48bc0a | |||
| b708a82046 | |||
| a3b6475c0c | |||
| 35fbb13b3d | |||
| 5e9fb94bcb | |||
| ff34c0d3c1 | |||
| 38ffd22819 | |||
| 8b33848660 | |||
| e3fc39cf43 | |||
| 9a2161d8e2 | |||
| 75de4af64b | |||
| 7208f789e9 | |||
| c77103a09a | |||
| ddc2abab52 | |||
| 8e8061a311 | |||
| d5f3518ef6 | |||
| 01456a3d4d | |||
| 3f606df726 | |||
| 2f125855f4 | |||
| a9cd267bb9 | |||
| c16c8e4726 | |||
| a7b6f63509 | |||
| a2959bda31 | |||
| 406cfcdcca | |||
| daf346127a | |||
| 4caac02796 | |||
| 83b3cee120 | |||
| c98e633178 | |||
| 8dc79f60ee | |||
| 03f1d74812 | |||
| 06f2e248a8 | |||
| b5c4879bb4 | |||
| 4ba613b95f | |||
| ba688432e6 | |||
| 676fdbea0e | |||
| 85d4610988 | |||
| 1d28a7b7ef | |||
| 036d16cf05 | |||
| ac7a0adbf2 | |||
| 65dcf59eeb | |||
| 9c28a8b6db | |||
| 6a3839a38e | |||
| 54ee803c9c | |||
| 38bc8a1c20 | |||
| 9748ccaa0c | |||
| 4476a7f809 | |||
| 7be136dfe8 | |||
| eeb251585d | |||
| f6321ffd93 | |||
| 48606f4977 | |||
| 88c38b76b8 | |||
| 6519bb657a | |||
| 6b396d8bb9 | |||
| f111183f73 | |||
| 6a43247c72 | |||
| 42ffb053b3 | |||
| 67c6eeb44a | |||
| e808447b4f | |||
| 0c414948a5 | |||
| 1e2888851e | |||
| a67a00725c | |||
| 15967f2fa1 | |||
| fe71483c3d | |||
| def20c0070 | |||
| b39108df2c | |||
| e4fe282ffd | |||
| f76234271a | |||
| 546bf20a70 | |||
| 6ec6899793 | |||
| c0a5c4312f | |||
| 9764a025a9 | |||
| fd62c17426 | |||
| 90c612bb57 |
8
.prettierrc.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"tabWidth": 2,
|
||||
"printWidth": 90,
|
||||
"useTabs": false,
|
||||
"proseWrap": "always",
|
||||
"endOfLine": "lf",
|
||||
"embeddedLanguageFormatting": "auto"
|
||||
}
|
||||
251
CONTRIBUTING.md
Normal file
@@ -0,0 +1,251 @@
|
||||
# CONTRIBUTING
|
||||
|
||||
## Tldr
|
||||
|
||||
**Do's**
|
||||
|
||||
- Be concise
|
||||
- Follow the [Formatting Rules](#formatting-rules) to the best of your ability
|
||||
- Segment larger changes into managable, reviewable commits
|
||||
- Leave a trail of your development so I can tell you put some effort in (doesnt really
|
||||
apply to smaller commits)
|
||||
- Write your own code
|
||||
- Leave some way of crediting your work
|
||||
- Disclose the capacity in which you used AI. Most of the time, anything more than making
|
||||
examples or helping you understand the codebase will be disallowed. As little AI code
|
||||
should make it to production as possible
|
||||
|
||||
**Dont's**
|
||||
|
||||
- Report upstream issues to me (ie an issue with the app itself, not my config)
|
||||
- Make major structural changes
|
||||
- Submit chore commits such as updating the flake, I can do that myself
|
||||
- Add new hosts for no reason, make your own flake and import the modules you want for
|
||||
your host
|
||||
- Majorly change existing hosts for your own preference
|
||||
- Ask AI to fix your issues and expect me to merge changes
|
||||
- Delete existing modules. Executive decisions like that will be made at my disgression,
|
||||
and will be done as non-destructively as possible, such as moving those modules to a
|
||||
"deprecated" branch in the future.
|
||||
|
||||
## General format
|
||||
|
||||
All emails regarding this repo (or another) should have a subject prepended with the
|
||||
following:
|
||||
|
||||
```text
|
||||
[GIT] [voidarc/nixos] (request type)
|
||||
```
|
||||
|
||||
The content of the second set of brackets should be replaced with the specific submodule
|
||||
or repo that is being referred to. For example, in the case of a quickshell bug, it should
|
||||
contain `voidarc/quickshell`.
|
||||
|
||||
In general, for most requests, I also implore you to include a github username (or
|
||||
equivalent, codeberg, gitlab, etc.) so that I have a frame of reference for you as a
|
||||
person, and also so that you can be credited in any resulting commits. Depending on
|
||||
scenario, this requirement can be waived, or substituted for a reddit account or
|
||||
something.
|
||||
|
||||
The third set of brackets pertains to the subject proper, and should only reasonably
|
||||
contain `issue`, `patch` or `feature`. If you believe that your request does not fit into
|
||||
any of those categories, then feel free to do whatever you want within reason.
|
||||
|
||||
## Issues
|
||||
|
||||
Issues are restricted to bugs or otherwise not fixed problems in the code. If it is an
|
||||
upstream bug, ie one not caused by my specific config, please don't send me a complaint
|
||||
about it, refer to the source app. The subject for an issue should be formatted as such:
|
||||
|
||||
```Text
|
||||
(prefix) (module type) (specific module) - (description of issue)
|
||||
```
|
||||
|
||||
The prefix shoud be formatted as above. In the case of an issue pertaining to another
|
||||
repo, the module type and module name may be omitted, unless it is an issue with the
|
||||
dendritic module implementation, in which case the repo in the subject should be this one.
|
||||
|
||||
The module type should match the repo's folder structure, being one of `feature`,
|
||||
`system`, `attr/attribute` or `host`. Self explanitory. Doesn't have to be an exact match.
|
||||
|
||||
The specific module should be the name of the module itself, not just the directory that
|
||||
contains it, due to the fact that some directories and files contain multiple modules. In
|
||||
the case of a file containing both a package and a module, favour the module that
|
||||
implements the package, and not the package itself (`self.nixosModules` rather than
|
||||
`self'.packages`).
|
||||
|
||||
The description should follow standard conventions, as you would report on other
|
||||
platforms. Don't make it stupidly long, common sense required.
|
||||
|
||||
The body of the email should be reminiscent of a github issue, and contain the following
|
||||
items in roughly the presented order:
|
||||
|
||||
- Clear description of the issue (and why it's an issue in the first place, and not
|
||||
personal preference)
|
||||
- Step by step instructions on how to replicate the given issue
|
||||
- Step by step instructions detailing what you believe the behaviour should be
|
||||
- Any attempts to fix the issue, or references to suspected code that may be causing the
|
||||
issue
|
||||
|
||||
If you have attempted to fix the issue, or altered the code, please refer to the next
|
||||
section
|
||||
|
||||
## Patches / Contributions (Pull requests)
|
||||
|
||||
Patches are for altered code that you would like me to review and possibly add to the
|
||||
codebase. Most of the time, these should be for issues that you have encountered using the
|
||||
repo, not new features entirely. If a patch doesn't fit an issue, is mostly or fully AI
|
||||
generated, or otherwise doesnt fit the repo, it will be rejected.
|
||||
|
||||
The format here is similar, but with a few key differences. The type of request should
|
||||
obviously be patch, and the rest should be identical to the previous type, containing
|
||||
module type, name, and a short description of the issue.
|
||||
|
||||
The body should also follow similar beats, having a breakdown of the issue and detailing
|
||||
the intended behaviour. Beyond the detailing portion, there are some other specific things
|
||||
that are required for issues in particular.
|
||||
|
||||
- A description of whatever alterations have been made to the code
|
||||
- Some form of username so that, in the event of a merge, you can be credited properly
|
||||
- A disclosure of how much or little AI was used in the creation of the patch. For
|
||||
completeness, even if no AI is used, please include "No AI was used" anyway, it is not
|
||||
implied.
|
||||
|
||||
A git patch file should be attatched to the email, not a link to a github repo or
|
||||
something else. Any "patch" email with no attatchments will probably not be looked at any
|
||||
further than the issue section. For patches, please refer to the
|
||||
[Formatting Rules](#formatting-rules)
|
||||
|
||||
Both issues and patches are on a first come first serve basis. Because there is no public
|
||||
forum (I'm sure as hell not maintaining one), if someone submits an issue or patch, even
|
||||
if someone else independantly discovered the bug, the first person will most likely be
|
||||
credited for that issue.
|
||||
|
||||
If you have previously opened an issue, and wish to make a patch for the same issue, reply
|
||||
to the initial issue email, and prefix the subject with `PATCH:` instead of the usual
|
||||
`RE:` or whatever your email client chooses to prepend. The rest of the subject should
|
||||
remain the same. The email should then contain the patch-specific sections, found above.
|
||||
Don't bother re-iterating the issue.
|
||||
|
||||
## Feature Requests
|
||||
|
||||
Feature requests are for anything that doesn't already exist or doesnt otherwise fall into
|
||||
the previous categories. These are more freeform, and could come in the form of a useful
|
||||
app, a better way of managing something, or a better replacement for something that is
|
||||
already in the repo. Most importantly, this is NOT somewhere to shill an app you
|
||||
vibe-coded. Any AI generated apps will be rejected out of principle.
|
||||
|
||||
Headers should follow this structure, but, again, this is lenient:
|
||||
|
||||
```text
|
||||
(prefix) - (Feature type) - (App name): (description)
|
||||
```
|
||||
|
||||
The feature type, as before, should be one of the given folders in the repo. Generally,
|
||||
this will be a `feature` for a new app, but could be `system` for a new driver or
|
||||
`attribute` for a new collection of packages. If it is more general than any of those
|
||||
categories, or smaller in scope than an entire feature, use the feature type `other`, and
|
||||
detail what you are requesting (other should be used if you are just requesting a singular
|
||||
package be added to the system, for example).
|
||||
|
||||
Instead of following a fixed structure for the body, it is up to you to make a case for
|
||||
whatever you are suggesting. Whatever that entails is up to you. It could be use cases, it
|
||||
could be reasons it is better than whatever I am using. Be as verbose or as minimal as you
|
||||
wish, but keep in mind that the better your argument is, the more likely I am to accept
|
||||
your contribution. Again, if you wish, you can leave a username so that you can be
|
||||
correctly credited if I decide to include whatever you suggested.
|
||||
|
||||
If you are suggesting a new feature, app or otherwise, you may also choose to make a basic
|
||||
or full module implementing that feature, and then attach that to the email in the form of
|
||||
a patch. Refer to the [Formatting Rules](#formatting-rules) for further instruction on how
|
||||
to write your code.
|
||||
|
||||
Please also leave references for whatever it is you're suggesting, not just the name of
|
||||
the app. This could come in the form of documentation, a homepage, or the link for its
|
||||
github. In general, if an app has none of these things, or is closed source in any
|
||||
capacity, it will not be accepted.
|
||||
|
||||
## Formatting rules
|
||||
|
||||
Formatting in this repo should attempt to be standard to whatever I am using. For ease of
|
||||
use, either refer to or use my nvim config (`#nvim` output for this repo, refer to the
|
||||
README for how to run it). This prevents ugly git histories with commits specifically for
|
||||
formatting etc.
|
||||
|
||||
### General rules
|
||||
|
||||
When submitting a patch, there should be no merge conflicts with the current HEAD at the
|
||||
time of creation. It is a good rule of thumb to pull from remote before making a patch,
|
||||
incase behaviour changes.
|
||||
|
||||
If there are commits pushed between the time you send a patch and the time it is reviewed,
|
||||
any resulting merge conflicts are not your fault, and therefore will not be treated as
|
||||
such. Don't resubmit the same patch because there are new commits on remote, when patches
|
||||
are reviewed they are inserted at the point at which they were created, not on top of
|
||||
newer commits.
|
||||
|
||||
#### Branches
|
||||
|
||||
All patches should be mergable to the main branch, ie not have a patch for the `feature-x`
|
||||
branch or some nonsense. I do not have your git history, and therefore don't have whatever
|
||||
branch you created on my machine. In general, most changes should be restricted to one
|
||||
commit, so that crediting is easy.
|
||||
|
||||
If a change is more than one or two commits, make a new branch, make the changes that you
|
||||
want, then merge to the latest head before submitting a patch. When merging back to main,
|
||||
please use a merge commit instead of fast forwarding or clobbering the branch. This makes
|
||||
it easy to see who made what changes in the git history, and keeps blame easy to read.
|
||||
This merge commit will be where your credit goes. If you submit a patch that contains a
|
||||
load of commits on the main branch, the chances I accept the patch are very low.
|
||||
|
||||
### Code
|
||||
|
||||
There are many types of code in this repo, so if there is any confusion, either refer to
|
||||
the config that I am using in nvim, or send me an email asking me how to handle it.
|
||||
|
||||
#### Nix
|
||||
|
||||
For starters, all nix code should be formatted with
|
||||
[Alejandra](https://github.com/kamadorueda/alejandra). If you choose to format your code
|
||||
with nix-fmt or something else, chances are I won't refuse it, but I will overwrite your
|
||||
commits with a formatted version. To format the entire repo properly, run the following
|
||||
command:
|
||||
|
||||
```bash
|
||||
nix-shell -p alejandra --run "alejandra ."
|
||||
```
|
||||
|
||||
This will recursively check and format all `.nix` files in the repo, which is what I want.
|
||||
|
||||
As a secondary requirement, try to follow the already set out conventions that are on
|
||||
display in this repo, as well as the conventions of dendritic nix. A few examples:
|
||||
|
||||
- All top level objects should be merged into one unless there is a good reason for it
|
||||
- The first item in a module should be the module definition (`flake.nixosModules.xyz`)
|
||||
- All modules should be portable unless there is a good reason for it
|
||||
- Modules should reference eachother through `self.nixosModules` instead of relative
|
||||
paths, which should be avoided in most scenarios
|
||||
- In general, if a package is available in nixpkgs, an input need not be added. This rule
|
||||
differs case-by-case due to versioning differences.
|
||||
|
||||
#### Markdown
|
||||
|
||||
All markdown files should be formatted using prettier, with the settings provided in this
|
||||
repo. For reference, the rules are:
|
||||
|
||||
- 90 characters maximum, excluding code blocks
|
||||
- word wrapping
|
||||
- tab width of 2, as well as replacing spaces with tabs
|
||||
|
||||
#### Other languages
|
||||
|
||||
For one-off config languages (think `kitty.conf`), no formatting is needed. Whitespace can
|
||||
be added at the programmer's disgression.
|
||||
|
||||
For standard structured languages, such as json, yaml or toml, if there is an available
|
||||
prettier formatter, then it should be used. In general, tabwidth should be 2 and spaces
|
||||
should be used across the board. Don't use some esoteric formatter just to be special.
|
||||
|
||||
For actual programming languages, like qml or lua, either use the provided formatter, such
|
||||
as `qmlformat`, with the settings configured, or refer to my nvim config (in this case I
|
||||
use `stylua` with the default settings)
|
||||
151
README.md
@@ -1,38 +1,97 @@
|
||||
# The Void
|
||||
*An opinionated dendritic nix configuration*
|
||||
|
||||
_An opinionated dendritic nix configuration_
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Get Started
|
||||
|
||||
No cloning required
|
||||
|
||||
```bash
|
||||
# Run any app (replace appname with the one you want)
|
||||
nix run "git+https://git.voidarc.co.uk/voidarc/nixos.git#appname"
|
||||
|
||||
# Build configuration (HACKSTATION or mobile02)
|
||||
sudo nixos-rebuild switch --impure --flake "git+https://git.voidarc.co.uk/voidarc/nixos.git#mobile02"
|
||||
```
|
||||
|
||||
[More Information on Configs](#nixos-configurations)
|
||||
|
||||
[More Information on Binaries](#binaries)
|
||||
|
||||
## The Concept
|
||||
|
||||
I have been trying to get consistent, across device experiences from the second that I
|
||||
started using linux. I tried my best with arch, but I foolishly believed that just remembering
|
||||
what packages I installed would be enough. Then I started managing my dotfiles with GNU stow,
|
||||
but that only allowed for a single host per repo. I moved over to doot, and simultaneously nixos.
|
||||
started using linux. I tried my best with arch, but I foolishly believed that just
|
||||
remembering what packages I installed would be enough. Then I started managing my dotfiles
|
||||
with GNU stow, but that only allowed for a single host per repo. I moved over to doot, and
|
||||
simultaneously nixos.
|
||||
|
||||
I believed a dotfiles manager was my endgame. The final evolution, but it was far from ideal. I had to
|
||||
manage a mess of dotfiles, submodules and nix packages that were completely uncoupled from the apps that
|
||||
used them. Hyprland just assumed that I had all of my apps installed, assumed that otter-launcher's
|
||||
config existed. Just by forgetting an app or a toml file, I had the potential to brick my entire setup.
|
||||
I believed a dotfiles manager was my endgame. The final evolution, but it was far from
|
||||
ideal. I had to manage a mess of dotfiles, submodules and nix packages that were
|
||||
completely uncoupled from the apps that used them. Hyprland just assumed that I had all of
|
||||
my apps installed, assumed that otter-launcher's config existed. Just by forgetting an app
|
||||
or a toml file, I had the potential to brick my entire setup.
|
||||
|
||||
This is no longer the case.
|
||||
|
||||
The solution is similar to that of safely typed languages, like rust. Rust, instead of having optional parameters
|
||||
like typescript, requires that a variable be passed to a function, regardless of whether it contains anything.
|
||||
This leads to what is essentially a fixed dependancy tree, where there are no points of failiure, only allowing
|
||||
for logic errors and such. The same methodology can be applied to nix, using flake parts and wrapper scripts.
|
||||
The solution is similar to that of safely typed languages, like rust. Rust, instead of
|
||||
having optional parameters like typescript, requires that a variable be passed to a
|
||||
function, regardless of whether it contains anything. This leads to what is essentially a
|
||||
fixed dependancy tree, where there are no points of failiure, only allowing for logic
|
||||
errors and such. The same methodology can be applied to nix, using flake parts and wrapper
|
||||
scripts.
|
||||
|
||||
Instead of defining the packages beside the app, and its config, you can use the config to define the required binaries.
|
||||
By wrapping a config that contains a nix variable, ie a binary, that binary is intrinsically linked to that config,
|
||||
and will therefore always be installed. No more dependancy issues, and because the configs are defined within nix too, no
|
||||
more potential for missing config files. Dotfile managers are no more, long live dotfile managers. Any app with a `--config`
|
||||
flag can now be fully versioned and self contained within one repo, config and all, accessible on any machine with nix.
|
||||
Instead of defining the packages beside the app, and its config, you can use the config to
|
||||
define the required binaries. By wrapping a config that contains a nix variable, ie a
|
||||
binary, that binary is intrinsically linked to that config, and will therefore always be
|
||||
installed. No more dependancy issues, and because the configs are defined within nix too,
|
||||
no more potential for missing config files. Dotfile managers are no more, long live
|
||||
dotfile managers. Any app with a `--config` flag can now be fully versioned and self
|
||||
contained within one repo, config and all, accessible on any machine with nix.
|
||||
|
||||
One command for a truly reproducible, fully contained, configured system. This is the endgame.
|
||||
One command for a truly reproducible, fully contained, configured system. This is the
|
||||
endgame.
|
||||
|
||||
### Mandatory thing on AI
|
||||
|
||||
I am not completely against AI. However, asking an agent to write a load of code and then
|
||||
posting it to reddit as if you made it yourself is disingenuous and (in my opinion) at
|
||||
least slightly morally incorrect. Many a time I have seen a cool project on a subreddit
|
||||
just for it to turn out to be ai generated garbage that I refuse to use out of principle.
|
||||
|
||||
I would go out on a limb and say that 99% of this codebase was written with no AI
|
||||
assistance. Every config, every module, every obscure fix for a bug that only exists
|
||||
because I'm using a dendritic pattern instead of being normal was programmed by hand by a
|
||||
real human (yours truly). I'm not saying I had no assistance at all, there are sections
|
||||
that are verbatim copied from the wiki of whatever app or language that I was using, but
|
||||
by and large, no AI code has made it into this repo.
|
||||
|
||||
There may be commits somewhere saying that opencode refactored something, or that it
|
||||
solved some obscure bug I was having, but after having those changes implemented for me, I
|
||||
took it upon myself to understand what actually happened, in order to make maintaining
|
||||
this config as easy as possible in the future.
|
||||
|
||||
This repo is not temporary. I daily drive this, and I intend to for many years to come.
|
||||
Going forward, I will keep to the same standard of only using AI as a last resort, and
|
||||
when needs must, only implementing and commiting changes that I fully understand and
|
||||
could've eventually come to myself. Sometimes, at the end of a long coding session, a man
|
||||
gets lazy. I could spend another 45 minutes fixing some quickshell update order bug, or I
|
||||
could get deepseek to do it. In the end, it was a 5 line fix that, in hindsight, was
|
||||
pretty obvious (lol).
|
||||
|
||||
## Usage
|
||||
|
||||
Usage is similar to any other flake, with everything in the module directory being an output.
|
||||
Usage is similar to any other flake, with everything in the module directory being an
|
||||
output.
|
||||
|
||||
The folder structure is simply defined:
|
||||
|
||||
```
|
||||
modules/
|
||||
|- features/ - all available apps, every subfolder contains a seperate wrapped binary
|
||||
@@ -43,32 +102,62 @@ modules/
|
||||
|
||||
### Nixos Configurations
|
||||
|
||||
Due to the host module referencing `/etc/nixos/hardware-configuration.nix`, so that it is seperated from the repo,
|
||||
all rebuild commands will need `--impure`, unless you copy your configuration into the repo.
|
||||
Due to the host module referencing `/etc/nixos/hardware-configuration.nix`, so that it is
|
||||
seperated from the repo, all rebuild commands will need `--impure`, unless you copy your
|
||||
configuration into the repo.
|
||||
|
||||
HACKSTATION is the heavier system, mobile02 is minimal and has no specialist hyprland config.
|
||||
HACKSTATION contains all features available (near enough), with mobile02 being a lighter
|
||||
version of the system, looking the same visually, but with less bloat, only really having
|
||||
firefox and a terminal.
|
||||
|
||||
It is recommended to clone the repo beforehand, but the system can be built directly from
|
||||
remote. When cloning the repo, in order to properly evaluate the `vinix` and `nrs` shell
|
||||
aliases, the config should be built from the directory you cloned it to, not from another
|
||||
directory. When building from remote, or in any other scenario in which the `$PWD`
|
||||
environment variable is not available, the zsh module will throw and evaluation warning,
|
||||
but the build will not be hindered.
|
||||
|
||||
It is recommended to clone the repo beforehand, but the system can be built directly from remote
|
||||
```bash
|
||||
# The following commands will only work if your hostname is already
|
||||
# HACKSTATION or mobile02, if it is not, see next code block
|
||||
|
||||
# Local Clone, . is the directory containing flake.nix
|
||||
sudo nixos-rebuild switch --impure --flake .
|
||||
|
||||
# Build from remote
|
||||
sudo nixos-rebuild switch --impure --flake "git+https://git.voidarc.co.uk/voidarc/nixos.git?ref=dendritic"
|
||||
sudo nixos-rebuild switch --impure --flake "git+https://git.voidarc.co.uk/voidarc/nixos.git"
|
||||
```
|
||||
Both of these commands can be appended with a desired hostname in order to build that configuration.
|
||||
|
||||
Both of these commands can be appended with a desired hostname in order to build that
|
||||
configuration.
|
||||
|
||||
```bash
|
||||
# Example of building mobile02 from a local repo
|
||||
sudo nixos-rebuild switch --impure --flake .#mobile02
|
||||
```
|
||||
There is no default output, so if the current hostname doesn't match a host, you will get an error.
|
||||
Building this config should be non destructive to any existing dotfiles, but will remove all users (not home directories)
|
||||
from the system other than `user01`, who's default password is `qwer`.
|
||||
|
||||
There is no default output, so if the current hostname doesn't match a host, you will get
|
||||
an error. Building this config should be non destructive to any existing dotfiles, but
|
||||
will remove all users (not home directories) from the system other than `user01`, who's
|
||||
default password is `qwer`. No, that isn't my usual password.
|
||||
|
||||
### Binaries
|
||||
|
||||
Any binary can be run with the same base command (will change when merged to main)
|
||||
Any binary can be run with the same base command:
|
||||
|
||||
```bash
|
||||
nix run "git+https://git.voidarc.co.uk/voidarc/nixos.git?ref=dendritic#appname"
|
||||
nix run "git+https://git.voidarc.co.uk/voidarc/nixos.git#appname"
|
||||
```
|
||||
`Appname` can be substituted for the name of any folder in the `modules/features` dir, ie `kitty` or `otter-launcher`
|
||||
|
||||
`appname` can be substituted for the name of any folder in the `modules/features` dir, ie
|
||||
`kitty` or `otter-launcher`. Most if not all modules in a subdirectory will have a module
|
||||
name corresponding to that directory. This only applies for `default.nix` files, so files
|
||||
that have different names are not expected to follow this convention, even if there is not
|
||||
a `default.nix` in that directory.
|
||||
|
||||
## Issues and contributing
|
||||
|
||||
Because this is a private git server, there is no inline way to submit issues,
|
||||
contributions, or feature ideas. If you should wish, you may send such requests to
|
||||
<admin@voidarc.co.uk>, with the format found in [CONTRIBUTING.md]( CONTRIBUTING.md ). Failure to follow the
|
||||
format found there will most likely result in your email being ignored.
|
||||
|
||||
BIN
assets/desktop-1-v2.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/desktop-2-v2.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
457
flake.lock
generated
@@ -24,11 +24,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784368054,
|
||||
"narHash": "sha256-zF1iJkBQSDWmRO4/LEeHR1SpKY0lqZaxkoQJpPS9K9U=",
|
||||
"lastModified": 1789630322,
|
||||
"narHash": "sha256-jiUl3+k9K+BASO4hvKFhlCMUpHPPoy2q5uZMl3pzOF0=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "9b5f14d9483445e766294eb8fbe0b8f370269ed0",
|
||||
"rev": "f31c47a1b9d300847d8fc3108ad959448103dfc1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -91,11 +91,11 @@
|
||||
"nixpkgs-pinned": "nixpkgs-pinned"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782405315,
|
||||
"narHash": "sha256-pZKG7KOr1NPtWwzfEnRZvAi7Uvndd4LiC0OVHjf5IPE=",
|
||||
"lastModified": 1790349619,
|
||||
"narHash": "sha256-cU4QbXhq5LKLUdrlDEVLIm/onZma++w0esx64Hrsi3U=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "c9859df9bd3781c63d838a1a90d22129885a910b",
|
||||
"revCount": 5,
|
||||
"rev": "4a5b823e81a15c36834c7c2a9f0e18b6added29e",
|
||||
"revCount": 7,
|
||||
"type": "git",
|
||||
"url": "https://git.voidarc.co.uk/voidarc/nixos.davinci"
|
||||
},
|
||||
@@ -125,11 +125,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782949081,
|
||||
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||
"lastModified": 1788450739,
|
||||
"narHash": "sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||
"rev": "31729ca8cbdb4fa927b34e5f4353e6a83f39e993",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -194,25 +194,7 @@
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_9"
|
||||
"systems": "systems_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
@@ -236,11 +218,11 @@
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1783347374,
|
||||
"narHash": "sha256-kdizmVOka0IACJaTeEgftxCeGxdwuT0ba1/9QPGDWgw=",
|
||||
"lastModified": 1790439891,
|
||||
"narHash": "sha256-muUR0v2/4NqyvRjIcya890SwlX3qVukepZV7CnmtgFs=",
|
||||
"owner": "voidarclabs",
|
||||
"repo": "gotify-desktop",
|
||||
"rev": "b4f62aab117238ce72c19809d19fcfee2b67f5d2",
|
||||
"rev": "f8fd3ca612611ae648bf7355399a3c8374488c25",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -311,11 +293,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1776511930,
|
||||
"narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
|
||||
"lastModified": 1786464181,
|
||||
"narHash": "sha256-2alOMkLjXANh7unkZnYnCF2K2rApZaOLMoQ3o+VX2CY=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "39435900785d0c560c6ae8777d29f28617d031ef",
|
||||
"rev": "e4ed7c08123df5af460a0a70961380cbfb872f76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -343,11 +325,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782566056,
|
||||
"narHash": "sha256-haEZcHzYrePnjFOYSWTbxm/Nrla0aPslJfmvdCvqtVc=",
|
||||
"lastModified": 1786464367,
|
||||
"narHash": "sha256-k58p4wbzIXWyRWrW84pP8tD+iaZSSYiiM+fr0Auk4oU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "c6e7b9f673f4360bc813d3dc75028f75ee88d3f8",
|
||||
"rev": "7c895c44e3ca6d28ed68ddd80ec02b02b925e7fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -356,21 +338,49 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprgrass": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland",
|
||||
"hyprland"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprgrass",
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1789324148,
|
||||
"narHash": "sha256-hUJXbEdceQ+cn8RIrD7KDUdc4clFiXDL/z9hHHtGAJM=",
|
||||
"owner": "horriblename",
|
||||
"repo": "hyprgrass",
|
||||
"rev": "f524680fad86d63018dec3c35be61fe55bde2dcd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "horriblename",
|
||||
"repo": "hyprgrass",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"hyprland": "hyprland_2",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"otter-launcher": "otter-launcher",
|
||||
"woomer": "woomer",
|
||||
"wrappers": "wrappers",
|
||||
"wshowkeys": "wshowkeys"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1786391152,
|
||||
"narHash": "sha256-P+dUN0wWRYLop9lLsnCOEi5bYE/GC5LvzV2VZh520TM=",
|
||||
"lastModified": 1790264545,
|
||||
"narHash": "sha256-ombw2VPUqYkLlAvX9FrTS07WL21IsjB4n+CsHwUjH00=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "b4426becc44de00e891098b9883eca2b2028f981",
|
||||
"revCount": 53,
|
||||
"rev": "22a5e42c7c8c5437253f9cbd3df5b449fb6d7c8e",
|
||||
"revCount": 86,
|
||||
"type": "git",
|
||||
"url": "https://git.voidarc.co.uk/voidarc/hypr"
|
||||
},
|
||||
@@ -419,11 +429,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784196523,
|
||||
"narHash": "sha256-ahtKMGXFJdlQNhatQm1+BBU/pGfGYnAqQt3vWvq4p8s=",
|
||||
"lastModified": 1786464504,
|
||||
"narHash": "sha256-7sHwM86KILQyHDHDuE2SDBlQ2jvZ0EW3hY7sW009/cg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"rev": "a6ccb6cb112ed5a244c0191fb972347ecfa893e0",
|
||||
"rev": "4c30cf3097ea963c0e250749ee0c59f8b08816d6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -446,11 +456,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772460177,
|
||||
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||
"lastModified": 1789475883,
|
||||
"narHash": "sha256-YRFLrPESYitsDYqQKquOFg8OWNI7tHKwPnTrTZWXxWY=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||
"rev": "cc9a8fd253bdc00f48a967ecf4828211ef08751f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -476,11 +486,11 @@
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785237127,
|
||||
"narHash": "sha256-sMSWRj9zZ3O4Q1Bk8mKkdXsTb3zpXRESlrzWmQXmW54=",
|
||||
"lastModified": 1789814244,
|
||||
"narHash": "sha256-X8GK0kUU8WAPD4072wafvbcRRtYWiFCSA5Iyz9mr6KU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "ff24e1755fd308ee70367d63168a12feb05d1fc2",
|
||||
"rev": "5fbb2a7acce2d6f155d18cf5b590fc553a8e7abc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -508,11 +518,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777320127,
|
||||
"narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=",
|
||||
"lastModified": 1786464129,
|
||||
"narHash": "sha256-339AkTlpMYSIvFuG0rnR+8Yg4/AZKeJalshJavlnKfg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "090117506ddc3d7f26e650ff344d378c2ec329cc",
|
||||
"rev": "9508458be316a0d70d37ebed1ab725ccd10411ff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -567,11 +577,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782554491,
|
||||
"narHash": "sha256-+p3MlyN/nqRefcf2IckPlGRUn9+hielqpS9XClbLleM=",
|
||||
"lastModified": 1785930473,
|
||||
"narHash": "sha256-DitTu625BhEYpZjtjxtGpjrEJwPwW+X/+jJvhSZNSJM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"rev": "bdba25ced39ea39ab004a8f31593ba0b0ff1ca35",
|
||||
"rev": "af515b69dfbe366dc7873aa1475cb2f4db3ebad7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -594,11 +604,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784323413,
|
||||
"narHash": "sha256-XnAVV+H4f8Xdv0yZcSwJ5kCjLyE8fHxPeLX6a3HSrAU=",
|
||||
"lastModified": 1788619883,
|
||||
"narHash": "sha256-dpmeFq5vPvSOsi30ZchOLjltAZEuVBucDvGKs3IZYf4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "5f03477ab3a005ff27c527486f551883535aea2f",
|
||||
"rev": "a21e87b878e72ee5dfd375899e8b2ad0d0c4c0e1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -621,11 +631,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777159683,
|
||||
"narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=",
|
||||
"lastModified": 1786464033,
|
||||
"narHash": "sha256-QM8Qe4/L8lpdVN4bgwahmi+jyyc4fisseDMe4afcDxA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404",
|
||||
"rev": "62e62c1ca23da17612c6890d4ad2064f575643db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -653,11 +663,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778410714,
|
||||
"narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
|
||||
"lastModified": 1786464294,
|
||||
"narHash": "sha256-ZQsZ2WvBdkboCIyh8LStDPdAIARmxzn0XMNxxoOhjPE=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
|
||||
"rev": "4ce7cd6b6128c1ac41caf23c58a30a26b327f9dd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -668,11 +678,11 @@
|
||||
},
|
||||
"import-tree": {
|
||||
"locked": {
|
||||
"lastModified": 1784254960,
|
||||
"narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=",
|
||||
"lastModified": 1788467110,
|
||||
"narHash": "sha256-ljEMTXP/rH0tOvDzc9gzwww6KcHRPRnEHzd9lK48V7s=",
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69",
|
||||
"rev": "eb1b52eaecc57f7c136d07ae8a93e724dfecac46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -683,11 +693,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1782233679,
|
||||
"narHash": "sha256-QyuGP5+QOtmXpy4i2X4DhBVBaySBdDKQEhqKcphcp34=",
|
||||
"lastModified": 1790113641,
|
||||
"narHash": "sha256-D2aaQetafdpHxbwA4ldAxs51UX0b11pXL+JL/5L8VrM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "667d5cf1c59585031d743c78b394b0a647537c35",
|
||||
"rev": "1bc55b9def8165e82073919945c3239903fe4dc2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -699,11 +709,11 @@
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1782614948,
|
||||
"narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=",
|
||||
"lastModified": 1788057806,
|
||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c",
|
||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -758,39 +768,23 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1789546076,
|
||||
"narHash": "sha256-zVxLZiSnmaaPLwnhj7pwmqe3axBg/C6nG5JZsJMh2g4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b1b875982b17dabde9b4a37f3e229e74913e6db3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_10": {
|
||||
"locked": {
|
||||
"lastModified": 1744536153,
|
||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_11": {
|
||||
"locked": {
|
||||
"lastModified": 1780336545,
|
||||
"narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_12": {
|
||||
"locked": {
|
||||
"lastModified": 1781577229,
|
||||
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
||||
@@ -808,11 +802,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1784356753,
|
||||
"narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=",
|
||||
"lastModified": 1789684949,
|
||||
"narHash": "sha256-ZKhUe/2IJUq1JhKxKMu8rbkgSGmPP2ZCqlIPn40aGCM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
|
||||
"rev": "e554fab72f81915600f3f449b786fd9af40439a5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -823,22 +817,6 @@
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1785090369,
|
||||
"narHash": "sha256-m0pDuRJG7EDo9ri+4Ksu83VsI+PlxNC9lNBfydejce4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "624af665418d3c65d544145b4d34ad696439570e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1782175435,
|
||||
"narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=",
|
||||
@@ -854,13 +832,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1773734432,
|
||||
"narHash": "sha256-IF5ppUWh6gHGHYDbtVUyhwy/i7D261P7fWD1bPefOsw=",
|
||||
"lastModified": 1787498568,
|
||||
"narHash": "sha256-9i/VTdusq/+NM/tz+J1Re+ojkMB8MBf0QshnYfzHz30=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cda48547b432e8d3b18b4180ba07473762ec8558",
|
||||
"rev": "56c02bc00adcf003215cc4bd996d6efaf4cff188",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -870,13 +848,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1785386831,
|
||||
"narHash": "sha256-sPS3CaXH8RAT3FZRuy4VcV47iuYIWMMfa0GbyJKC3o4=",
|
||||
"lastModified": 1789542786,
|
||||
"narHash": "sha256-ajQuqcxnj6RYnwCjA/9FTCnrdR2+BDzstE8UembXf60=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "21ea275a7c46aef9d4d6ddc962e6d562e9d94183",
|
||||
"rev": "4c7870105e7f1fdf9c48688c8d7efc21abf0688a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -886,13 +864,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1782467914,
|
||||
"narHash": "sha256-pGvFkM8N0xEkIIXDe5YYfbEAvHrk4IxBrjB/x8OomhE=",
|
||||
"lastModified": 1787070829,
|
||||
"narHash": "sha256-vXNVDVtvfiQuXthP0NHPFdNvvMTkGpx0UP8oddIWbNk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e73de5be04e0eff4190a1432b946d469c794e7b4",
|
||||
"rev": "0ae2bc1419c3f345984c2629e72e7a631820fa4d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -902,13 +880,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_8": {
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1780336545,
|
||||
"narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=",
|
||||
"lastModified": 1786719841,
|
||||
"narHash": "sha256-QcpQOT0NQEFkI77t+YXPZqDJc35iIodG7zinieOwFUg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f",
|
||||
"rev": "8be7bd0c83f12e2e3bbba07c9044d6fed9e66f7f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -918,7 +896,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_9": {
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1783224372,
|
||||
"narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
|
||||
@@ -934,17 +912,33 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1788431191,
|
||||
"narHash": "sha256-MFClkboDeW56feBCAeAV3Z3J2quGSZFlAOXQ4JjIlIA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9b9402b959a2276982ddd5ad3652a38b97f7c40b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nvim": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"wrappers": "wrappers_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1786377545,
|
||||
"narHash": "sha256-I5/PcFU0jlDw6+32MXpMGJxxHqWBUdYCt6DzFDctybw=",
|
||||
"lastModified": 1787153199,
|
||||
"narHash": "sha256-FpLklQh5O31LY0GejnphNaGI/GZpuRltF9eZbAKlWkk=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "dc386a5f5cf31925c513a3a39f546d5364289095",
|
||||
"revCount": 100,
|
||||
"rev": "759a8455709d9c098a0201fb581801d41b270b29",
|
||||
"revCount": 105,
|
||||
"type": "git",
|
||||
"url": "https://git.voidarc.co.uk/voidarc/nvim"
|
||||
},
|
||||
@@ -985,11 +979,11 @@
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1783875707,
|
||||
"narHash": "sha256-Ryg3PqFcGydelQpgPF0j8GMaXaGDrNTSesEy6fDw/eg=",
|
||||
"lastModified": 1789817313,
|
||||
"narHash": "sha256-ylVsprB4GxLJMvYQUFtMOz8x8D1Mp7FPudbn89wCasU=",
|
||||
"owner": "kuokuo123",
|
||||
"repo": "otter-launcher",
|
||||
"rev": "242e5da4f0acc0b4301be7b4546f5afb3e4b23d6",
|
||||
"rev": "d764523df810d2b601222009393e886495100fb8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1008,11 +1002,11 @@
|
||||
"systems": "systems_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1783875707,
|
||||
"narHash": "sha256-Ryg3PqFcGydelQpgPF0j8GMaXaGDrNTSesEy6fDw/eg=",
|
||||
"lastModified": 1789296134,
|
||||
"narHash": "sha256-PDe/T14bM7mXQM3gwwdgMHKW8Nsfpbqto9FxsL85Jdc=",
|
||||
"owner": "kuokuo123",
|
||||
"repo": "otter-launcher",
|
||||
"rev": "242e5da4f0acc0b4301be7b4546f5afb3e4b23d6",
|
||||
"rev": "9d82c9770f0cad7006e3930a48343a59105c55e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1031,11 +1025,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784288435,
|
||||
"narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
|
||||
"lastModified": 1789514889,
|
||||
"narHash": "sha256-PFD1nxptCXJyJoiYO1gf/5Vv43yqGpHtMC6LUhl9/pQ=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
|
||||
"rev": "59f4ca0d063a1a3ec722c88b51a33004862e5379",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1047,11 +1041,11 @@
|
||||
"quickshell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1786547899,
|
||||
"narHash": "sha256-QxLEKq1R455FlEmaarx3cq9mk4jSBxHg3CyseLiOick=",
|
||||
"lastModified": 1790440634,
|
||||
"narHash": "sha256-5kU5Ryam1gIyt7mfDqtHYk+bUYmuDh00HpeUGzZqz0k=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "e33041b66c66a1b68930bfd3bb58746ffbd5f4b2",
|
||||
"revCount": 72,
|
||||
"rev": "297f3fe688c8039262796e8b56c975d9398c2a12",
|
||||
"revCount": 93,
|
||||
"type": "git",
|
||||
"url": "https://git.voidarc.co.uk/voidarc/quickshell"
|
||||
},
|
||||
@@ -1065,53 +1059,57 @@
|
||||
"davinci": "davinci",
|
||||
"flake-parts": "flake-parts",
|
||||
"gotify-desktop": "gotify-desktop",
|
||||
"hyprgrass": "hyprgrass",
|
||||
"hyprland": "hyprland",
|
||||
"import-tree": "import-tree",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nvim": "nvim",
|
||||
"omnisearch": "omnisearch",
|
||||
"otter-launcher": "otter-launcher_2",
|
||||
"quickshell": "quickshell",
|
||||
"sls-steam": "sls-steam",
|
||||
"weylus": "weylus",
|
||||
"sops-nix": "sops-nix",
|
||||
"woomer": "woomer_2",
|
||||
"wrappers": "wrappers_3",
|
||||
"wshowkeys": "wshowkeys_2"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"sls-steam": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784438913,
|
||||
"narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "afacd6819d3765a05814ee8e3de74c77d42ac799",
|
||||
"lastModified": 1788435466,
|
||||
"narHash": "sha256-A6izbjMpkQpQxQDFHx5SXw5/1gwTTzO0Vz+1sjPTGdw=",
|
||||
"owner": "AceSLS",
|
||||
"repo": "SLSsteam",
|
||||
"rev": "71021ad32e47ad4382717f63c53d2d06d44be3bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"owner": "AceSLS",
|
||||
"repo": "SLSsteam",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"sls-steam": {
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785411317,
|
||||
"narHash": "sha256-r/YV6psmPZj9aSMydTmOooTBLFiwMJoCWnaKkUlXiss=",
|
||||
"owner": "AceSLS",
|
||||
"repo": "SLSsteam",
|
||||
"rev": "b3da36b024f565f79ee19b44bea493af3f48ea95",
|
||||
"lastModified": 1790247521,
|
||||
"narHash": "sha256-TNfgoHsqsYYvaJImlWctfRkh4PseTagzegU1Dgdbehw=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "2bd00bd9bb35fe6d114888c8f1c2e946c541dd8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "AceSLS",
|
||||
"repo": "SLSsteam",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -1235,21 +1233,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_9": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
@@ -1268,32 +1251,10 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"weylus": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784471251,
|
||||
"narHash": "sha256-07//RRO1xhgR4lKyq460+iOEDHUw21rJRi59fMUhLfM=",
|
||||
"owner": "voidarclabs",
|
||||
"repo": "WeylusCommunityEdition",
|
||||
"rev": "bcf34c2a2c9d3cbac00ca0d3e6ede5b3bbc6a18c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "voidarclabs",
|
||||
"repo": "WeylusCommunityEdition",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"woomer": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
@@ -1316,32 +1277,32 @@
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_8"
|
||||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782685056,
|
||||
"narHash": "sha256-WJasTKjf1hcxdCc+jKL3dU5RIL2zdYJ/OBFTmIUbuXc=",
|
||||
"owner": "coffeeispower",
|
||||
"lastModified": 1787575546,
|
||||
"narHash": "sha256-IHHEp8Hv4p+Cm+u4cmQnpRAUSeGaCAEp07uFRRzEgjk=",
|
||||
"owner": "voidarclabs",
|
||||
"repo": "woomer",
|
||||
"rev": "a7a0b288f70b98d168eaa0e8714816d3583c33b1",
|
||||
"rev": "ca331daf3bda84e9079e629a69d84920a917ff4f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "coffeeispower",
|
||||
"owner": "voidarclabs",
|
||||
"repo": "woomer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"wrappers": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785177581,
|
||||
"narHash": "sha256-9Z4l080DSrHMxoQTZTpVsML2h6JDuB9lDwHPsLd9BrQ=",
|
||||
"lastModified": 1789546006,
|
||||
"narHash": "sha256-hv8Y2AcOGuCoI/5fVjPZzCAOygTbL9wvvY9HKXvvLEk=",
|
||||
"owner": "lassulus",
|
||||
"repo": "wrappers",
|
||||
"rev": "f57bc81aa9669871343341b13aa175c8927b6a74",
|
||||
"rev": "e6676c0f59edd80dc1afb6a00047f5578095e4cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1352,14 +1313,14 @@
|
||||
},
|
||||
"wrappers_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782135443,
|
||||
"narHash": "sha256-vAmbArdCyjqpVW+37aCy/PMBOLIqukUXLQuEKLwUhA4=",
|
||||
"lastModified": 1786998037,
|
||||
"narHash": "sha256-QJ8QmuqmiOiHCT0HidqwlRpejNfCVcizLmLtzRWHWeQ=",
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nix-wrapper-modules",
|
||||
"rev": "6e7f66fa2cdf4d63162580b438f7fcf87c28a46f",
|
||||
"rev": "780954265c11444ed0c9e164115360f4f5d24d0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1370,14 +1331,14 @@
|
||||
},
|
||||
"wrappers_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_11"
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782135443,
|
||||
"narHash": "sha256-vAmbArdCyjqpVW+37aCy/PMBOLIqukUXLQuEKLwUhA4=",
|
||||
"lastModified": 1788981141,
|
||||
"narHash": "sha256-7xWS16u13YGlRNKWaAPzRbEyh4OLOXJe31k7h4AnXNU=",
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nix-wrapper-modules",
|
||||
"rev": "6e7f66fa2cdf4d63162580b438f7fcf87c28a46f",
|
||||
"rev": "1db3c116a6aa61823f8d8f3c47c306846428fc54",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1410,19 +1371,19 @@
|
||||
},
|
||||
"wshowkeys_2": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_12"
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781708685,
|
||||
"narHash": "sha256-NH5b736WoI9LodJKPlonO1X+Lxg8URMLLRkT5to61Zg=",
|
||||
"owner": "voidarclabs",
|
||||
"lastModified": 1785224811,
|
||||
"narHash": "sha256-8upkB3179A8wP5Hph0EanE0VuIxe7VsmsqzcRaOq5y0=",
|
||||
"owner": "DreamMaoMao",
|
||||
"repo": "wshowkeys",
|
||||
"rev": "47dfb7a0237acbf847ca28cbb88000b33929f50a",
|
||||
"rev": "35d70762ab9af4ea301853e79b3b925d5fe9e920",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "voidarclabs",
|
||||
"owner": "DreamMaoMao",
|
||||
"repo": "wshowkeys",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -1461,11 +1422,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1784371182,
|
||||
"narHash": "sha256-S8A1lezEalltWcCp3gAic5lssS0xTSISK6fKODefhOk=",
|
||||
"lastModified": 1788025068,
|
||||
"narHash": "sha256-TBqronrrc/F2Ry/E37d/1TLldDLJDFNSwvJjgk+cXzU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "08d99f727944dd15e4740090305e31c5fb92a50a",
|
||||
"rev": "ba31964ee42b56bcb0d3b78a64ead5d8a1c3c6f6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
16
flake.nix
@@ -4,11 +4,17 @@
|
||||
inputs = {
|
||||
# System
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
# Apps
|
||||
nvim.url = "git+https://git.voidarc.co.uk/voidarc/nvim";
|
||||
hyprland = {
|
||||
url = "git+https://git.voidarc.co.uk/voidarc/hypr";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprgrass = {
|
||||
url = "github:horriblename/hyprgrass";
|
||||
inputs.hyprland.follows = "hyprland/hyprland";
|
||||
};
|
||||
otter-launcher = {
|
||||
url = "github:kuokuo123/otter-launcher";
|
||||
@@ -29,12 +35,14 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
woomer = {
|
||||
url = "github:coffeeispower/woomer";
|
||||
url = "github:voidarclabs/woomer";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
wshowkeys.url = "github:voidarclabs/wshowkeys";
|
||||
weylus = {
|
||||
url = "github:voidarclabs/WeylusCommunityEdition";
|
||||
wshowkeys.url = "github:DreamMaoMao/wshowkeys";
|
||||
|
||||
# Secrets and stuff
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
|
||||
@@ -3,11 +3,14 @@
|
||||
moduleWithSystem,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.gaming = moduleWithSystem ({...}: let
|
||||
flake.nixosModules.gaming = moduleWithSystem ({pkgs, ...}: let
|
||||
modules = with self.nixosModules; [
|
||||
steam
|
||||
];
|
||||
in {
|
||||
imports = modules;
|
||||
environment.systemPackages = with pkgs; [
|
||||
prismlauncher
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
11
modules/attrs/music/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{moduleWithSystem, ...}: {
|
||||
flake.nixosModules.music = moduleWithSystem ({pkgs, unfreePkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
ardour
|
||||
unfreePkgs.vital
|
||||
distrho-ports
|
||||
cardinal
|
||||
calf
|
||||
];
|
||||
});
|
||||
}
|
||||
27
modules/features/distcc/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{moduleWithSystem, ...}: {
|
||||
flake.nixosModules.distcc = moduleWithSystem ({unstablePkgs, ...}: {
|
||||
services.distccd = {
|
||||
enable = true;
|
||||
allowedClients = ["192.168.1.0/24"];
|
||||
};
|
||||
systemd.services.distccd = {
|
||||
serviceConfig = {
|
||||
Environment = [
|
||||
"\"PATH=/run/wrappers/bin:/run/current-system/sw/bin:/usr/bin:/bin\""
|
||||
"DISTCCD_PATH=/run/current-system/sw/bin:/run/wrappers/bin:/usr/bin:/bin"
|
||||
];
|
||||
};
|
||||
};
|
||||
environment.systemPackages = let
|
||||
pkgs = unstablePkgs;
|
||||
lib = pkgs.lib;
|
||||
in [
|
||||
(pkgs.writeShellScriptBin "x86_64-pc-linux-gnu-gcc" ''
|
||||
exec ${lib.getExe pkgs.gcc15} "$@"
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "x86_64-pc-linux-gnu-g++" ''
|
||||
exec ${lib.getExe' pkgs.gcc15 "g++"} "$@"
|
||||
'')
|
||||
];
|
||||
});
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
inputs,
|
||||
inputs,
|
||||
moduleWithSystem,
|
||||
...
|
||||
}: {
|
||||
@@ -15,11 +15,10 @@ inputs,
|
||||
}: {
|
||||
packages = {
|
||||
gotify-desktop = let
|
||||
# Requires gpg keyring cert in order to get api key
|
||||
config-file = pkgs.writeText "config.toml" ''
|
||||
[gotify]
|
||||
url = "wss://ntfy.voidarc.co.uk:443"
|
||||
token = { command = "${pkgs.gnupg}/bin/gpg --quiet --batch --decrypt ${./gotify-key.secret}" }
|
||||
token = { command = "cat /run/secrets/gotify-desktop-key"}
|
||||
[notification]
|
||||
min_priority = 1
|
||||
'';
|
||||
|
||||
@@ -8,11 +8,13 @@
|
||||
self',
|
||||
pkgs,
|
||||
inputs',
|
||||
flakeLocation,
|
||||
...
|
||||
}: {config, ...}: let
|
||||
modules = with self.nixosModules; [
|
||||
audio
|
||||
systemTheme
|
||||
quickshell
|
||||
];
|
||||
|
||||
runtimePkgs = self'.packages.hyprland.passthru.runtimePackages;
|
||||
@@ -24,32 +26,66 @@
|
||||
else lib.getExe pkg;
|
||||
in {
|
||||
imports = modules;
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
package = self'.packages.hyprland;
|
||||
|
||||
options = {
|
||||
tabletSupport = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable tablet support across all modules";
|
||||
};
|
||||
};
|
||||
|
||||
services.displayManager.defaultSession = "hyprland";
|
||||
services.xserver.enable = true;
|
||||
security.polkit.enable = true;
|
||||
config = {
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
package = self'.packages.hyprland;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
hyprlock
|
||||
gsettings-desktop-schemas
|
||||
];
|
||||
services.displayManager.defaultSession = "hyprland";
|
||||
services.xserver.enable = true;
|
||||
services.seatd.enable = true;
|
||||
security.polkit.enable = true;
|
||||
|
||||
system.activationScripts.hyprRuntimeEnv = lib.stringAfter ["specialfs"] ''
|
||||
mkdir -p /run/hypr-runtime-env/bin
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: pkg: ''
|
||||
ln -sfn ${runtimeTarget name pkg} /run/hypr-runtime-env/bin/${name}
|
||||
'')
|
||||
runtimePkgs)}
|
||||
'';
|
||||
environment.systemPackages = with pkgs; [
|
||||
gsettings-desktop-schemas
|
||||
glib
|
||||
];
|
||||
|
||||
system.activationScripts.hyprConfig = lib.stringAfter ["specialfs"] ''
|
||||
mkdir -p /run/hypr/config
|
||||
ln -sfn ${inputs'.hyprland.packages.repo-files}/* /run/hypr/config
|
||||
'';
|
||||
system.activationScripts.hyprRuntimeEnv = lib.stringAfter ["specialfs"] ''
|
||||
mkdir -p /run/hypr-runtime-env/bin
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: pkg: ''
|
||||
ln -sfn ${runtimeTarget name pkg} /run/hypr-runtime-env/bin/${name}
|
||||
'')
|
||||
runtimePkgs)}
|
||||
'';
|
||||
|
||||
system.activationScripts.hyprConfig = let
|
||||
hyprgrassPath = "${inputs'.hyprgrass.packages.default}/lib/libhyprgrass.so";
|
||||
pluginFile = pkgs.writeText "plugins.lua" ''
|
||||
hl.on("hyprland.start", function ()
|
||||
${lib.optionalString config.tabletSupport ''
|
||||
hl.exec_cmd("hyprctl plugin load ${hyprgrassPath}")
|
||||
''}
|
||||
end)
|
||||
'';
|
||||
# Easy way to get nix runtime info (ie the directory the config is at)
|
||||
# into hyprland to run commands and stuff
|
||||
runtimeFile = pkgs.writeText "runtime.lua" ''
|
||||
hl.on("hyprland.start", function ()
|
||||
${lib.optionalString (flakeLocation != "") ''
|
||||
hl.exec_cmd( 'curl -X POST -H "Content-Type: application/json" -d "{\"ref\":\"$(git -C ${flakeLocation} rev-parse HEAD)\", \"status\":\"$(git -C ${flakeLocation} diff --quiet && echo "clean" || echo "dirty")\"}" https://n8n.voidarc.co.uk/webhook/config-checker' )
|
||||
''}
|
||||
end)
|
||||
'';
|
||||
in
|
||||
lib.stringAfter ["specialfs"] ''
|
||||
mkdir -p /run/hypr/config
|
||||
rm -rf /run/hypr/config/*
|
||||
ln -sfn ${inputs'.hyprland.packages.repo-files}/* /run/hypr/config
|
||||
ln -sfn ${pluginFile} /run/hypr/config/plugins.lua
|
||||
ln -sfn ${runtimeFile} /run/hypr/config/runtime.lua
|
||||
'';
|
||||
};
|
||||
});
|
||||
perSystem = {
|
||||
self',
|
||||
@@ -61,6 +97,7 @@
|
||||
hyprland = inputs'.hyprland.packages.default.override {
|
||||
flags."--config" = "/run/hypr/config/hyprland.lua";
|
||||
env."MODULES_ROOT" = "/run/hypr/config/modules";
|
||||
env."HYPRLAND_ROOT" = "/run/hypr/config";
|
||||
runtimePackages =
|
||||
inputs.hyprland.lib.defaultRuntimePkgs.${system}
|
||||
// {
|
||||
@@ -68,10 +105,9 @@
|
||||
kitty = self'.packages.kitty;
|
||||
gotify-desktop = self'.packages.gotify-desktop;
|
||||
otter-launcher = self'.packages.otter-launcher;
|
||||
hyprlock = self'.packages.hyprlock;
|
||||
quickshell = self'.packages.quickshell;
|
||||
wshowkeys = self'.packages.wshowkeys;
|
||||
waybar = self'.packages.waybar;
|
||||
wlogout = self'.packages.wlogout;
|
||||
way-edges = self'.packages.way-edges;
|
||||
};
|
||||
};
|
||||
|
||||
BIN
modules/features/hyprlock/cat.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
129
modules/features/hyprlock/default.nix
Normal file
@@ -0,0 +1,129 @@
|
||||
{
|
||||
inputs,
|
||||
moduleWithSystem,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.hyprlock = moduleWithSystem ({self', ...}: {
|
||||
environment.systemPackages = with self'.packages; [
|
||||
hyprock
|
||||
];
|
||||
});
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.hyprlock = inputs.wrappers.wrappers.hyprlock.wrap {
|
||||
inherit pkgs;
|
||||
"hyprlock.conf".content = ''
|
||||
source = ${./mocha.conf}
|
||||
|
||||
$accent = $mauve
|
||||
$accentAlpha = $mauveAlpha
|
||||
$font = FiraMono Nerd Font
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 3
|
||||
color = rgba(0, 0, 0, 0)
|
||||
}
|
||||
|
||||
|
||||
# LAYOUT
|
||||
label {
|
||||
monitor =
|
||||
text = Layout: $LAYOUT
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
position = -30, 0
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = -30, -150
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# FINGERPRINT
|
||||
{
|
||||
monitor = "";
|
||||
text = "$FPRINTPROMPT";
|
||||
color = "$text";
|
||||
font_size = 14;
|
||||
font_family = $font;
|
||||
position = "0, -107";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
|
||||
image {
|
||||
path = ${./cat.png}
|
||||
size = 240
|
||||
border_color = transparent
|
||||
rounding = 0
|
||||
position = 0, 7px
|
||||
}
|
||||
|
||||
# USER AVATAR
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/.face
|
||||
size = 100
|
||||
border_color = $accent
|
||||
position = 0, 75
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 60
|
||||
outline_thickness = 4
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = $accent
|
||||
inner_color = $surface0
|
||||
font_color = $text
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||
hide_input = false
|
||||
check_color = $accent
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
position = 0, -47
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
79
modules/features/hyprlock/mocha.conf
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
$rosewater = rgb(f5e0dc)
|
||||
$rosewaterAlpha = f5e0dc
|
||||
|
||||
$flamingo = rgb(f2cdcd)
|
||||
$flamingoAlpha = f2cdcd
|
||||
|
||||
$pink = rgb(f5c2e7)
|
||||
$pinkAlpha = f5c2e7
|
||||
|
||||
$mauve = rgb(cba6f7)
|
||||
$mauveAlpha = cba6f7
|
||||
|
||||
$red = rgb(f38ba8)
|
||||
$redAlpha = f38ba8
|
||||
|
||||
$maroon = rgb(eba0ac)
|
||||
$maroonAlpha = eba0ac
|
||||
|
||||
$peach = rgb(fab387)
|
||||
$peachAlpha = fab387
|
||||
|
||||
$yellow = rgb(f9e2af)
|
||||
$yellowAlpha = f9e2af
|
||||
|
||||
$green = rgb(a6e3a1)
|
||||
$greenAlpha = a6e3a1
|
||||
|
||||
$teal = rgb(94e2d5)
|
||||
$tealAlpha = 94e2d5
|
||||
|
||||
$sky = rgb(89dceb)
|
||||
$skyAlpha = 89dceb
|
||||
|
||||
$sapphire = rgb(74c7ec)
|
||||
$sapphireAlpha = 74c7ec
|
||||
|
||||
$blue = rgb(89b4fa)
|
||||
$blueAlpha = 89b4fa
|
||||
|
||||
$lavender = rgb(b4befe)
|
||||
$lavenderAlpha = b4befe
|
||||
|
||||
$text = rgb(cdd6f4)
|
||||
$textAlpha = cdd6f4
|
||||
|
||||
$subtext1 = rgb(bac2de)
|
||||
$subtext1Alpha = bac2de
|
||||
|
||||
$subtext0 = rgb(a6adc8)
|
||||
$subtext0Alpha = a6adc8
|
||||
|
||||
$overlay2 = rgb(9399b2)
|
||||
$overlay2Alpha = 9399b2
|
||||
|
||||
$overlay1 = rgb(7f849c)
|
||||
$overlay1Alpha = 7f849c
|
||||
|
||||
$overlay0 = rgb(6c7086)
|
||||
$overlay0Alpha = 6c7086
|
||||
|
||||
$surface2 = rgb(585b70)
|
||||
$surface2Alpha = 585b70
|
||||
|
||||
$surface1 = rgb(45475a)
|
||||
$surface1Alpha = 45475a
|
||||
|
||||
$surface0 = rgb(313244)
|
||||
$surface0Alpha = 313244
|
||||
|
||||
$base = rgb(1e1e2e)
|
||||
$baseAlpha = 1e1e2eee
|
||||
|
||||
$mantle = rgb(181825)
|
||||
$mantleAlpha = 181825
|
||||
|
||||
$crust = rgb(11111b)
|
||||
$crustAlpha = 11111b
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
set $mod Mod4
|
||||
set $mod Mod1
|
||||
set $term kitty
|
||||
set $menu dmenu_run
|
||||
|
||||
|
||||
@@ -18,17 +18,21 @@
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
package = self'.packages.i3;
|
||||
extraPackages = with pkgs;
|
||||
[
|
||||
dmenu
|
||||
i3status
|
||||
xinit
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
dmenu
|
||||
i3status
|
||||
xinit
|
||||
];
|
||||
};
|
||||
};
|
||||
});
|
||||
perSystem = {pkgs, self', ...}: {
|
||||
packages.i3 = inputs.wrappers.lib.wrapPackage ({...}: {
|
||||
perSystem = {
|
||||
pkgs,
|
||||
lib,
|
||||
self',
|
||||
...
|
||||
}: {
|
||||
packages.i3 = lib.warn "i3 is no longer maintained and therefore marked as deprecated" inputs.wrappers.lib.wrapPackage ({...}: {
|
||||
inherit pkgs;
|
||||
package = pkgs.i3;
|
||||
runtimePkgs = with pkgs;
|
||||
|
||||
@@ -7,10 +7,20 @@
|
||||
self',
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = with self'.packages; [
|
||||
quickshell
|
||||
];
|
||||
}: {config, ...}: {
|
||||
environment.systemPackages = with self'.packages;
|
||||
[
|
||||
quickshell
|
||||
]
|
||||
++ (
|
||||
if config.tabletSupport == true
|
||||
then
|
||||
# If on tablet enable on screen keyboard
|
||||
(with pkgs; [
|
||||
wvkbd
|
||||
])
|
||||
else []
|
||||
);
|
||||
});
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.quickshell = inputs.wrappers.wrappers.quickshell.wrap {
|
||||
|
||||
24
modules/features/sops/default.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{inputs, ...}: {
|
||||
flake.nixosModules.sops = {config, ...}: {
|
||||
imports = [inputs.sops-nix.nixosModules.sops];
|
||||
|
||||
sops = {
|
||||
age.keyFile = "/etc/sops/age/keys.txt";
|
||||
defaultSopsFile = ./secrets.yaml;
|
||||
|
||||
secrets = {
|
||||
gotify-desktop-key = {
|
||||
# Make readable
|
||||
mode = "0444";
|
||||
};
|
||||
};
|
||||
templates = {
|
||||
"gotify-desktop-key".content = config.sops.placeholder.gotify-desktop-key;
|
||||
};
|
||||
};
|
||||
# Make the secrets dir readable to normal users
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /run/secrets 0755 root root -"
|
||||
];
|
||||
};
|
||||
}
|
||||
16
modules/features/sops/secrets.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
gotify-desktop-key: ENC[AES256_GCM,data:kMCJfkrf5jKAgjX9hT9S,iv:T/zDp94522MeW6V3874JgyaQCx5H1qY+DsZOoPBaC1w=,tag:Csu+9imWiMBYXaE0uXzMsg==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKR3ZQTzVxWWFFam91Y1V0
|
||||
VGdnSkZFcmJ6RG1JOHp3R1puY2ZRazkxbmlZCjYyek5QOWEzaWg2bnpXc0ZrNks0
|
||||
QUl2Nk45R1h6WjFTSWlveUF5RHlRcEUKLS0tIE5mYmQ1aWpvNGNjYzJrUW9DSXpm
|
||||
MS8ralY4WDI1YjhNSmRWYWxYL3VkbDAKQuLvaHiUXkwiaOif10vrl3LFh/4mKQUV
|
||||
Y3HJ9Jr3DAyokEzN7S/S1v50coM1bE4d74SS/V1uIw0nYdZRUGrZww==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1rg4rsns375z2zj4tv8cyqtjl504fw8tprlmj2w057dz6ztttjstsgjvkvy
|
||||
lastmodified: "2026-09-25T19:37:14Z"
|
||||
mac: ENC[AES256_GCM,data:OMk7qEbx9F/qa6zERu23fNyTzfxbTJZnPyPdVbXhZvjX+KB8pFE1bks6Qfw/C0TwcYsUBIFgr/YO0IaBLStkdoADpeqN4wRbunwTCND0w6V3ZOGza7+5UiT0Zp2KEamuTTco4mDdBUoBkid+aW0jlqAfKtZ4v9VH34IsEOjT2T8=,iv:uqMTZj/rsMFmOWy4aXblmsZ4TVji2i8SfqpCs21VQOU=,tag:x4LtAV6+i8npKygjWjDRpQ==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.3
|
||||
151
modules/features/vim/cyberdream.vim
Normal file
@@ -0,0 +1,151 @@
|
||||
" cyberdream.vim - Cyberdream theme for Vim
|
||||
" Maintainer: 0l3d
|
||||
" Description: Cyberdream theme for Vim
|
||||
|
||||
highlight clear
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
let g:colors_name = "cyberdream"
|
||||
set termguicolors
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Core UI
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight Normal guifg=#ffffff guibg=#16181a
|
||||
highlight NormalNC guifg=#ffffff guibg=#16181a
|
||||
highlight Cursor guifg=#16181a guibg=#ffffff
|
||||
highlight CursorLine guibg=#3c4048
|
||||
highlight CursorColumn guibg=#3c4048
|
||||
highlight CursorLineNr guifg=#7b8496
|
||||
highlight LineNr guifg=#7b8496
|
||||
highlight ColorColumn guibg=#3c4048
|
||||
highlight Visual guibg=#3c4048
|
||||
highlight VisualNOS guibg=#3c4048
|
||||
highlight MatchParen guifg=#ff5ea0 guibg=#3c4048
|
||||
highlight Search guifg=#1e2124 guibg=#ffffff
|
||||
highlight IncSearch guifg=#1e2124 guibg=#5ef1ff
|
||||
highlight CurSearch guifg=#1e2124 guibg=#5ef1ff
|
||||
highlight Directory guifg=#5ea1ff
|
||||
highlight VertSplit guifg=#3c4048 guibg=#16181a
|
||||
highlight WinSeparator guifg=#3c4048 guibg=#16181a
|
||||
highlight EndOfBuffer guifg=#7b8496
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Popup / Float
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight NormalFloat guifg=#ffffff guibg=#16181a
|
||||
highlight FloatBorder guifg=#3c4048 guibg=#16181a
|
||||
highlight FloatTitle guifg=#5ef1ff guibg=#16181a
|
||||
|
||||
highlight Pmenu guifg=#ffffff guibg=#16181a
|
||||
highlight PmenuSel guifg=#ffffff guibg=#3c4048
|
||||
highlight PmenuSbar guifg=#16181a guibg=#3c4048
|
||||
highlight PmenuThumb guifg=#16181a guibg=#3c4048
|
||||
highlight PmenuMatch guifg=#5ef1ff guibg=#3c4048
|
||||
highlight PmenuMatchSel guifg=#5ef1ff guibg=#3c4048
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Diff
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight DiffAdd guifg=#5eff6c guibg=#3c4048
|
||||
highlight DiffChange guifg=#5ea1ff guibg=#3c4048
|
||||
highlight DiffDelete guifg=#ff6e5e guibg=#3c4048
|
||||
highlight DiffText guifg=#ffbd5e guibg=#3c4048
|
||||
|
||||
highlight Added guifg=#5eff6c
|
||||
highlight Removed guifg=#ff6e5e
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Diagnostics / LSP
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight DiagnosticError guifg=#ff6e5e
|
||||
highlight DiagnosticWarn guifg=#ffe95e
|
||||
highlight DiagnosticInfo guifg=#5ea1ff
|
||||
highlight DiagnosticHint guifg=#5ef1ff
|
||||
highlight DiagnosticUnnecessary guifg=#7b8496
|
||||
|
||||
highlight DiagnosticVirtualTextError guifg=#ff6e5e
|
||||
highlight DiagnosticVirtualTextWarn guifg=#ffe95e
|
||||
highlight DiagnosticVirtualTextInfo guifg=#5ea1ff
|
||||
highlight DiagnosticVirtualTextHint guifg=#5ef1ff
|
||||
|
||||
highlight DiagnosticUnderlineError gui=undercurl guisp=#ff6e5e
|
||||
highlight DiagnosticUnderlineWarn gui=undercurl guisp=#ffe95e
|
||||
highlight DiagnosticUnderlineInfo gui=undercurl guisp=#5ea1ff
|
||||
highlight DiagnosticUnderlineHint gui=undercurl guisp=#5ef1ff
|
||||
|
||||
highlight LspReferenceText guibg=#3c4048
|
||||
highlight LspReferenceRead guibg=#3c4048
|
||||
highlight LspReferenceWrite guibg=#3c4048
|
||||
highlight LspSignatureActiveParameter guifg=#ffbd5e
|
||||
highlight LspCodeLens guifg=#7b8496
|
||||
highlight LspInlayHint guifg=#7b8496
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Syntax
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight Comment guifg=#7b8496 gui=italic
|
||||
highlight Constant guifg=#ffbd5e
|
||||
highlight String guifg=#5eff6c
|
||||
highlight Character guifg=#5eff6c
|
||||
highlight Boolean guifg=#ffbd5e
|
||||
highlight Number guifg=#ffbd5e
|
||||
|
||||
highlight Identifier guifg=#5ea1ff
|
||||
highlight Function guifg=#5ea1ff
|
||||
|
||||
highlight Statement guifg=#bd5eff
|
||||
highlight Operator guifg=#bd5eff
|
||||
highlight Keyword guifg=#ffbd5e
|
||||
highlight PreProc guifg=#bd5eff
|
||||
highlight Label guifg=#5ef1ff
|
||||
|
||||
highlight Type guifg=#ffe95e
|
||||
highlight Special guifg=#ff5ea0
|
||||
highlight Delimiter guifg=#ffffff
|
||||
|
||||
highlight Debug guifg=#ffbd5e
|
||||
|
||||
highlight Error guifg=#ff6e5e
|
||||
highlight Todo guifg=#bd5eff gui=bold
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Markdown
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight markdownHeadingDelimiter guifg=#7b8496
|
||||
highlight markdownCode guifg=#5ef1ff
|
||||
highlight markdownCodeBlock guifg=#5ef1ff
|
||||
highlight markdownH1 guifg=#ffbd5e gui=bold
|
||||
highlight markdownH2 guifg=#5ef1ff gui=bold
|
||||
highlight markdownH3 guifg=#5ea1ff gui=bold
|
||||
highlight markdownH4 guifg=#bd5eff gui=bold
|
||||
highlight markdownH5 guifg=#ff5ef1 gui=bold
|
||||
highlight markdownH6 guifg=#5eff6c gui=bold
|
||||
highlight markdownLinkText guifg=#5ea1ff gui=underline
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" UI Bars
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight StatusLine guifg=#ffffff guibg=#16181a
|
||||
highlight StatusLineNC guifg=#7b8496 guibg=#16181a
|
||||
highlight TabLine guifg=#7b8496 guibg=#16181a
|
||||
highlight TabLineFill guifg=#7b8496 guibg=#16181a
|
||||
highlight TabLineSel guifg=#ffffff guibg=#3c4048
|
||||
highlight WinBar guifg=#ffffff guibg=#16181a
|
||||
highlight WinBarNC guifg=#7b8496 guibg=#16181a
|
||||
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
" Misc
|
||||
" ─────────────────────────────────────────────────────────────
|
||||
highlight SpecialKey guifg=#7b8496
|
||||
highlight Whitespace guifg=#3c4048
|
||||
highlight Question guifg=#ffe95e
|
||||
highlight MoreMsg guifg=#5ea1ff
|
||||
highlight WarningMsg guifg=#ffbd5e
|
||||
highlight ErrorMsg guifg=#ff6e5e
|
||||
highlight QuickFixLine guibg=#3c4048
|
||||
highlight qfLineNr guifg=#7b8496
|
||||
highlight qfFileName guifg=#5ea1ff
|
||||
|
||||
22
modules/features/vim/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
inputs,
|
||||
moduleWithSystem,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.vim = moduleWithSystem ({pkgs, ...}: let
|
||||
modules = [];
|
||||
in {});
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.vim = inputs.wrappers.wrappers.vim.wrap {
|
||||
inherit pkgs;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# vim-lsp
|
||||
# vim-lsp-settings
|
||||
# asyncomplete-vim
|
||||
# asyncomplete-lsp-vim
|
||||
ale
|
||||
];
|
||||
vimrc = builtins.readFile ./vimrc;
|
||||
};
|
||||
};
|
||||
}
|
||||
62
modules/features/vim/vimrc
Normal file
@@ -0,0 +1,62 @@
|
||||
" Set colorscheme and enable highlighting
|
||||
colorscheme catppuccin
|
||||
set termguicolors
|
||||
syntax on
|
||||
|
||||
" Set tab stuff
|
||||
set tabstop=2
|
||||
set shiftwidth=2
|
||||
set expandtab
|
||||
set softtabstop=2
|
||||
|
||||
" Enable line numbers
|
||||
set number
|
||||
set relativenumber
|
||||
set cursorline
|
||||
" Make cursorlinenum a different color
|
||||
augroup colorAutoCmds
|
||||
autocmd!
|
||||
autocmd ColorScheme * highlight CursorLineNr cterm=bold guifg=#cba6f7
|
||||
augroup END
|
||||
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set hlsearch
|
||||
set incsearch
|
||||
|
||||
" Set different cursor shapes depending on mode
|
||||
let &t_SI = "\e[6 q"
|
||||
let &t_EI = "\e[2 q"
|
||||
augroup cursorCmds
|
||||
au!
|
||||
autocmd VimEnter * silent !echo -ne "\e[2 q"
|
||||
augroup END
|
||||
|
||||
" Completion menu
|
||||
"inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
||||
"inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
|
||||
"inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
|
||||
|
||||
set omnifunc=ale#completion#OmniFunc
|
||||
nnoremap K <cmd>ALEHover<CR>
|
||||
nnoremap <leader>gd <cmd>ALEGoToDefinition<CR>
|
||||
nnoremap <leader>gr <cmd>ALEFindReferences<CR>
|
||||
nnoremap <leader>ca <cmd>ALECodeAc
|
||||
let g:ale_completion_enabled = 1
|
||||
|
||||
autocmd User lsp_setup call lsp#register_server({
|
||||
\ 'name': 'nixd',
|
||||
\ 'cmd': ['nixd'],
|
||||
\ 'allowlist': ['nix'],
|
||||
\ })
|
||||
|
||||
let g:ale_linters = {
|
||||
\ 'nix': ['nixd'],
|
||||
\}
|
||||
|
||||
let g:ale_fixers = {
|
||||
\ 'nix': ['alejandra'],
|
||||
\}
|
||||
|
||||
let g:ale_fix_on_save = 1
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
waybar
|
||||
];
|
||||
});
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.waybar = inputs.wrappers.wrappers.waybar.wrap {
|
||||
perSystem = {pkgs, lib, ...}: {
|
||||
packages.waybar = lib.warn "Waybar is deprecated and no longer maintained. Please use pacakges.quickshell instead" inputs.wrappers.wrappers.waybar.wrap {
|
||||
inherit pkgs;
|
||||
"style.css".path = ./style.css;
|
||||
configFile.content = ''
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{moduleWithSystem, ...}: {
|
||||
flake.nixosModules.weylus = moduleWithSystem ({inputs', ...}: {
|
||||
programs.weylus = {
|
||||
enable = true;
|
||||
package = inputs'.weylus.packages.default;
|
||||
users = ["user01"];
|
||||
};
|
||||
});
|
||||
}
|
||||
BIN
modules/features/wpaperd/wallpapers/sun-and-building.jpeg
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
modules/features/wpaperd/wallpapers/sun-and-pier.jpeg
Normal file
|
After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
0
modules/features/wpaperd/wallpapers/wallpaper-sun.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 592 KiB After Width: | Height: | Size: 592 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@@ -17,6 +17,11 @@ final_space = true
|
||||
alignment = 'left'
|
||||
newline = true
|
||||
|
||||
[[blocks.segments]] # Hostname
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
template = '{{ if .Env.SSH_CLIENT }}<green> {{.HostName}}</> <#7f849c>|</> {{ end }}'
|
||||
|
||||
[[blocks.segments]]
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
@@ -34,11 +39,6 @@ template = '''
|
||||
{{- end -}}
|
||||
'''
|
||||
|
||||
[[blocks.segments]] # Hostname
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
template = '{{ if eq .HostName "server02" }}<green> {{.HostName}}</> <#7f849c>|</> {{ end }}'
|
||||
|
||||
[[blocks.segments]] # Python venv
|
||||
type = 'text'
|
||||
style = 'plain'
|
||||
|
||||
@@ -25,85 +25,85 @@
|
||||
});
|
||||
perSystem = {
|
||||
pkgs,
|
||||
lib,
|
||||
self',
|
||||
lib,
|
||||
flakeLocation,
|
||||
...
|
||||
}: {
|
||||
packages = {
|
||||
zsh = let
|
||||
flakeLocation = builtins.getEnv "PWD";
|
||||
in
|
||||
lib.warnIf (flakeLocation == "") "Flake Location is undefined. Are you building in the right directory?"
|
||||
inputs.wrappers.wrappers.zsh.wrap {
|
||||
inherit pkgs;
|
||||
runtimePkgs = [pkgs.carapace pkgs.devenv pkgs.fzf];
|
||||
zshAliases = {
|
||||
ls = "${lib.getExe pkgs.lsd} -l";
|
||||
v = lib.getExe self'.packages.nvim;
|
||||
cat = lib.getExe pkgs.bat;
|
||||
lg = lib.getExe pkgs.lazygit;
|
||||
man = "man -P \"${lib.getExe pkgs.bat} -p\"";
|
||||
nsh = "nix-shell -p";
|
||||
nrs =
|
||||
if flakeLocation != ""
|
||||
then "( cd ${flakeLocation} && sudo nixos-rebuild switch --impure --flake . )"
|
||||
else "echo 'Flake location not specified. Did you build with --impure?'";
|
||||
vinix =
|
||||
if flakeLocation != ""
|
||||
then "nvim --cmd 'cd ${flakeLocation}'"
|
||||
else "echo 'Flake location not specified. Did you build with --impure?'";
|
||||
};
|
||||
zshrc.content = ''
|
||||
source ${./devenv.zsh}
|
||||
|
||||
if (( ''${+terminfo[smkx]} )) && (( ''${+terminfo[rmkx]} )); then
|
||||
function zle-line-init() { echoti smkx }
|
||||
function zle-line-finish() { echoti rmkx }
|
||||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
autoload -U compinit && compinit
|
||||
export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional
|
||||
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
|
||||
source <(${lib.getExe pkgs.carapace} _carapace)
|
||||
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||
|
||||
autoload -U select-word-style
|
||||
select-word-style bash
|
||||
|
||||
autoload -U up-line-or-beginning-search down-line-or-beginning-search
|
||||
zle -N up-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
bindkey "^[OA" up-line-or-beginning-search
|
||||
bindkey "^[OB" down-line-or-beginning-search
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
bindkey "^[[3;5~" kill-word
|
||||
bindkey "^H" backward-kill-word
|
||||
|
||||
source <(${lib.getExe pkgs.fzf} --zsh)
|
||||
|
||||
setopt NO_CASE_GLOB
|
||||
|
||||
${lib.getExe pkgs.any-nix-shell} zsh --info-right | source /dev/stdin
|
||||
|
||||
export EDITOR=nvim
|
||||
|
||||
eval "$(${lib.getExe self'.packages.ohMyPosh} init zsh)"
|
||||
|
||||
eval "$(${lib.getExe pkgs.devenv} hook zsh)"
|
||||
|
||||
typeset -ag precmd_functions
|
||||
if (( ! ''${precmd_functions[(I)__devenv_reload_apply]} )); then
|
||||
precmd_functions+=(__devenv_reload_apply)
|
||||
fi
|
||||
if (( ! ''${precmd_functions[(I)__devenv_restore_path]} )); then
|
||||
precmd_functions+=(__devenv_restore_path)
|
||||
fi
|
||||
'';
|
||||
zsh = lib.warnIf (flakeLocation == "") "Flake Location is undefined. Are you building in the right directory?"
|
||||
inputs.wrappers.wrappers.zsh.wrap {
|
||||
inherit pkgs;
|
||||
runtimePkgs = [pkgs.carapace pkgs.devenv pkgs.fzf];
|
||||
zshAliases = {
|
||||
ls = "${lib.getExe pkgs.lsd} -l";
|
||||
v = lib.getExe self'.packages.nvim;
|
||||
cat = lib.getExe pkgs.bat;
|
||||
lg = lib.getExe pkgs.lazygit;
|
||||
man = "man -P \"${lib.getExe pkgs.bat} -p\"";
|
||||
nsh = "nix-shell -p";
|
||||
nrs =
|
||||
if flakeLocation != ""
|
||||
then "( cd ${flakeLocation} && sudo nixos-rebuild switch --impure --flake . )"
|
||||
else "echo 'Flake location not specified. Did you build with --impure?'";
|
||||
vinix =
|
||||
if flakeLocation != ""
|
||||
then "nvim --cmd 'cd ${flakeLocation}'"
|
||||
else "echo 'Flake location not specified. Did you build with --impure?'";
|
||||
};
|
||||
zshrc.content = ''
|
||||
source ${./devenv.zsh}
|
||||
|
||||
if (( ''${+terminfo[smkx]} )) && (( ''${+terminfo[rmkx]} )); then
|
||||
function zle-line-init() { echoti smkx }
|
||||
function zle-line-finish() { echoti rmkx }
|
||||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
autoload -U compinit && compinit
|
||||
export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional
|
||||
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
|
||||
source <(${lib.getExe pkgs.carapace} _carapace)
|
||||
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||
|
||||
autoload -U select-word-style
|
||||
select-word-style bash
|
||||
|
||||
autoload -U up-line-or-beginning-search down-line-or-beginning-search
|
||||
zle -N up-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
bindkey "^[OA" up-line-or-beginning-search
|
||||
bindkey "^[OB" down-line-or-beginning-search
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
bindkey "^[[3;5~" kill-word
|
||||
bindkey "^H" backward-kill-word
|
||||
|
||||
source <(${lib.getExe pkgs.fzf} --zsh)
|
||||
|
||||
setopt NO_CASE_GLOB
|
||||
|
||||
if command -v ${lib.getExe pkgs.nix-your-shell} > /dev/null; then
|
||||
${lib.getExe pkgs.nix-your-shell} -- zsh | source /dev/stdin
|
||||
fi
|
||||
|
||||
export EDITOR=nvim
|
||||
|
||||
eval "$(${lib.getExe self'.packages.ohMyPosh} init zsh)"
|
||||
|
||||
eval "$(${lib.getExe pkgs.devenv} hook zsh)"
|
||||
|
||||
typeset -ag precmd_functions
|
||||
if (( ! ''${precmd_functions[(I)__devenv_reload_apply]} )); then
|
||||
precmd_functions+=(__devenv_reload_apply)
|
||||
fi
|
||||
if (( ! ''${precmd_functions[(I)__devenv_restore_path]} )); then
|
||||
precmd_functions+=(__devenv_restore_path)
|
||||
fi
|
||||
'';
|
||||
};
|
||||
ohMyPosh = inputs.wrappers.wrappers.oh-my-posh.wrap {
|
||||
inherit pkgs;
|
||||
configFile = ./config.toml;
|
||||
|
||||
@@ -9,14 +9,13 @@
|
||||
hackstationConfiguration
|
||||
amdDrivers
|
||||
youtube
|
||||
distcc
|
||||
development
|
||||
bottles
|
||||
gaming
|
||||
davinci
|
||||
sddm-autologin
|
||||
nix-ld
|
||||
|
||||
i3
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
intelDrivers
|
||||
development
|
||||
upower
|
||||
music
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
20
modules/hosts/mobile03/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.nixosConfigurations.mobile03 = inputs.nixpkgs.lib.nixosSystem {
|
||||
modules = with self.nixosModules; [
|
||||
desktop
|
||||
mobile03Configuration
|
||||
intelDrivers
|
||||
development
|
||||
thinkpadFanControl
|
||||
upower
|
||||
distcc
|
||||
({...}: {
|
||||
tabletSupport = true;
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
11
modules/hosts/mobile03/mobile03Configuration.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.mobile03Configuration = {...}: {
|
||||
networking = {
|
||||
hostName = "mobile03";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,8 @@
|
||||
playerctl
|
||||
pavucontrol
|
||||
pulseaudioFull
|
||||
pipewire
|
||||
pipewire.jack
|
||||
];
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
@@ -24,6 +26,7 @@
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.core = {
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
{self, ...}: {
|
||||
flake.nixosModules.core = {pkgs, ...}: let
|
||||
modules = with self.nixosModules; [
|
||||
user
|
||||
bootloader
|
||||
@@ -21,8 +13,14 @@
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
]
|
||||
++ modules;
|
||||
|
||||
services = {
|
||||
openssh.enable = true;
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "yes";
|
||||
};
|
||||
};
|
||||
avahi.enable = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
{inputs, ...}: {
|
||||
perSystem = {system, ...}: {
|
||||
_module.args.unfreePkgs = import inputs.nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
_module.args = {
|
||||
unfreePkgs = import inputs.nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
unstablePkgs = import inputs.nixpkgs-unstable {
|
||||
inherit system;
|
||||
};
|
||||
# Make flakeLocation universally addressable
|
||||
flakeLocation = builtins.getEnv "PWD";
|
||||
};
|
||||
};
|
||||
flake.nixosModules.nix = {...}: {
|
||||
|
||||
@@ -20,7 +20,12 @@
|
||||
description = "user01";
|
||||
extraGroups = [
|
||||
"root"
|
||||
"seat"
|
||||
"audio"
|
||||
"video"
|
||||
"wheel"
|
||||
"plugdev"
|
||||
"networkmanager"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
sddm
|
||||
network
|
||||
omnisearch
|
||||
tailscale
|
||||
tailscale
|
||||
sops
|
||||
];
|
||||
in {
|
||||
imports = modules;
|
||||
|
||||
@@ -12,11 +12,20 @@
|
||||
mesa
|
||||
vulkan-tools
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
LIBVA_DRIVER_NAME = "iHD";
|
||||
};
|
||||
|
||||
boot.initrd.kernelModules = ["i915"];
|
||||
services.xserver.videoDrivers = ["modesetting"];
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
intel-vaapi-driver
|
||||
libva-vdpau-driver
|
||||
intel-media-driver
|
||||
vpl-gpu-rt
|
||||
intel-compute-runtime
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
27
modules/system/drivers/thinkpadFanControl.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
self,
|
||||
moduleWithSystem,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.thinkpadFanControl = moduleWithSystem ({inputs', ...}: {
|
||||
# Enable fan control for the thinkpad module (why is this not the default??)
|
||||
boot.extraModprobeConfig = ''
|
||||
options thinkpad_acpi fan_control=1
|
||||
'';
|
||||
|
||||
services.thinkfan = {
|
||||
enable = true;
|
||||
|
||||
extraArgs = ["-s" "5"];
|
||||
|
||||
levels = [
|
||||
[0 0 55]
|
||||
[1 50 60]
|
||||
[3 58 68]
|
||||
[5 65 75]
|
||||
[7 73 85]
|
||||
["level disengaged" 82 32767]
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -1,13 +1,5 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.network = {
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
{moduleWithSystem, ...}: {
|
||||
flake.nixosModules.network = moduleWithSystem ({...}: {config, ...}: {
|
||||
networking = {
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
@@ -22,7 +14,11 @@
|
||||
services.unbound = {
|
||||
enable = true;
|
||||
};
|
||||
programs.nm-applet.enable =
|
||||
if config.tabletSupport == true
|
||||
then true
|
||||
else false;
|
||||
|
||||
systemd.services.NetworkManager-wait-online.enable = false;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||