Author SHA1 Message Date
tomasr 1071ce70d7 replace rm by trash-cli 2026-08-14 10:20:52 +02:00
tomasr 1ff4785399 rewrite README.md 2026-08-14 09:59:29 +02:00
tomasr ed9ccd4b11 hyprland: migrated from hyprlang to lua
- all hyprlandScripts were migrated to lua functions
- hyprland.nix just handles the host specific and replacing the
  placeholders from hyprland.lua
2026-08-14 09:34:43 +02:00
tomasr 13cdae0655 restore mullvad 2026-08-12 19:49:00 +02:00
tomasr d0b7183849 add dolphin plugin 2026-08-12 15:32:53 +02:00
tomasr cea0d0e3f8 add ark for dolphin 2026-08-12 15:24:56 +02:00
tomasr a4c66b4aff fix archivebox extesnion 2026-08-11 17:08:51 +02:00
tomasr 56a9bba86b remove temp mullvad 2026-08-11 17:08:51 +02:00
tomasr 1dab571e12 add archivebox extension 2026-08-11 17:08:51 +02:00
tomasr 93f7328a3b add browser bookmark noogle.dev 2026-08-11 17:08:51 +02:00
tomasr 0e222a9c50 rss reader 2026-08-04 19:50:42 +02:00
tomasr d1125d1571 fix calendar? 2026-08-04 11:30:00 +02:00
tomasr 550413c6b1 add kontact 2026-08-04 11:25:59 +02:00
tomasr b4537796a2 add KOrganizer 2026-08-04 11:21:26 +02:00
tomasr 4c0fbc5f0e librewolf: remove old bookmark 2026-07-30 21:28:41 +02:00
tomasr d0a9511ff7 first tmux config 2026-07-30 21:18:44 +02:00
tomasr 262476404e tmux: init config 2026-07-30 14:07:36 +02:00
tomasr 9f9906d423 replace rss reader 2026-07-30 14:07:36 +02:00
tomasr 0d616266ff fix pagers 2026-07-30 14:07:36 +02:00
tomasr 6b282b5344 somehow this file disappeared 2026-07-26 16:08:36 +02:00
tomasr 19fd3ec35d Auto: cleanup-2026-07-26T14-02-17Z 2026-07-26 16:06:33 +02:00
tomasr 324d54683c snapshot pre-cleanup-2026-07-26T14-02-17Z 2026-07-26 16:05:00 +02:00
tomasr 0030034418 snapshot pre-cleanup-2026-07-26T13-59-06Z 2026-07-26 16:05:00 +02:00
tomasr fb7be79e86 snapshot pre-cleanup-2026-07-26T13-57-11Z 2026-07-26 16:05:00 +02:00
tomasr 5db8135dd5 setup agenix and migrate from matrix-commander-rs to ntfy for phone notifications 2026-07-26 15:53:57 +02:00
tomasr 2107d23209 notewrapper: use kdrive directly 2026-07-24 17:40:39 +02:00
tomasr 77f4b0fc5f neovim: add hledger integration 2026-07-21 16:54:36 +02:00
tomasr 1642dc97ca neovim: add lean lsp and config 2026-07-21 16:54:36 +02:00
tomasr 2b59031896 hledger: init 2026-07-21 16:54:36 +02:00
tomasr d323e9f702 Merge branch 'main' into desktop 2026-06-24 16:39:59 -05:00
github-actions[bot] 25813d8ab5 Merge pull request #33 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-22 18:12:48 +00:00
tomasr 05ef065d75 snapshot pre-cleanup-2026-06-20T19-29-55Z 2026-06-20 21:29:55 +02:00
tomasr 2722840919 ollama: add desktop 2026-06-20 14:01:36 +02:00
tomasr 9e862337ca snapshot pre-autoupdate-2026-06-20T10-53-01Z 2026-06-20 12:53:01 +02:00
tomasr 876ec4ce21 icloud backup with kdrive 2026-06-18 19:47:29 +02:00
tomasr e2b7fd8a64 kdrive: setup sync with desktop 2026-06-18 17:00:20 +02:00
tomasr 752957818b gitBackup: add ngcp and ReSSPublica 2026-06-16 22:49:01 +02:00
tomasr 1c600dbf3c gitBackup: add ngcp and ReSSPublica 2026-06-16 22:45:12 +02:00
tomasr 4a648b7f7c Merge pull request #31 from tomasriveral/laptop 2026-06-15 18:45:41 +00:00
tomasr 67d21671c5 treesitter: add sparql 2026-06-14 17:29:16 +02:00
tomasr b8d8ef1aa8 treesitter: add sparql 2026-06-14 17:28:07 +02:00
tomasr 2d16f3893b Auto: cleanup-2026-06-14T15-26-03Z 2026-06-14 17:26:24 +02:00
tomasr 2a0c85275f snapshot pre-cleanup-2026-06-14T15-26-03Z 2026-06-14 17:26:03 +02:00
tomasr 23a9fdd4e8 snapshot pre-cleanup-2026-06-14T15-11-35Z 2026-06-14 17:11:35 +02:00
tomasr 246412ae4b custom-performance: entire rewrite
Now kills caelestia, change monitor hz and launches lightweight
alternative to calestia (waybar and swaync)
2026-06-14 11:19:36 +02:00
tomasr 88eb91c780 desktop: ported custom-performance 2026-06-14 11:14:48 +02:00
tomasr 3b73438d4f custom-performance: reset on startup 2026-06-14 11:11:05 +02:00
tomasr 8088f78f05 tlp:replace by powerprofilesdaemon 2026-06-14 11:08:03 +02:00
tomasr 3b89cf7b35 flake.lock: autoupdate-2026-06-14T09-01-11Z 2026-06-14 11:04:07 +02:00
tomasr 89eb25ca7d snapshot pre-autoupdate-2026-06-14T09-01-11Z 2026-06-14 11:01:11 +02:00
tomasr 3ea36fa6bb Merge pull request #30 from tomasriveral/main
desktop
2026-06-14 08:13:03 +00:00
tomasr 3d468572d5 Merge pull request #28 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-13 07:47:36 +00:00
github-actions[bot] d23c6979f9 Merge pull request #29 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-13 07:47:29 +00:00
tomasr 552d898680 librewolf: add rryan-tm logs bookmark 2026-06-13 09:45:16 +02:00
tomasr 5b7c43c8f9 librewolf: add r/Piracy megathread bookmark 2026-06-13 09:45:16 +02:00
tomasr f1e9c76d02 librewolf: add temp-mail.org bookmark 2026-06-13 09:45:16 +02:00
tomasr 37f76a4439 nixpkgs-master: follow unstable when unused 2026-06-13 09:37:43 +02:00
tomasr 143f699365 flake-utils: use flakehub cache 2026-06-13 09:29:18 +02:00
tomasr d20f0d87d5 flake-parts: use flakehub cache 2026-06-13 09:29:18 +02:00
github-actions[bot] 45639e2531 Merge pull request #27 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-12 14:38:11 +00:00
tomasr 2d2d4fd4a8 Merge pull request #26 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-12 14:32:48 +00:00
tomasr d49c7ba99e limine: rice 2026-06-12 15:58:28 +02:00
tomasr 29554e41ca nixUtils: add custom-trimmer 2026-06-12 15:49:23 +02:00
tomasr 2a318bdced hosts: forgot to use nixUtils module 2026-06-12 15:38:01 +02:00
tomasr 763bbbacd4 bootloader: limine 2026-06-12 15:10:49 +02:00
tomasr 99f1dd3ec8 bootloader: reunited desktop and laptop config 2026-06-12 15:07:17 +02:00
16 changed files with 732 additions and 398 deletions

