Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
cd4e08c
Fix hyprland new module
RAPSNX Dec 14, 2025
f713bbf
Entzerrung hyprland module
RAPSNX Dec 14, 2025
ab0d541
Move home.nix to hosts
RAPSNX Dec 14, 2025
aea21f8
Update nixos hosts / config
RAPSNX Dec 14, 2025
10e55e7
Include mypkgs in pkgs
RAPSNX Dec 14, 2025
ba511cf
WIP: restructure
RAPSNX Dec 14, 2025
5f4d899
WIP: more removals
RAPSNX Dec 14, 2025
54c5926
WIP: WIP
RAPSNX Dec 15, 2025
8d2ed23
This shit works, at least for hm
RAPSNX Dec 16, 2025
e0b6fa2
Fix issues
RAPSNX Dec 16, 2025
c6b4df9
Config
RAPSNX Dec 16, 2025
457b7db
minor fixes
RAPSNX Dec 16, 2025
802d84c
Add home config
RAPSNX Dec 16, 2025
618a207
lel
RAPSNX Dec 17, 2025
801a029
update
RAPSNX Dec 18, 2025
f002b04
setup nixos and improve hyprpaper
RAPSNX Dec 20, 2025
667b28f
add zshrc role
RAPSNX Dec 20, 2025
79cfc1a
lel
RAPSNX Dec 19, 2025
65fed94
git config
RAPSNX Dec 29, 2025
e3d8704
use two layouts
RAPSNX Dec 30, 2025
22fcfcd
Update docs
RAPSNX Dec 30, 2025
ce216db
gardenctl and apparmor stuff
RAPSNX Jan 10, 2026
c180eb4
fix vinox
RAPSNX Jan 10, 2026
c08bc6d
fix thunar, update flake
RAPSNX Jan 10, 2026
140ee4e
remove windowrule v1
RAPSNX Jan 16, 2026
88abb43
fix browser and starship
RAPSNX Jan 21, 2026
25cf665
update doc
RAPSNX Jan 21, 2026
284f978
WIP: test hyprspace
RAPSNX Jan 26, 2026
6db14f2
Add nextcloud
RAPSNX Jan 30, 2026
5244009
plugins hypr & krew
RAPSNX Jan 30, 2026
02db469
Firefox fixes
RAPSNX Jan 30, 2026
e67e88f
minor changes, remove uwsmt
RAPSNX Feb 4, 2026
2b91e1d
Update corne keyboard layout
RAPSNX Jan 19, 2026
3586e17
remove uwsm
RAPSNX Feb 4, 2026
7a3cca1
fix gtk
RAPSNX Feb 4, 2026
09effcb
flake update
RAPSNX Feb 4, 2026
167ef32
enable alacritty hints
RAPSNX Feb 4, 2026
ecf7182
Add secret for kubex
RAPSNX Feb 5, 2026
54abc47
Add some nixberry stuffl
RAPSNX Feb 13, 2026
fe52fef
fix chrome
RAPSNX Feb 13, 2026
9d68053
nix flake update
RAPSNX Feb 13, 2026
3eb0c98
enhance timeout
RAPSNX Feb 21, 2026
73cd894
flake update & minor changes
RAPSNX Feb 22, 2026
115bd19
rename to hostConfig, move nixos config to modules
RAPSNX Mar 5, 2026
c7ea40e
Add niri
RAPSNX Mar 5, 2026
fb6cd38
timeout and layout
RAPSNX Mar 17, 2026
2dd03f5
Prefer dark GTK
RAPSNX Mar 20, 2026
dd9bcef
Update docs on firefly
RAPSNX Mar 22, 2026
6751fa6
Update user config
RAPSNX Mar 22, 2026
fed9303
Update git config, swaync + remove sops
RAPSNX Mar 22, 2026
bea3d36
remove desktop portal for hyprland
RAPSNX Mar 22, 2026
8e916d9
update docs
RAPSNX Mar 22, 2026
248b9d9
some changes
RAPSNX Mar 26, 2026
1d83086
update firefly doc
RAPSNX Mar 30, 2026
de1189a
Refactor hyprland
RAPSNX Mar 31, 2026
3f5cf2d
Kanshi config
RAPSNX Apr 4, 2026
d9b8b08
Update zion
Apr 4, 2026
8131a7f
flake update
Apr 4, 2026
cbc7175
nvim directly, workspace via home.nix
Apr 18, 2026
a4258a0
minimal changes
Apr 19, 2026
ad14c62
Is this finally a workspace solution? :O
Apr 19, 2026
38d4776
Improve script
RAPSNX Apr 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .sops.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ keys:
- &kubex age1qmfyk82lve992tvzw82d4dgr3ek77xx9m7uez3uq55mgqu6r5eys40evkr
- &firefly age13ps3kkzfn3eyaqc50reudytr5ws80ssamzh09kj6878a6lgxususuu58wp
creation_rules:
- path_regex: modules/home-manager/common/secrets.yaml$
- path_regex: modules/home/secrets.yaml$
key_groups:
- age:
- *rap_zion
- *firefly
- path_regex: hosts/kubex/secrets.yaml$
key_groups:
- age:
- *kubex
- *rap_zion
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ nh os build --hostname kubex .
nix build .#nixosConfigurations.vinox.config.system.build.isoImage

