Compare commits

..

No commits in common. "bdc25ce6daff7da85ba6b05877269ca3ccd56e99" and "318294f683c158cced7194ee2997edc48bbd948f" have entirely different histories.

4 changed files with 7 additions and 35 deletions

View file

@ -1,35 +1,17 @@
<a href="https://nixos.wiki/wiki/Flakes" target="_blank">
<img alt="Nix Flakes Ready" src="https://img.shields.io/static/v1?logo=nixos&logoColor=d8dee9&label=Nix%20Flakes&labelColor=5e81ac&message=Ready&color=d8dee9&style=for-the-badge">
</a>
<a href="https://github.com/NixOS/nixpkgs/tree/nixos-unstable" target="_blank">
<img alt="nixpkgs" src=" https://img.shields.io/badge/nixpkgs-unstable-green.svg">
</a>
<a href="https://spdx.org/licenses/AGPL-3.0-or-later.html" target="_blank">
<img alt="license" src=" https://img.shields.io/badge/License-AGPL_3.0_or_later-blue.svg">
</a>
# Welcome to my infrastructure configuration
My configuration is based on [Dendritic Nix](https://dendrix.oeiuwq.com/Dendritic.html#dendritic-nix)
and was heavily inspired by [github:drupol/infra](https://github.com/drupol/infra) including taking some parts ad-verbatim.
> [!WARNING]
> Do not just use this repo out of the box since it will not work for your setup (you will not be able to use my secrets)
> Feel free to copy any parts you find interesting or useful, but I would recommend building your flake up from scratch as it will allow for easier bughunting.
![hyprlock_screenshot](./assets/hyprlock_preview.png)
## How does it work?
The two main aspects that define this approach are [github:vic/import-tree](https://github.com/vic/import-tree) and [flake-parts](https://flake.parts/)
The two main aspects are [github:vic/import-tree](https://github.com/vic/import-tree) and [flake-parts](https://flake.parts/)
```nix
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
```
This lets us define our starting point in another file (or across multiple). In my case this would be the [host-machines](./modules/flake-parts/host-machines.nix) file.
There are many different approaches to this, but I found the approach drupol used, parsing the module name, interesting so I wanted to use it as well.
I extended mine by filtering my raspberry-pi configurations to be a bit different.
this lets us define our starting point in another file. In this case this would be [host-machines](./modules/flake-parts/host-machines.nix)
There are many different approaches to this but I found drupols approach of parsing the module name interesting so I wanted to use it aswell.
I extended mine by filtering my rpi configurations to be a bit different.
### defining hosts
Now to define the host machine, you will want to import other flake-part modules and maybe set some settings unique to this machine
```nix
flake.modules.nixos."hosts/yggdrasil" = { inputs, ... }: {
...
@ -58,7 +40,7 @@ all that matters is that your modules are name exactly how you import them.
home.file = lib.mkIf osConfig.programs."<program name>".enable { ... };
```
## Window Manager of choice
A friend of mine introduced me to Niri and I really like it configuration of that can be found under [niri.nix](./modules/desktop/niri.nix)
## WM of choice
A friend of mine introduced me to niri and I really like it configuration of that can be found under [niri.nix](./modules/desktop/niri.nix)
I still use [hyprpaper](./modules/desktop/addons/hyprpaper.nix), and [hyprlock](./modules/desktop/addons/hyprlock.nix) because I was previously using hyprland and the still work perfectly fine.
My bar of choice is [waybar](./modules/desktop/addons/waybar.nix) it is very minimalistic, and my current runner is fuzzel with I just use with a catppuccin theme.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

View file

@ -132,13 +132,6 @@
"harper-ls"
];
}
{
name = "markdown";
language-servers = [
"marksman"
"harper-ls"
];
}
];
language-server = {

View file

@ -43,10 +43,7 @@ topLevel: {
];
programs.fish.enable = true;
sops.secrets.passwordHash = {
sopsFile = ./../../../secrets/secrets.yaml;
neededForUsers = true;
};
sops.secrets.passwordHash.neededForUsers = true;
users.users.cholli = {
description = topLevel.config.flake.meta.users.cholli.name;