No files matched your search

+28 -43
View File
@@ -49,30 +49,20 @@ jobs:
exit 1 exit 1
;; ;;
esac esac
- name: Check for changes
run: |
git fetch origin main "${{ steps.branch.outputs.source }}"
HAS_CHANGES=true
if git diff --quiet \
"origin/main...origin/${{ steps.branch.outputs.source }}"; then
HAS_CHANGES=false
fi
- name: Check for existing PR - name: Check for existing PR
id: existing id: existing
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
if $HAS_CHANGES; then PR_NUMBER=$(gh pr list \
PR_NUMBER=$(gh pr list \ --base main \
--base main \ --head "${{ steps.branch.outputs.source }}" \
--head "${{ steps.branch.outputs.source }}" \ --state open \
--state open \ --json number \
--json number \ --jq '.[0].number // empty')
--jq '.[0].number // empty')
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT" echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
fi
- name: Create PR - name: Create PR
id: create id: create
@@ -80,31 +70,28 @@ jobs:
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
if $HAS_CHANGES; then gh pr create \
gh pr create \ --base main \
--base main \ --head "${{ steps.branch.outputs.source }}" \
--head "${{ steps.branch.outputs.source }}" \ --title "Weekly sync: ${{ steps.branch.outputs.source }} → main" \
--title "Weekly sync: ${{ steps.branch.outputs.source }} → main" \ --body "This pull request was created automatically by GitHub Actions."
--body "This pull request was created automatically by GitHub Actions."
PR_NUMBER=$(gh pr list \ PR_NUMBER=$(gh pr list \
--base main \ --base main \
--head "${{ steps.branch.outputs.source }}" \ --head "${{ steps.branch.outputs.source }}" \
--state open \ --state open \
--json number \ --json number \
--jq '.[0].number') --jq '.[0].number')
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
fi
- name: Determine PR number - name: Determine PR number
id: pr id: pr
run: | run: |
if $HAS_CHANGES; then if [ -n "${{ steps.existing.outputs.number }}" ]; then
if [ -n "${{ steps.existing.outputs.number }}" ]; then echo "number=${{ steps.existing.outputs.number }}" >> "$GITHUB_OUTPUT"
echo "number=${{ steps.existing.outputs.number }}" >> "$GITHUB_OUTPUT" else
else echo "number=${{ steps.create.outputs.number }}" >> "$GITHUB_OUTPUT"
echo "number=${{ steps.create.outputs.number }}" >> "$GITHUB_OUTPUT"
fi
fi fi
- name: Enable auto-merge - name: Enable auto-merge
@@ -112,9 +99,7 @@ jobs:
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
if $HAS_CHANGES; then gh pr merge \
gh pr merge \ "${{ steps.pr.outputs.number }}" \
"${{ steps.pr.outputs.number }}" \ --auto \
--auto \ --merge
--merge
fi
+641 -186
View File
@@ -1,235 +1,690 @@
⚠️ Documentation outdated. I recently rewrote the entire config using the [dendritic pattern](https://github.com/mightyiam/dendritic/). One of these days, I will update the README.
# NixOS Configuration # NixOS Configuration
![NixOS configuration](/assets/example.png) ![NixOS configuration](/assets/example.png)
## Installation Guide This repository contains my personal NixOS configuration.
⚠️ **Important Notes** The configuration uses the **[dendritic pattern](https://github.com/mightyiam/dendritic)**. Instead of keeping one large system configuration, functionality is split into smaller, composable modules. This makes it easier to reuse pieces of the configuration across hosts and to keep application, hardware, utility, and host-specific configuration separate.
Before applying this configuration on another system, make sure to:
- Update the `hostName` (in `configuration.nix` and `home.nix`).
Requirements: `git` installed. Then run: See the [dendritic pattern repository](https://github.com/mightyiam/dendritic) for an explanation of the approach.
```bash
cd
git clone https://github.com/Totorile1/nixos.git
cd nixos
sudo cp /etc/nixos/hardware-configuration.nix ./hosts/laptop/hardware-configuration
sudo nixos-rebuild switch --flake ~/nixos/#laptop
```
### Things That Don't Work Reliably and need manual setup
- Librewolf's extension settings
- Librewolf's bookmarks
- Thunderbird's email servers and settings and birdtray's settings[^1]
- Inkscape's settings
[^1]: You must change in Advanced settings Thunderbird command line to the result of `where thunderbird`.
--- ---
## Configuration Structure ## Installation
This configuration is primarily designed for my own machines, so some parts are host- and hardware-specific.
### Requirements
* NixOS
* Git
* Nix flakes enabled
Clone the repository:
```bash
cd ~
git clone https://github.com/tomasriveral/nixos.git
cd nixos
```
The available hosts are:
```text
hosts/
├── laptop.nix
└── desktop.nix
```
Build and switch to a host with:
```bash
sudo nixos-rebuild switch --flake ~/nixos#laptop
```
or:
```bash
sudo nixos-rebuild switch --flake ~/nixos#desktop
```
For a temporary test generation:
```bash
sudo nixos-rebuild test --flake ~/nixos#laptop
```
### Hardware configuration
Hardware-specific configuration is kept under:
```text
modules/hardware/
```
This includes:
* bootloader configuration
* disks and filesystems
* battery and power management
* Bluetooth
* NVIDIA
* performance settings
* udev rules
* hardware utilities
Declarative disk configuration is located in:
```text
modules/hardware/disko/
```
When deploying this configuration to a new machine, review the host and hardware modules rather than assuming the existing hardware configuration is appropriate.
---
# Repository Structure
```text ```text
nixos/ nixos/
├── assets/ # Images, icons, wallpapers, sounds ├── assets/ # Wallpapers, images, sounds and other static assets
├── hosts/laptop/ # Host-specific NixOS config ├── docs/ # Additional documentation
│ └── printing.md
│
├── modules/ ├── modules/
│ ├── home-manager/ # User-level configurations (apps, shell, WM, plugins) │ ├── applications/ # Application and desktop application configuration
│ ├── nixos/ # System-level modules (daemons, services, udev, ly) │ ├── hardware/ # Hardware, boot, disk, battery, GPU and device configuration
│ ├── qt/ # qt modules (qtbatticon) │ ├── other/ # Fonts, cursor, printer, desktop entries, user configuration, etc.
│ └── scripts/ # Custom scripts called from keybinds or tools │ ├── packages/ # Custom packages and scripts
│ └── utilities/ # Reusable utilities and supporting services
│
├── hosts/
│ ├── laptop.nix # Laptop-specific configuration
│ └── desktop.nix # Desktop-specific configuration
│
├── other/ ├── other/
│ ├── kblayouts/ # Framework 16 RGB macropad layout │ ├── hyprland/ # Hyprland configuration
│ └── quickshell/ # QML configuration for topbar, notifications, screenshot, etc. │ │ ├── hyprland.conf # Previous hyprlang configuration
│ │ ├── hyprland.lua # Current Lua configuration
│ │ └── README.md
│ ├── kblayouts/ # Keyboard and Framework macropad layouts
│ ├── mullvad/ # Mullvad configuration
│ └── quickshell/ # Quickshell configuration
│
├── secrets/ # agenix-encrypted secrets
├── flake.nix ├── flake.nix
├── flake.lock ├── flake.lock
└── README.md └── README.md
``` ```
> other/quickshell is the older quickshell configuration. ---
# Modules
## Applications
`modules/applications/` contains configuration for applications and desktop components.
Some examples:
* `anki.nix`
* `browser.nix`
* `caelestia.nix`
* `git.nix`
* `gtk.nix`
* `hypridle.nix`
* `hyprland.nix`
* `kitty.nix`
* `neovim.nix`
* `obsidian.nix`
* `rofi.nix`
* `thunderbird.nix`
* `waybar.nix`
* `wlogout.nix`
* `zsh.nix`
## Hardware
`modules/hardware/` contains machine-level configuration such as:
* battery and power management
* Bluetooth
* bootloader
* disks
* hardware detection/configuration
* NVIDIA
* performance tuning
* udev rules
## Other
`modules/other/` contains configuration that does not fit directly into applications or hardware, such as:
* cursors
* desktop entries
* fonts
* I/O configuration
* printers
* user configuration
## Packages
`modules/packages/` contains custom packages and scripts used throughout the configuration.
Examples include:
* `custom-bottom`
* `custom-browserprofiles`
* `custom-colorpicker`
* `custom-cowsay`
* `custom-syllabes`
* `custom-tomato`
* `custom-weather`
* manually derived packages
Many of these packages are called directly by Hyprland keybindings.
## Utilities
`modules/utilities/` contains reusable system utilities and services, including:
* agenix
* audio/media configuration
* automatic cleanup
* automatic updates
* communication and notifications
* development tools
* documentation tools
* Git backup
* LaTeX
* networking
* Nix utilities
* office tools
* Ollama
* RSS tools
--- ---
## Applications & Tools # Hosts
### Shell & Terminal Host-specific configuration is kept under:
- [`zsh`](https://www.zsh.org/) with [`oh-my-zsh`](https://ohmyz.sh/) for shell customization
- [`kitty`](https://sw.kovidgoyal.net/kitty/) terminal
### Window Management ```text
- [`hyprland`](https://github.com/hyprwm/Hyprland) (tiling window manager) hosts/
- [`ly`](https://github.com/fairyglade/ly) login manager ```
- [`swaylock`](https://github.com/swaywm/swaylock) screen locking
- [`hypridle`](https://github.com/hyprwm/Hyprland/wiki/HyprIdle) for idle mode
### Browsing & Productivity Currently:
- [`librewolf`](https://librewolf-community.gitlab.io/) browser
- Extensions: [AdNauseam](https://github.com/dhowe/AdNauseam), [Enhancer for YouTube](https://github.com/ParticleCore/yt-enhancer), [TrackMeNot](https://www.tornhq.com/tmn/), [SponsorBlock](https://sponsor.ajay.app/)
- Privacy options mostly enabled; some disabled to avoid conflicts with AdNauseam
- [`thunderbird`](https://www.thunderbird.net/) email client
- [`obsidian`](https://obsidian.md/) notes and knowledge management
- [`libreoffice`](https://www.libreoffice.org/) full-featured office suite
### Utilities ```text
- [`cliphist`](https://github.com/skywind3000/cliphist) clipboard manager hosts/
- [`zoxide`](https://github.com/ajeetdsouza/zoxide) faster directory navigation ├── laptop.nix
- [`fastfetch`](https://github.com/LinusDierheimer/fastfetch) system info └── desktop.nix
- [`gnome-calculator`](https://wiki.gnome.org/Apps/Calculator) ```
- [`gnome-characters`](https://wiki.gnome.org/Apps/Characters)
- [`gnome-disk-utility`](https://wiki.gnome.org/Apps/Disks)
- [`gnome-font-viewer`](https://wiki.gnome.org/Apps/FontViewer)
- [`nautilus`](https://wiki.gnome.org/Apps/Nautilus) file manager
- [`okular`](https://okular.kde.org/) document & image viewer
- [`vlc`](https://www.videolan.org/vlc/) media player
- [`krita`](https://krita.org/) and [`inkscape`](https://inkscape.org/) for image editing and drawing
- [`anki`](https://apps.ankiweb.net/) flashcards for learning
- [`texlive`](https://www.tug.org/texlive/) LaTeX distribution
- [`biber`](https://ctan.org/pkg/biber) bibliography for LaTeX
- [`eza`](https://github.com/eza-community/eza) replacement for `ls`
### System & Hardware The host files combine the nixos and home-manager modules needed for each machine.
- [`bottom`](https://github.com/ClementTsang/bottom) system monitor
- [`tomato-c`](https://github.com/erikras/tomato-c) Pomodoro timer
- [`framework-tool-tui`](https://github.com/romanl/fx16-tui) Framework 16 laptop settings
**Daemons:** `upower`, `pipewire`, `pulseaudio`, `brightnessctl`, `playerctl`, `blueman`, `udiskie`, `networkmanager-applet`, `swww` wallpaper daemon
### Screenshots, Notifications, Bar and much more!
- [caelestia-shell](https://github.com/caelestia-dots/shell)
--- ---
## Keybindings # Hyprland
### Window Management Hyprland is configured using its **Lua configuration API**.
| Key | Action |
|-----|--------|
| `$mod + W` | Toggle floating |
| `$mod + G` | Toggle group |
| `Alt + Return` | Fullscreen |
| `$mod + Arrow keys` / `Alt + Tab` | Move focus |
| `$mod + Shift + Ctrl + Arrow keys` | Move window |
| `$mod + Shift + Arrow keys` | Resize window |
### Workspaces The current configuration is:
| Key | Action |
|-----|--------|
| `$mod + 1..0` | Switch workspace |
| `$mod + Shift + 1..0` | Move window to workspace |
| `$mod + Ctrl + Arrow keys` | Cycle workspaces |
| `$mod + Mouse wheel` | Scroll workspace |
| `$mod + S` / `Alt + $mod + S` | Special workspace |
### Layout ```text
| Key | Action | other/hyprland/hyprland.lua
|-----|--------| ```
| `$mod + A` | Scroll layout column left |
| `$mod + D` | Scroll layout column right |
### Applications The previous hyprlang configuration remains here:
| Key | Action |
|-----|--------|
| `$mod + T` | Terminal |
| `$mod + E` | File manager |
| `$mod + F` | Browser |
| `$mod + N` | Notes |
| `$mod + Shift + A` | App launcher |
| `$mod + Alt + A` | Toggle sidebar |
| `$mod + Q` | Kill apps (Steam/Pomodoro to special workspace) |
| `$mod + L` | Lock screen |
| `$mod + Shift + S` | Screenshot a window|
| `F11` | Screenshot the whole screen|
### Multimedia & System ```text
| Key | Action | other/hyprland/hyprland.conf
|-----|--------| ```
| F1 | Mute audio |
| F2 / F3 | Volume down / up | Host specific hyprland settings are generated by `/modules/applications/hyprland.nix` as `host.lua` which is imported by `hyprland.lua`.
| F4 / F5 / F6 | Media prev / play / next |
| F7 / F8 | Brightness down / up |
| `$mod + mouse` | Move / resize window | ## Workspace layouts
The current layout configuration is:
| Workspace | Layout |
| --------- | ----------- |
| `1` | `master` |
| `2` | `scrolling` 0.45 width |
| `other` | `dwindle` |
## Wallpapers
The wallpapers are stored in:
```text
assets/
├── wallpaper1.jpg
├── wallpaper2.jpg
├── wallpaper3.jpg
├── wallpaper4.jpg
└── wallpaper5.jpg
```
The active wallpaper is selected based on the workspace:
| Workspace | Wallpaper |
| --------- | ---------------- |
| `1` | `wallpaper1.jpg` |
| `2` | `wallpaper2.jpg` |
| `3` | `wallpaper3.jpg` |
| `4` | `wallpaper4.jpg` |
| `5` | `wallpaper5.jpg` |
| `6` | `wallpaper1.jpg` |
| `7` | `wallpaper2.jpg` |
| `8` | `wallpaper3.jpg` |
| `9` | `wallpaper4.jpg` |
| `10` | `wallpaper5.jpg` |
The Lua configuration contains placeholders for these paths, which are replaced by Nix during configuration generation.
The five wallpapers are paintings from Thomas Cole's *The Course of Empire* series.
--- ---
### Framework 16 RGB Macropad # Hyprland Keybindings
The **Framework 16 RGB macropad** is a 4×6 programmable key grid. Each key triggers one of the keybindings above via a macro. `SUPER` is the primary modifier.
If you **don’t have the physical macropad**, the table below shows which keybinding each macro triggers so you can run it from the keyboard instead: ## Window management
| Macropad Key | Linked Action (Hyprland keybinding) | | Key | Action |
| ------------ | -------------------------------------------- | | ----------------------------------- | ----------------- |
| Row 1, Col 1 | Kill all apps except focused (`Ctrl+$mod+6`) | | `SUPER + W` | Toggle floating |
| Row 1, Col 2 | Performance mode (`Ctrl+Alt+7`) | | `SUPER + G` | Toggle group |
| Row 1, Col 3 | Do not disturb (`Ctrl+$mod+4` | | `ALT + Return` | Toggle fullscreen |
| Row 1, Col 4 | Notification center (`Ctrl+Alt+1`) | | `SUPER + Arrow keys` | Move focus |
| Row 2, Col 1 | Pulseaudio control (`Ctrl+$mod+3`) | | `SUPER + CTRL + A` | Swap column left |
| Row 2, Col 2 | Change audio output (`Ctrl+Alt+Shift+0`) | | `SUPER + CTRL + D` | Swap column right |
| Row 2, Col 3 | Special characters (`Ctrl+$mod+3`) | | `SUPER + SHIFT + CTRL + Arrow keys` | Move window |
| Row 2, Col 4 | Color picker (`Ctrl+Alt+8`) | | `SUPER + SHIFT + Arrow keys` | Resize window |
| Row 3, Col 1 | Pomodoro timer (`Ctrl+Alt+0`) | | `SUPER + Z` | Drag window |
| Row 4, Col 1 | Launch Anki (`Ctrl+Alt+9`) | | `SUPER + X` | Resize window |
| `SUPER + mouse:272` | Drag window |
| `SUPER + mouse:273` | Resize window |
> Positions are labeled as `[row, column]` starting from top-left `[1,1]`. ## Workspaces
> Each macro calls a script or application from this configuration.
### Neovim keybinds | Key | Action |
| ---------------------- | --------------------------------------- |
| `SUPER + 1..9` | Focus workspace 1–9 |
| `SUPER + 0` | Focus workspace 10 |
| `SUPER + SHIFT + 1..9` | Move window to workspace 1–9 |
| `SUPER + SHIFT + 0` | Move window to workspace 10 |
| `SUPER + CTRL + Right` | Move to relative workspace `+1` |
| `SUPER + CTRL + Left` | Move to relative workspace `-1` |
| `SUPER + CTRL + Down` | Focus an empty workspace |
| `SUPER + mouse_down` | Next workspace |
| `SUPER + mouse_up` | Previous workspace |
| `SUPER + S` | Toggle special workspace |
| `SUPER + ALT + S` | Move active window to special workspace |
| Key | Action | ## Scrolling layout
|-------------|-----------------------|
| `<Space>` | `<leader>` |
| `§` | Cheatsheet |
| `<leader>1` | Open fold |
| `<leader>2` | Close fold |
| `<leader>e4` | Previous error |
| `<leader>e5` | Next error |
| `<leader>e1` | See error message |
| `<leader>e3` | See list of errors |
| `<leader>e2` | Show correction |
| `<leader>e<Tab>` | Stop grammar LSP |
| `<leader>f1` | Telescope files |
| `<leader>f2` | Telescope grep |
| `<leader>f3` | Telescope buffers |
| `<leader>f4` | Telescope help |
| `<leader>g1` | Hover documentation |
| `<leader>g2` | Go to definition |
| `<leader>g3` | Go to declaration |
| `<leader>g4` | Go to implementation |
| `<leader>g5` | Show references |
| `<leader><leader>` | Launch runner (terminal) |
| `<leader>r1` | Run fugit |
| `t` | Count syllabes (french) |
All moving macros with `<Space>`, `g`, and the recording with `q` are disabled. | Key | Action |
--- | ----------- | --------------------------- |
| `SUPER + A` | Move scrolling layout left |
| `SUPER + D` | Move scrolling layout right |
## Aliases ## Custom window management
| Alias | Command | ### `SUPER + Q`
| ------ | ----------------------------------------------------------------- |
| `snrt` | `git add -A && sudo nixos-rebuild test --flake ~/nixos/#laptop` | A custom Lua function checks the active window.
| `snrs` | `git add -A && sudo nixos-rebuild switch --flake ~/nixos/#laptop` |
* Steam → move it to the special workspace
* `custom-pomodoro` → move it to the special workspace
* anything else → close the window
### `SUPER + CTRL + 6`
Closes every window on the current workspace except the currently focused window.
--- ---
## Useful Information # Applications
- If you have an error similar to `Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.quickshell'")` see `./modules/other/desktopEntries.nix`
- `ls` is an alias for `eza`. If you want more info than the normal `ls` run `eza`, `l`, `ll` or `la` | Key | Action |
- `qtbatticon` is a custom battery icon tray, because `cbatticon` and `batticonplus` did not work. Click on it to get more info about the battery. | ------------------- | ------------------------ |
- `man` and `manix` use `fzf` for fuzzy search of pages. | `SUPER + T` | Kitty |
- `pkgs-unstable` can be used for unstable nixpkgs packages. | `SUPER + E` | Dolphin |
- Nix garbage collection runs weekly, deleting generations older than 7 days. | `SUPER + F` | Browser profile selector |
- Non-free packages (e.g., Obsidian) are allowed. | `SUPER + N` | Obsidian vault selector |
- `neovim` plugins configured in `./modules/home-manager/neovim.nix` | `SUPER + SHIFT + A` | Application launcher |
- `oh-my-zsh` plugins configured in `./modules/home-manager/oh-my-zsh.nix` | `SUPER + Backspace` | Session drawer |
- `ripgrep` default flags: `-S -. -p -n` | `CTRL + ALT + W` | Sidebar |
- Wallpapers change per workspace (5 paintings from Thomas Cole’s *The Course of Empire*). | `SUPER + L` | Lock screen |
- LibreWolf search engines: `@q` (Quant), `@hm` (Home-manager), `@np` (nixpkgs), `@nw` (Nixwiki), `@map` (OpenStreetMap). | `SUPER + SHIFT + S` | Screenshot picker |
- `ccat` colors `cat` output when not redirected; disables coloring if output is redirected (e.g., `>>`) to avoid breaking pipelines. | `F11` | Screenshot |
- Anki addons: `./modules/nixos/anki.nix` | `SUPER + V` | Clipboard history
- TLP config: `./modules/nixos/battery.nix`
- Framework 16 RGB macropad layout: `./other/kblayouts/framework_laptop_16_rgb_macropad.layout.json` Additional bindings launch or control:
* Hyprland keybinding viewer
* Pavucontrol
* GNOME Characters
* Anki
* custom performance mode
* custom tomato/pomodoro
* custom bottom launcher
* custom audio-output selector
* Caelestia shell
---
# Multimedia and Hardware Keys
| Key | Action |
| ---- | -------------------- |
| `F1` | Mute audio |
| `F2` | Volume down |
| `F3` | Volume up |
| `F4` | Previous media track |
| `F5` | Play/pause |
| `F6` | Next media track |
| `F7` | Brightness down |
| `F8` | Brightness up |
Volume and brightness bindings repeat while held.
---
# Gestures
The current Hyprland configuration includes:
| Gesture | Action |
| ----------------------- | ------------- |
| Three-finger horizontal | `scroll_move` (only for scrolling layout) |
| Two-finger pinch | Cursor zoom |
---
# Framework 16 RGB Macropad
The Framework 16 RGB Macropad layout is stored at:
```text
other/kblayouts/framework_laptop_16_rgb_macropad.layout.json
```
The macropad is used as a collection of physical shortcuts for actions that already have Hyprland keybindings.
The macros in the layout generate combinations involving `CTRL`, `ALT`, `SUPER`, and `SHIFT`. The important part is the **logical mapping** between each physical macropad position and its Hyprland shortcut.
> Positions are documented as `[row, column]`, starting from the top-left.
| Macropad Key | Linked Action |
| ------------ | ------------------------------------------------- |
| Row 1, Col 1 | Kill all apps except focused (`CTRL + SUPER + 6`) |
| Row 1, Col 2 | Performance mode (`CTRL + ALT + 7`) |
| Row 1, Col 3 | Do not disturb (`CTRL + SUPER + 4`) |
| Row 1, Col 4 | Notification center (`CTRL + ALT + 1`) |
| Row 2, Col 1 | PulseAudio control (`CTRL + SUPER + 3`) |
| Row 2, Col 2 | Change audio output (`CTRL + ALT + SHIFT + 0`) |
| Row 2, Col 3 | Special characters (`CTRL + SUPER + 5`) |
| Row 2, Col 4 | Color picker (`CTRL + ALT + 8`) |
| Row 3, Col 1 | Pomodoro timer (`CTRL + ALT + 0`) |
| Row 4, Col 1 | Launch Anki (`CTRL + ALT + 9`) |
The physical layout file contains additional transparent/unused positions, but the bindings above are the active shortcuts documented for the macropad.
---
# Neovim
Neovim is configured in:
```text
modules/applications/neovim.nix
```
The configuration includes LSP support, Telescope, Git tooling, grammar tooling and custom commands.
`<Space>` is the leader key.
| Key | Action |
| ------------------ | ---------------------- |
| `§` | Cheatsheet |
| `<leader>1` | Open fold |
| `<leader>2` | Close fold |
| `<leader>e1` | Show error message |
| `<leader>e2` | Show correction |
| `<leader>e3` | Show diagnostics |
| `<leader>e4` | Previous error |
| `<leader>e5` | Next error |
| `<leader>e<Tab>` | Stop grammar LSP |
| `<leader>f1` | Telescope files |
| `<leader>f2` | Telescope grep |
| `<leader>f3` | Telescope buffers |
| `<leader>f4` | Telescope help |
| `<leader>g1` | Hover documentation |
| `<leader>g2` | Go to definition |
| `<leader>g3` | Go to declaration |
| `<leader>g4` | Go to implementation |
| `<leader>g5` | Show references |
| `<leader><leader>` | Launch runner |
| `<leader>r1` | Run Fugitive |
| `t` | Count French syllables |
Some movement macros involving `<Space>`, `g`, and recording with `q` are intentionally disabled.
---
# Shell
The shell is based on **zsh**.
Relevant configuration is primarily found in:
```text
modules/applications/zsh.nix
```
and related application modules.
`oh-my-zsh` is used for shell customization.
`deja` is used for shell completion.
Useful command-line tools include:
* `eza`
* `zoxide`
* `ripgrep`
* `fzf`
* `fastfetch`
* `man`
* `manix`
`ls` is replaced by `eza`.
Common aliases include:
```text
l
ll
la
```
---
# Git and Nix Workflow
The configuration includes tooling for Git, Nix development, backups and cherry-picking.
Relevant modules include:
```text
modules/utilities/gitBackup.nix
modules/utilities/nixGitCherryPicker.nix
modules/utilities/nixUtils.nix
```
Two useful rebuild aliases are:
```bash
snrt
```
which runs:
```bash
git add -A && sudo nixos-rebuild test --flake ~/nixos/#laptop
```
and:
```bash
snrs
```
which runs:
```bash
git add -A && sudo nixos-rebuild switch --flake ~/nixos/#laptop
```
These aliases currently target the laptop host.
---
# Secrets
Secrets are managed using **agenix**.
The relevant files are:
```text
secrets/
├── ntfy.age
└── secrets.nix
```
Encrypted secrets should remain encrypted in Git. Decrypted secret contents and private keys should not be committed.
---
# Quickshell
The legacy Quickshell configuration lives under:
```text
other/quickshell/
```
---
# Custom Packages
Custom scripts and packages are located in:
```text
modules/packages/
```
Examples include:
* `custom-colorpicker`
* `custom-cowsay`
* `custom-syllabes`
* `custom-tomato`
* `custom-weather`
* `vivifyManuallyDerived`
* `dejaManuallyDerived`
Or imported in flake.nix from other repos.
Examples include:
* `custom-browserprofiles` Fzf selector between different LibreWolf profiles, private window and the tor browser.
* `custom-syllabes` A syllab counter when I write french poetry. (note: algorithmic syllab counting is pretty difficult in french, so this small scripts makes a lot of errors)
* `ngcp` (see the [GitHub repo](https://github.com/tomasriveral/Nix-Git-Cherry-Picker)) is what i use to manage between my `laptop` and `desktop` git branch.
* `nixpkgs-notifier` (see the [GitHub repo](https://github.com/tomasriveral/nixpkgs-notifier)) notifies my when PRs get merged to nixos-unstable.
---
# Applications and Desktop Environment
The configuration currently contains modules for applications and components such as:
* Hyprland
* Kitty
* Dolphin
* LibreWolf/browser tooling
* Thunderbird
* Obsidian
* Neovim
* Caelestia
* Quickshell
* Hypridle
* Rofi
* Waybar
* Wlogout
* Git
* SSH
* Mullvad
* Bluetooth
* audio/media tools
* office tools
* LaTeX
* development tools
* Ollama
The exact set of enabled software depends on the host configuration and imported modules.
---
# Things That Still Require Manual Setup
Not everything used by the desktop environment is completely declarative.
Some application state may need to be configured manually after installation:
* LibreWolf extension settings
* LibreWolf bookmarks
* Thunderbird account/server settings
* Birdtray settings
* Inkscape settings
* other application-specific user data
---
# Useful Information
* Wallpapers are five paintings from Thomas Cole's *The Course of Empire*.
* `qtbatticon` is a custom battery tray indicator.
* `man` and `manix` use `fzf` for fuzzy searching.
* `pkgs-unstable` is available for packages that need to come from unstable nixpkgs.
* `pkgs-master` can be enabled in flake.nix. Attention, all the packages will need to be compiled on the machine.
* `pkgs-local` can be enable in flake.nix. Attention, all the packages will need to be compiled on the machine.
* Automatic Nix garbage collection removes old generations according to the configured cleanup policy.
* Non-free packages are enabled where required.
* Neovim plugins are configured in `modules/applications/neovim.nix`.
* `oh-my-zsh` configuration is kept with the shell/application modules.
* The Framework 16 RGB Macropad layout is stored in `other/kblayouts/framework_laptop_16_rgb_macropad.layout.json`.
* Anki-related configuration is distributed across the relevant application/package modules.
* Battery and power-related configuration is under `modules/hardware/`.
* Custom commands used by Hyprland are generally provided by `modules/packages/`.
---
# Documentation
Additional documentation is kept close to the corresponding configuration where practical.
Important documentation files include:
```text
docs/printing.md
modules/applications/README.md
modules/hardware/disko/README.md
modules/packages/README.md
modules/utilities/README.md
other/hyprland/README.md
other/mullvad/README.md
other/quickshell/README.md
```
Generated
+43 -106
View File
@@ -1,30 +1,5 @@
{ {
"nodes": { "nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1770165109,
"narHash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=",
"owner": "ryantm",
"repo": "agenix",
"rev": "b027ee29d959fda4b60b57566d64c98a202e0feb",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"caelestia-cli": { "caelestia-cli": {
"inputs": { "inputs": {
"caelestia-shell": [ "caelestia-shell": [
@@ -36,11 +11,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1786071436, "lastModified": 1781239472,
"narHash": "sha256-/CQJ781dRGWWUMrJ34vIj1PQnNEEWgnEEuod0r5LKGk=", "narHash": "sha256-WFL8jZMWNH1tx3UwaJ9aa9NN25uOEJ9mbKPRNQJY/xM=",
"owner": "caelestia-dots", "owner": "caelestia-dots",
"repo": "cli", "repo": "cli",
"rev": "751fbc555a83faba5dd589270d14eeb22afab174", "rev": "3f3229aed4f36752a02fd870fd6cad94bd76555f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -59,11 +34,11 @@
"quickshell": "quickshell" "quickshell": "quickshell"
}, },
"locked": { "locked": {
"lastModified": 1786238888, "lastModified": 1781408632,
"narHash": "sha256-pnO0u0UUYwkr72pJR5Giu93LZfU/fhTKJZYa1xeM7Po=", "narHash": "sha256-kYVf3Jye4UhyBrtubYcSrmVyFv9uqOY2JvjmElFiZHE=",
"owner": "caelestia-dots", "owner": "caelestia-dots",
"repo": "shell", "repo": "shell",
"rev": "817a220e8e87c4df9f3681033a0d8a8054cdaa30", "rev": "f86c359cd90530bacc800e94e35ffbebecd3f58f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -72,28 +47,6 @@
"type": "github" "type": "github"
} }
}, },
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1744478979,
"narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "43975d782b418ebf4969e9ccba82466728c2851b",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"disko": { "disko": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -119,12 +72,12 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1785627969, "lastModified": 1778716662,
"narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=", "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a", "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"revCount": 483, "revCount": 475,
"type": "tarball", "type": "tarball",
"url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.483%2Brev-427bf4bd9435fdf21321c8cc628c24efc14c0f7a/019fc124-5bcc-79d1-a1e4-306df724dc0a/source.tar.gz" "url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.475%2Brev-f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb/019e2533-0324-7e90-93eb-29b02e1a61cd/source.tar.gz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@@ -133,7 +86,7 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
@@ -155,11 +108,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785119570, "lastModified": 1781319724,
"narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=", "narHash": "sha256-ZGuxexEMo4Xv28KJ0dX/m/PHN4oZIOnxHZpNTyrvx4M=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d", "rev": "8355f0a16b2dbb06a97959a918af5b239bbe05ae",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -171,11 +124,11 @@
}, },
"import-tree": { "import-tree": {
"locked": { "locked": {
"lastModified": 1784254960, "lastModified": 1778781969,
"narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=", "narHash": "sha256-Jjuz5CmSkur8KvLDoGa+vylEp+RkQtv4mt/qcMznpH0=",
"owner": "vic", "owner": "vic",
"repo": "import-tree", "repo": "import-tree",
"rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69", "rev": "d321337efd0f23a9eb14a42adb7b2c29313ab274",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -211,11 +164,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1786462419, "lastModified": 1781373243,
"narHash": "sha256-A7Q3UIyzDg1O54E0W6HOQIzvsVJq/rMuelJR+ELLRvI=", "narHash": "sha256-CpZ5FEU1BtW6K4FywtCCE2wJs6R/Ifps3etRDh8NJ9w=",
"owner": "tomasriveral", "owner": "tomasriveral",
"repo": "nix-git-cherry-picker", "repo": "nix-git-cherry-picker",
"rev": "aec69257dc9b68d875333ec9f4a7b310d878abd1", "rev": "9865dba535620831ae7cab395bf404f8f464df0e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -226,11 +179,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1786535285, "lastModified": 1781216227,
"narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=", "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9f78f44a87948854445dae0b6bf82b2e87e4efb5", "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -242,11 +195,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1785031560, "lastModified": 1777168982,
"narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=", "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c", "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -265,11 +218,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785077063, "lastModified": 1781273662,
"narHash": "sha256-rJxX9Mq16TOiIlf+nNR4SaLsWf1yII8xsQpJUNio3Yg=", "narHash": "sha256-50dd7Cs1mUHq1srw7UojdzCYOB4TfrIXMv7XHHPU9zw=",
"owner": "tomasriveral", "owner": "tomasriveral",
"repo": "nixpkgs-notifier", "repo": "nixpkgs-notifier",
"rev": "39a89ffbdc49cc9ab6f67bc4be7ea2f7d3e2b38c", "rev": "12183f26e8b196d9906f82dc05f9672793c61038",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -280,11 +233,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1786534138, "lastModified": 1781328464,
"narHash": "sha256-fBJMdnKUTUDtfi/BYLr71HLaC9dG382arxLF2Egg2uo=", "narHash": "sha256-j9uBlHI0eJ9zWU9IlF6SlBBPdeJu30hcvar31IRKHpw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "044bfe75bfe4c7bbe043dc17b5e42ea823b84a09", "rev": "5a722a7155bfc9fbe657f28d26b71860d95324bc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -304,11 +257,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1786346006, "lastModified": 1780908812,
"narHash": "sha256-PDM9fB1zBhqVVE75WxRM7vIo3QhL2LGKKdd6N+hTGlg=", "narHash": "sha256-syxEJP0NNgVZYHp/zRVuz32VYf+ULD9itZk7V06SCos=",
"owner": "tomasriveral", "owner": "tomasriveral",
"repo": "notewrapper", "repo": "notewrapper",
"rev": "689c3074c03328e2086dc032a2fc3de00bbef466", "rev": "e670ef935f0dd87dc8a8c6982147a9b8dce7565e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -328,11 +281,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1786270331, "lastModified": 1781158593,
"narHash": "sha256-GRhNuYIXR/0WWBya4CHfTKyCbL3wuFPJC5yBh5pHU8s=", "narHash": "sha256-zxlheX4o1MK00dkYzoXm7Srj5SD9iOCSp4N7f1iShr0=",
"owner": "r14dd", "owner": "r14dd",
"repo": "patent", "repo": "patent",
"rev": "d852cea921124a8b9002db9beb2af2d935af8130", "rev": "68772d068088d62a030619090959165af5e71ed1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -349,11 +302,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785704021, "lastModified": 1781053488,
"narHash": "sha256-eQtczKMAS4ItlB4pr1B3MqBZiyRVl2nkqNdtyRSQMa8=", "narHash": "sha256-P4WEBaKgl8flRckHxXGHzT0potPvB3x8ZFIp9gLEAMY=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "28771c7c74b42e20afca0b1b63980cb46515537c", "rev": "d99d87d5e5ec4e696815348692fdaaf0b6be1b2c",
"revCount": 835, "revCount": 822,
"type": "git", "type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell" "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}, },
@@ -364,7 +317,6 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix",
"caelestia-shell": "caelestia-shell", "caelestia-shell": "caelestia-shell",
"disko": "disko", "disko": "disko",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
@@ -417,21 +369,6 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",
-5
View File
@@ -47,11 +47,6 @@
url = "github:nix-community/disko"; url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
/* /*
microPlugins-vivify = { microPlugins-vivify = {
url = "git+https://codeberg.org/gibbert/micro-vivify"; url = "git+https://codeberg.org/gibbert/micro-vivify";
+1
View File
@@ -1,4 +1,5 @@
_: { _: {
flake.homeModules.tmux = _: { flake.homeModules.tmux = _: {
programs.tmux = { programs.tmux = {
enable = true; enable = true;
+6
View File
@@ -36,6 +36,7 @@ _: {
home.packages = [ home.packages = [
#self.packages.${pkgs.system}.dejaManuallyDerived #self.packages.${pkgs.system}.dejaManuallyDerived
pkgs-unstable.deja pkgs-unstable.deja
pkgs-unstable.trash-cli
]; ];
programs.zsh = { programs.zsh = {
@@ -89,6 +90,11 @@ _: {
nvvim = "nvim"; nvvim = "nvim";
nviim = "nvim"; nviim = "nvim";
hledger-ui = "puffin"; hledger-ui = "puffin";
rm = "trash-put";
rml = "trash-list";
rmr = "trash-restore";
rme = "trash-empty";
rmx = "trash-rm";
}; };
}; };
}; };
+2 -2
View File
@@ -2,8 +2,8 @@ _: {
flake.nixosModules.hardwareUtils-laptop = {pkgs, ...}: { flake.nixosModules.hardwareUtils-laptop = {pkgs, ...}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# used for the framework 16 laptop # used for the framework 16 laptop
#framework-tool framework-tool
#framework-tool-tui framework-tool-tui
vial # Open-source GUI and QMK fork for configuring your keyboard in real time vial # Open-source GUI and QMK fork for configuring your keyboard in real time
]; ];
}; };
-10
View File
@@ -1,10 +0,0 @@
_: {
flake.nixosModules.onxyboox = {pkgs, ...}: {
services.gvfs.enable = true;
environment.systemPackages = with pkgs; [
gvfs
calibre
kdePackages.kio-extras
];
};
}
+2 -2
View File
@@ -44,7 +44,7 @@
notifications notifications
nvidia nvidia
office office
#ollama ollama
otherUtils otherUtils
performance-desktop performance-desktop
printer printer
@@ -133,7 +133,7 @@
home.homeDirectory = "/home/tomasr"; home.homeDirectory = "/home/tomasr";
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "neovim";
TERMINAL = "kitty"; TERMINAL = "kitty";
}; };
+2 -5
View File
@@ -9,8 +9,6 @@
inherit (self) pkgs-unstable pkgs-local pkgs-master; inherit (self) pkgs-unstable pkgs-local pkgs-master;
}; };
modules = with self.nixosModules; [ modules = with self.nixosModules; [
inputs.agenix.nixosModules.default
agenix
# important do not remove # important do not remove
home-manager-laptop home-manager-laptop
laptop laptop
@@ -20,7 +18,7 @@
audioAndMedia audioAndMedia
autoCleanup-laptop autoCleanup-laptop
autoUpdate-laptop autoUpdate-laptop
#battery-laptop battery-laptop
bluetooth bluetooth
bootloader bootloader
browsers browsers
@@ -47,7 +45,6 @@
nixUtils nixUtils
notifications notifications
office office
onxyboox
#ollama #ollama
otherUtils otherUtils
printer printer
@@ -132,7 +129,7 @@
home.homeDirectory = "/home/tomasr"; home.homeDirectory = "/home/tomasr";
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "neovim";
TERMINAL = "kitty"; TERMINAL = "kitty";
SYSTEMD_PAGER = "cat"; SYSTEMD_PAGER = "cat";
PAGER = "cat"; PAGER = "cat";
+4 -14
View File
@@ -19,9 +19,6 @@
description = "NixOS flake auto update"; description = "NixOS flake auto update";
serviceConfig = { serviceConfig = {
Environment = [
"NTFY_SECRET=${config.age.secrets.ntfy.path}"
];
Type = "oneshot"; Type = "oneshot";
ExecStart = "/run/current-system/sw/bin/custom-autoupdate"; ExecStart = "/run/current-system/sw/bin/custom-autoupdate";
@@ -76,9 +73,6 @@
description = "NixOS flake auto update"; description = "NixOS flake auto update";
serviceConfig = { serviceConfig = {
Environment = [
"NTFY_SECRET=${config.age.secrets.ntfy.path}"
];
Type = "oneshot"; Type = "oneshot";
ExecStart = "/run/current-system/sw/bin/custom-autoupdate"; ExecStart = "/run/current-system/sw/bin/custom-autoupdate";
@@ -118,9 +112,8 @@
runtimeInputs = with pkgs; [ runtimeInputs = with pkgs; [
git git
nixos-rebuild nixos-rebuild
curl matrix-commander-rs
libnotify libnotify
nix
]; ];
text = '' text = ''
@@ -142,7 +135,7 @@
# update lock only # update lock only
nix flake update --flake "$FLAKE_DIR" nix flake update --flake "$FLAKE_DIR"
if /run/wrappers/bin/sudo ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule if sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if ! git -C "$FLAKE_DIR" diff --quiet -- flake.lock; then if ! git -C "$FLAKE_DIR" diff --quiet -- flake.lock; then
git -C "$FLAKE_DIR" add flake.lock git -C "$FLAKE_DIR" add flake.lock
@@ -187,14 +180,11 @@
runtimeInputs = with pkgs; [ runtimeInputs = with pkgs; [
git git
nixos-rebuild nixos-rebuild
matrix-commander-rs
libnotify libnotify
curl
nix
]; ];
text = '' text = ''
# shellcheck disable=SC1090
source "$NTFY_SECRET"
set -e set -e
FLAKE_DIR="/home/tomasr/nixos" FLAKE_DIR="/home/tomasr/nixos"
@@ -211,7 +201,7 @@
# update lock only # update lock only
nix flake update --flake "$FLAKE_DIR" nix flake update --flake "$FLAKE_DIR"
if /run/wrappers/bin/sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule if sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if ! git -C "$FLAKE_DIR" diff --quiet -- flake.lock; then if ! git -C "$FLAKE_DIR" diff --quiet -- flake.lock; then
git -C "$FLAKE_DIR" add flake.lock git -C "$FLAKE_DIR" add flake.lock
+1 -1
View File
@@ -2,9 +2,9 @@ _: {
flake.nixosModules.hledger = {pkgs, ...}: { flake.nixosModules.hledger = {pkgs, ...}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
hledger hledger
hledger-ui
hledger-web hledger-web
asciinema # used for some hledger demos asciinema # used for some hledger demos
puffin
]; ];
}; };
flake.nixosModules.hledger-laptop = _: { flake.nixosModules.hledger-laptop = _: {
+1 -7
View File
@@ -48,17 +48,11 @@
"configFetchTime": 1, "configFetchTime": 1,
"localNotify": true, "localNotify": true,
"matrix": { "matrix": {
"enable": false, "enable": true,
"room": "!BXRRokBmEdNOyYdfOF:matrix.org", "room": "!BXRRokBmEdNOyYdfOF:matrix.org",
"ping": true, "ping": true,
"userPing": "@notificationbot_0000", "userPing": "@notificationbot_0000",
"userPingServer": "matrix.org" "userPingServer": "matrix.org"
},
"ntfy": {
"enable": true,
"auth": ":$NTFY_TOKEN",
"server": "$NTFY_SERVER",
"topic": "Alerts"
} }
} }
''; '';
+1 -9
View File
@@ -16,15 +16,7 @@ _: {
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh = { # services.openssh.enable = true;
enable = true;
hostKeys = [
{
path = "/etc/ssh/ssh_host_ed25519_key";
type = "ed25519";
}
];
};
# Open ports in the firewall. # Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
BIN
View File
Binary file not shown.
-8
View File
@@ -1,8 +0,0 @@
I am testing the tool ngcp i created. If this file disapears. It means I coded it wrong.
The problem before was that it did:
1. cherry pick
2. push
I didn't pulled changed before cherry picking