# NixOS remote switch
nh os switch --hostname kubex . -d always --target-host kubex
nh os switch --hostname nixberry . -d always --target-host <IP>

# Or
nixos-rebuild switch --flake .#kubex --target-host 192.168.55.10 --sudo

# HomeManager rebuilds (hostname & username autodetection)
Expand Down
19 changes: 17 additions & 2 deletions dev-shells.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,20 @@ let
src = ./.;
hooks = {
statix.enable = true;
nixfmt-rfc-style.enable = true;
nixfmt.enable = true;
deadnix.enable = true;
};
};

# Makefile like targets
switch-firefly = pkgs.writeShellScriptBin "switch-firefly" ''
NIX_CONFIG="experimental-features = nix-command flakes" \
nh home switch -c nix@firefly . --show-activation-logs
'';

switch-zion = pkgs.writeShellScriptBin "switch-zion" ''
nh os switch && nh home switch
'';
in
{
default =
Expand All @@ -21,9 +31,14 @@ in

packages = [
nh
switch-firefly
switch-zion

hello

statix
deadnix
nixfmt-rfc-style
nixfmt
nix-inspect
];
};
Expand Down
88 changes: 74 additions & 14 deletions docs/firefly.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,46 @@
# Backups

1. Firefox profile

```bash
# TODO: Add this to home.nix
rsync -av --update ~/.mozilla/firefox/default ~/Nextcloud/Home/Backups/firefox_profile/
```

2. Check atuin `key` match with the key in vault.

# Install device
1. Install it via usb-image
2. Install lix
3. Create local user
4. Get user-certificate with chandler
3. clone dotfiles
4. Make home-manager switch
1. Install `nix` (May disable any VPN)

```bash
Verify command on nixos.org/download
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon
```

2. Clone dotfiles
1. Change username `home.nix`, if necessary.
3. Switch config via `devshells` target.

```bash
nix develop
switch-firefly
```

4. Create `hyprland` desktop file.

```bash
echo "[Desktop Entry]
Name=Hyprland
Comment=An intelligent dynamic tiling Wayland compositor
Exec=/home/$USER/.nix-profile/bin/start-hyprland
Type=Application" | sudo tee /usr/share/wayland-sessions/hyprland.desktop
```
home-manager switch --flake .#rapsn@firefly

5. Copy user-certificate to firefox

```bash
# TODO: Add this to home.nix (as activation script for example)
ln -sf ~/.pki/nssdb/* ~/.mozilla/firefox/default/
```

## Manual things
Expand All @@ -18,16 +51,43 @@ systemctl --user mask --now gpg-agent.service gpg-agent.socket \
gpg-agent-ssh.socket gpg-agent-extra.socket gpg-agent-browser.socket
```

### Copy user-certificate to firefox
### Chromium

```bash
cp .pki/nssdb/* /home/rapsn/.mozilla/firefox/default/
Extension: `Open in firefox`:

**Other Settings**

- Enable Reverse Mode

**Automation Rules**

Comma-separated list of URLs:
```
*://*.google.com/*, *://chat.ske.eu01.stackit.cloud/*
```


### GTK Theme

Instead of configuring every theme myself, only the theme installation is managed via `nix`, to set the theme use `nwg-look`.
`nwg-look` is used to configure theme in multiple locations.
Run it, ensure to remove the check of `GTK4` files in preferences.
Set `widgets -> colorScheme -> prefer dark`.

```bash
dconf read /org/gnome/desktop/interface/gtk-theme # Read the actual name
```

## Installed via APT

Those programs are installed via apt, since they do not work within `nix`.

## Outside nix 😭
- mumble (apt)
- hyprland (apt ppa:piper)
```bash
# TODO: Check why hyprlock not working
sudo add-apt-repository ppa:cppiber/hyprland
sudo apt update
sudo apt -y install \
xdg-desktop-portal-wlr \
mumble \
swaylock \
podman
```
42 changes: 32 additions & 10 deletions docs/misc.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,38 @@ sudo efibootmgr --create \
--loader '\EFI\systemd\systemd-bootx64.efi' \ # Mind the backslashes
```

## UWSM
## Monitor setup

### start apps
Use `uswm app -- <app-name>` to start apps.
This will start the app in a seperate `systemd` scope, which is part of the `app.slice`.
If not, the process will be part of the `session.slice`, which can result in termination of the user session.
All possible monitor configurations are configured via `kanshi`, which maches automatically the correct profile.
`/modules/home/desktops/addons/kanshi`

Keep the slice as clean as possible:
```bash
│ │ │ ├─wayland-wm@hyprland\x2duwsm.desktop.service
│ │ │ │ ├─77102 /run/current-system/sw/bin/Hyprland
│ │ │ │ └─77200 Xwayland :0 -rootless -core -listenfd 54 -listenfd 55 -displayfd 107 -wm 104
## Nix follows

```
neonix = {
url = "github:rgroemmer/neonix/plugin-enhancement";
inputs.nixpkgs.follows = "nixpkgs";
};
```

This will follow the actual flakes `nixpkgs`, neonix by itself uses `nixvim` from its own inputs, which is not part
of `nixpkgs`.
If the flakes `nixpkgs` is to new, plugins and packages from it will be "to new" for the rather outdated `nixvim` from neonix repo.
This can lead to problems starting nvim, this can be fixed by update the `neonix` flake accordingly.
> There is also a nix (lix?) bug, which does not update the `flake.lock` when a follows is removed.

## Neonix

`neonix` needs to have its own `nixpkgs`, so no `nixpkgs.follows` is configured.
Instead this should be updated on its own, because if nixpkgs in dotfiles is to new, all dependencies and plugins of
nvim may not work anymore with the `neonix` upstream configuration.

## Monitor / Workspace setup

`kanshi` is used to match all possible desktop / office setups via profiles.
These profiles have the primary and secondary display configured, and will execute a script to adapt the workspace pinning.
This will write its config to `~/.config/hypr/workspaces.conf`, same as `nwg-desktop`.
`nwg-desktop` can still be used for both monitor and workspace dynamic configuration.

**To actually change the monitor config, the `kanshi` systemd service needs to be stopped.**

28 changes: 28 additions & 0 deletions docs/structure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## 🏛️ Structure

### `flake.nix`
- `NixOS` and `HomeManager` configurations.

### `devshells.nix`
- `devShells` to provide `git-commit-hooks` for:
- Leverage git-commit-hooks with enforce of lint, fmt & code checking.
- Shell environment with all tools needed to switch, build & run the `flake`.

### `hosts/*`
- All devices using nix, with the host specific module configuration:
- `default.nix` entrypoint and config for all `NixOS` modules, usually imports the `hardware-configuration.nix`.
- `home.nix`entrypoint and config for all `home-manager` modules.

### `modules`
- All modules for `home-manager` and `NixOS`

**Module structure**

- It defines a `option` and `config` for it.
- Every module has a `default.nix` which imports all module related files.


### `extra/`

Configuration or backup files mostly not directly related to `nix`.

37 changes: 0 additions & 37 deletions docs/style.md

This file was deleted.

7 changes: 7 additions & 0 deletions extra/keyboard/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Keyboard layout backup
Since there were problems restoring the keymap with via, the main file is `./corne-via-backup.json`, a layout
generated by qmk-configurator.

## Change / Update
Upload to qmk-configurator, adapt & download new `json`.
Use qmk-configuration fork, with `flash.sh`
14 changes: 14 additions & 0 deletions extra/keyboard/corne-qmk-main.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"keyboard": "crkbd",
"keymap": "rapsn-led",
"layers": [
["KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Z", "KC_U", "KC_I", "KC_O", "KC_P", "KC_ESC", "KC_LGUI", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_BSPC", "OSL(4)", "KC_LSFT", "KC_Y", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_LSFT", "KC_LCTL", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_LCTL"],
["KC_TRNS", "RALT(KC_S)", "KC_UNDS", "KC_LBRC", "KC_RBRC", "KC_CIRC", "KC_EXLM", "KC_LT", "KC_GT", "KC_PEQL", "KC_AMPR", "KC_DEL", "KC_TRNS", "KC_BSLS", "KC_SLSH", "KC_LCBR", "KC_RCBR", "KC_ASTR", "KC_QUES", "KC_LPRN", "KC_RPRN", "KC_MINS", "KC_COLN", "KC_AT", "KC_TRNS", "KC_HASH", "KC_DLR", "KC_PIPE", "KC_TILD", "KC_GRV", "KC_PPLS", "KC_PERC", "KC_DQUO", "KC_QUOT", "KC_SCLN", "KC_TRNS", "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "MO(3)", "KC_RALT"],
["KC_TRNS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_NO", "KC_HOME", "LCTL(KC_LEFT)", "LCTL(KC_RGHT)", "KC_END", "KC_NO", "KC_TRNS", "KC_TRNS", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_NO", "KC_TRNS", "KC_TRNS", "KC_F10", "KC_F11", "KC_F12", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_LGUI", "MO(3)", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"],
["KC_NO", "LGUI(KC_1)", "LGUI(KC_2)", "LGUI(KC_3)", "LGUI(KC_4)", "LGUI(KC_5)", "LGUI(KC_6)", "LGUI(KC_7)", "LGUI(KC_8)", "LGUI(KC_9)", "KC_NO", "KC_NO", "KC_NO", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_NO", "KC_NO", "LALT(KC_1)", "LALT(KC_2)", "LALT(KC_3)", "KC_4", "LALT(KC_5)", "LALT(KC_6)", "KC_NO", "KC_COMM", "KC_DOT", "KC_NO", "KC_NO", "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"],
["KC_NO", "DF(0)", "DF(5)", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "RALT(KC_U)", "KC_NO", "RALT(KC_O)", "KC_NO", "KC_NO", "KC_NO", "RALT(KC_A)", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "RALT(KC_6)", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"],
["KC_TAB", "KC_Q", "KC_TRNS", "KC_E", "KC_R", "KC_T", "KC_Z", "KC_U", "KC_I", "KC_O", "KC_P", "KC_ESC", "KC_LGUI", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_BSPC", "OSL(4)", "KC_LSFT", "KC_Y", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_LCTL", "KC_LCTL", "MO(6)", "KC_SPC", "KC_ENT", "DF(0)", "KC_LCTL"],
["KC_NO", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO", "KC_NO", "KC_TRNS", "KC_NO"]
],
"layout": "LAYOUT_split_3x6_3"
}
File renamed without changes.
Loading