Compare commits

...

93 Commits

Author SHA1 Message Date
62622d8484 Added signal apps 2026-03-05 09:47:12 +00:00
af45dc34cf Enable zram compression 2026-03-03 13:43:53 +00:00
3d2516aa83 dotfiles bump 2026-03-03 13:43:42 +00:00
5d15ebe2d2 Attempt to fix theming 2026-02-26 18:43:17 +00:00
e8becbb9b4 Replaced smile with walker "symbols" module 2026-02-26 12:10:45 +00:00
25e607b05f Flake bump 2026-02-25 13:06:40 +00:00
11dbca9a25 Updated ghostty config 2026-02-25 12:35:16 +00:00
705861861c Dotfiles pull 2026-02-25 12:21:54 +00:00
af9e6c1f99 Flake bump 2026-02-25 11:19:05 +00:00
60c8c0e805 Enables ghostty systemd service 2026-02-25 11:09:29 +00:00
052957dda2 Updated dotfiles 2026-02-25 11:09:20 +00:00
a99d56674a Fixed errors and warnings 2026-02-24 10:50:38 +00:00
0ee99ecacc Fixed nixer imports 2026-02-24 10:05:13 +00:00
5961834ac1 Updated conifg to use nixers repo 2026-02-24 00:20:36 +00:00
43890000f1 Failed attempt to fix/formalize repo 2026-02-23 18:21:29 +00:00
c9dd770fe7 Dependency pull 2026-02-23 14:13:31 +00:00
d25930beda Refactored rbw-autofill 2026-02-23 14:12:08 +00:00
2e1da650f1 Added babashka, and package for obsidian searching via walker 2026-02-23 14:11:55 +00:00
1bed7f9a24 Update submodules 2026-02-19 14:45:46 +00:00
0bdb2cd9c7 Fixed bash config on homeserver 2026-02-19 14:34:22 +00:00
a2ccb82883 Disabled non-working goaccess container 2026-02-19 12:07:05 +00:00
313788b705 Update config files 2026-02-18 16:32:13 +00:00
10f251232f Added syntax highlighting 2026-02-18 16:26:04 +00:00
da96083321 Added more shell configs 2026-02-18 15:45:55 +00:00
1e7dc1c592 Created rbw autounlock 2026-02-18 12:25:01 +00:00
973d334944 Added local custom packages repo 2026-02-18 12:25:01 +00:00
22bc6e1411 Version bumps 2026-02-18 10:34:53 +00:00
4a57caf66f Switched wpa_supplicant for iwd 2026-02-18 10:34:49 +00:00
f9ff10b687 Update Dotfiles 2026-02-16 13:57:53 +00:00
bfb58ab2d1 Flake bump 2026-02-16 13:57:53 +00:00
845f148529 Added nushell updates 2026-02-13 14:39:02 +00:00
dbe307daa8 Update dotfiles 2026-02-13 13:36:10 +00:00
a6f9f11759 Updated dotfiles 2026-02-13 13:27:54 +00:00
60c06f47f6 Updated dotfiles 2026-02-13 11:17:18 +00:00
71ef3cd92e Flake bump 2026-02-13 09:50:11 +00:00
15a6a14b7e Added more yubikey tools 2026-02-13 09:50:06 +00:00
1c5319f82f Added basic yubikey support 2026-02-13 09:24:16 +00:00
0d644d769c Added impala for network management 2026-02-13 09:18:21 +00:00
1d8ce0dd02 Modules bump 2026-02-11 10:41:17 +00:00
0303c204e4 Fixed broken hyprland command 2026-02-11 09:27:37 +00:00
6bbff50ba0 Flake bump 2026-02-06 14:58:46 +00:00
82ef0d74d6 Updated dotfiles 2026-02-06 14:58:30 +00:00
74a6017de2 Switched bitwarden-cli to rbw 2026-02-06 10:46:09 +00:00
0016ae4a8a Quickly generated a README for this repo 2026-02-05 17:11:54 +00:00
4e68cd734b Fixed vikunja config 2026-02-04 14:42:43 +00:00
dadbcbb9ea Removed superfluous packages 2026-02-04 10:00:20 +00:00
9670b914e2 Updated package manifest for worklaptop 2026-02-03 18:31:35 +00:00
4f11e3f493 Flake bump 2026-02-03 14:44:02 +00:00
8296de917d Fixed icon theming 2026-02-03 14:43:57 +00:00
a81bce828a Replaced wofi with walker 2026-02-03 14:43:49 +00:00
7cb86d6f50 Updated dotfiles 2026-02-03 14:42:56 +00:00
a62f8fdcf4 Added new packages 2026-01-30 10:47:34 +00:00
4375c0629b Update regreet settings 2026-01-23 09:48:56 +00:00
4286f74af8 Flake bump 2026-01-23 09:48:43 +00:00
ddd249b6df Merge remote-tracking branch 'origin/main' 2026-01-22 10:13:32 +00:00
94e38cbe84 Updated dotfiles 2026-01-22 09:41:47 +00:00
c2ec4c2e8a Attempt to add metrics to home server 2026-01-21 09:40:57 +00:00
954652802d Update dotfiles 2026-01-16 11:58:37 +00:00
3cbadd49ef Added missing icon themes 2026-01-16 11:57:39 +00:00
7add6b42cb Added video player to worklaptop config 2026-01-16 11:48:35 +00:00
fc6dc5fcc4 Fixed hyprland startup warning issue 2026-01-15 11:26:29 +00:00
0d151652da Updated dotfiles 2026-01-14 14:24:24 +00:00
6c74c6aac0 Flake bump 2026-01-14 09:40:56 +00:00
f610ea778d Added convenience aliases to justfile 2026-01-14 09:40:21 +00:00
a2306cccd4 Attempted to fix nushell nvim config 2026-01-13 14:02:00 +00:00
717a6ee2f4 Changed default justfile command 2026-01-13 13:31:26 +00:00
7c8d91d0bf Flake bump 2026-01-13 13:28:26 +00:00
7074d8f426 Improved justfile 2026-01-13 13:28:15 +00:00
0c22cb09ff Tweaked shell integrations 2026-01-13 12:55:27 +00:00
8126c81e97 Tweaked nushell config to allow my dotfiles to co-exist with HM settings 2026-01-13 12:32:27 +00:00
4b56d75dd6 Moved uv from python install to nixpkgs 2026-01-12 17:02:21 +00:00
375e0882fe Fixed mistake in nvim config file filter 2026-01-12 11:54:08 +00:00
5db7b3c3ea Dotfiles update 2026-01-12 11:53:55 +00:00
9fdf746aff Flake bump 2026-01-12 11:44:17 +00:00
92e51c4ec0 Flake bump 2026-01-08 15:14:09 +00:00
4b6c081bdd Changed greeter from gdk to regreet 2026-01-08 15:13:55 +00:00
0c7a0e0414 Enabled guix 2026-01-06 09:53:36 +00:00
c3ba099953 nvim bump 2025-12-22 17:30:38 +00:00
94f550cc9d Version bump 2025-12-22 17:19:48 +00:00
1c71c860c6 Version bumps 2025-12-22 17:14:17 +00:00
6f8e075aac Submodule pulls 2025-12-22 16:14:52 +00:00
59b814dcbd Fixed path filters for neovim config 2025-12-22 15:55:03 +00:00
0a994a3013 Updated neovim config and added filters to remove devtools 2025-12-22 15:31:46 +00:00
8ecc67c56e Flake bump 2025-12-19 12:19:56 +00:00
dfa280fffd Partial fix of metrics container 2025-12-16 14:47:58 +00:00
338337b880 Enabled goaccess for metrics and removed grafana/prometheus 2025-12-15 23:37:15 +00:00
c24b894ccc dotfiles updates 2025-12-13 02:30:59 +00:00
e591a1edcb Version bumps 2025-12-13 02:08:43 +00:00
4c58524477 Added go and nodejs for lsp management 2025-12-11 13:20:58 +00:00
fe046cdb52 Reverted python change on homeserver and added python to worklaptop 2025-12-11 13:10:19 +00:00
77ad9d9147 Flake bump 2025-12-11 10:48:14 +00:00
8ab6f627f0 Updated python config 2025-12-11 10:48:09 +00:00
6929b99a34 Updated server config 2025-12-02 16:34:54 +00:00
31 changed files with 899 additions and 286 deletions

116
README.md Normal file
View File

@@ -0,0 +1,116 @@
# **My NixOS Configuration ❄️**
This repository contains my personal declarative configuration for NixOS systems and Home Manager profiles. It uses **Nix Flakes** for reproducibility and dependency management.
## **🖥️ Hosts**
| Hostname | Type | Description | Key Features |
| :---- | :---- | :---- | :---- |
| **worklaptop** | Laptop | Personal workstation | Hyprland (UWSM), Nvidia Prime, Dev Tools, Gaming |
| **homeserver** | Server | Headless Homelab | Podman Containers, Caddy Reverse Proxy, Gitea, Nextcloud |
| **core** | Profile | Generic Home Manager config | Base CLI tools, Shell config, Dotfiles (Distro-agnostic) |
## **✨ Features**
* **Flakes:** Fully flake-enabled configuration.
* **Shell:** [Nushell](https://www.nushell.sh/) configured as the default user shell with carapace and starship integration.
* **Core Profile:** A core configuration is available for bootstrapping new machines or for use on non-NixOS Linux distributions, providing a consistent shell and CLI environment without system-level dependencies.
* **Window Manager:** Hyprland with uwsm (Universal Wayland Session Manager) on the laptop.
* **Secrets:** [Sops-nix](https://github.com/Mic92/sops-nix) implementation using Age encryption for managing sensitive data (API keys, database passwords).
* **Containers:** Declarative OCI containers using Podman (replacing Docker) for homeserver services.
* **Automation:** A justfile is included to simplify system updates and garbage collection.
* **Theming:** Centralized TokyoNight theme definition passed as specialArgs to Home Manager modules.
* **Dotfiles:** Dotfiles are managed via a git submodule mapped to home-manager/core/dotfiles.
## **📂 Structure**
.
├── .github/ \# GitHub Actions (Submodule sync)
├── flake.nix \# Entrypoint & Input definitions
├── flake.lock \# Pinned dependency versions
├── justfile \# Command runner for system maintenance
├── nixos/ \# System-level configurations
│ ├── core/ \# Shared system modules
│ ├── homeserver/ \# Server-specific hardware & services
│ └── worklaptop/ \# Laptop-specific hardware & services
├── home-manager/ \# User-level configurations
│ ├── core/ \# Shared user modules (dotfiles, shell, etc.)
│ ├── homeserver/ \# Server user config
│ └── worklaptop/ \# Laptop user config (Hyprland, Theming)
└── secrets.yaml \# Encrypted secrets (SOPS)
## **🚀 Bootstrap / Installation**
1. **Clone the repository:**
git clone \--recursive \[https://github.com/Cian-H/my\_nixos\_config.git\](https://github.com/Cian-H/my\_nixos\_config.git) /home/cianh/my\_nixos\_config
cd my\_nixos\_config
2. **Setup Secrets:**
Place your Age private key in the appropriate location (defined in home-manager/\<host\>.nix):
* Target: \~/.config/sops/age/keys.txt
3. **Apply Configuration:**
* **NixOS System:**
sudo nixos-rebuild switch \--flake .\#\<hostname\>
* **Home Manager (Specific Host):**
home-manager switch \--flake .\#cianh@\<hostname\>
* **Home Manager (Core/Generic):**
home-manager switch \--flake .\#cianh@core
## **🛠️ Management (Justfile)**
I use just to abstract away common nixos-rebuild and home-manager commands.
| Command | Description |
| :---- | :---- |
| just update | Updates both System and Home Manager (pulls git & updates flake). |
| just update-root | Updates only the NixOS system configuration. |
| just update-home | Updates only the Home Manager configuration. |
| just install-home | Installs the generic core Home Manager profile. |
| just quick-update | Rebuilds configuration *without* pulling git or updating flake inputs. |
| just cleanup \<days\> | Garbage collects generations older than \<days\> and optimizes store. |
| just repl | Opens a Nix REPL loaded with the flake context. |
**Example:**
\# Full system update
just update
\# Quick rebuild after changing a config file
just quick-update
## **🔒 Secrets Management**
Secrets are managed via sops-nix.
* **Config:** .sops.yaml
* **Key:** keys.txt (Age key)
To edit secrets:
sops home-manager/secrets.yaml
## **📦 Server Services (Homeserver)**
The homeserver runs services via Podman, orchestrated in home-manager/homeserver/containers.nix.
Key services include:
* **Proxy:** Caddy
* **Cloud:** Nextcloud (with Redis & MariaDB)
* **Code:** Gitea
* **Productivity:** Vikunja
* **Media:** Jellyfin
## **🔗 Submodules**
This repo uses a submodule for raw dotfiles.
* **Path:** home-manager/core/dotfiles
* **Source:** https://github.com/Cian-H/dotfiles.git
If the folder is empty, initialize it:
git submodule update \--init \--recursive

263
flake.lock generated
View File

@@ -1,5 +1,40 @@
{
"nodes": {
"elephant": {
"inputs": {
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1770910218,
"narHash": "sha256-IyHoHbhLFuIgFG+n7dqHwJaXuNnRaEsxCfAsfudV1KY=",
"owner": "abenz1267",
"repo": "elephant",
"rev": "c354a596ec7a7e34e9c26478dc7ef9680bc23e6d",
"type": "github"
},
"original": {
"owner": "abenz1267",
"repo": "elephant",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -7,11 +42,11 @@
]
},
"locked": {
"lastModified": 1764536451,
"narHash": "sha256-BgtcUkBfItu9/yU14IgUaj4rYOanTOUZjUfBP20/ZB4=",
"lastModified": 1772380125,
"narHash": "sha256-8C+y46xA9bxcchj9GeDPJaRUDApaA3sy2fhJr1bTbUw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3fdd076e08049a9c7a83149b270440d9787d2df5",
"rev": "a07a44a839eb036e950bf397d9b782916f8dcab3",
"type": "github"
},
"original": {
@@ -24,16 +59,17 @@
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixers-repo",
"zen-browser",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762964643,
"narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=",
"lastModified": 1771756436,
"narHash": "sha256-Tl2I0YXdhSTufGqAaD1ySh8x+cvVsEI1mJyJg12lxhI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "827f2a23373a774a8805f84ca5344654c31f354b",
"rev": "5bd3589390b431a63072868a90c0f24771ff4cbb",
"type": "github"
},
"original": {
@@ -44,7 +80,7 @@
},
"hyprcursor-phinger": {
"inputs": {
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1763845612,
@@ -60,7 +96,79 @@
"type": "github"
}
},
"nixers-repo": {
"inputs": {
"elephant": "elephant",
"flake-compat": "flake-compat",
"hyprcursor-phinger": "hyprcursor-phinger",
"nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable",
"walker": "walker",
"zen-browser": "zen-browser"
},
"locked": {
"lastModified": 1772125727,
"narHash": "sha256-J41Xm8ewrCn16r0bDtOX+qu+uhNiOp9EAvy4FJ6mhKY=",
"owner": "Cian-H",
"repo": "Nixers",
"rev": "918d6b2bf5fbe032fda2bf989e0716de4d68e057",
"type": "github"
},
"original": {
"owner": "Cian-H",
"repo": "Nixers",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1764242076,
"narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1771369470,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0182a361324364ae3f436a63005877674cf45efb",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable_2": {
"locked": {
"lastModified": 1772198003,
"narHash": "sha256-I45esRSssFtJ8p/gLHUZ1OUaaTaVLluNkABkk6arQwE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dd9b079222d43e1943b6ebd802f04fd959dc8e61",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1762977756,
"narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
@@ -76,29 +184,13 @@
"type": "github"
}
},
"nixpkgs-unstable": {
"nixpkgs_3": {
"locked": {
"lastModified": 1764242076,
"narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=",
"lastModified": 1771714954,
"narHash": "sha256-nhZJPnBavtu40/L2aqpljrfUNb2rxmWTmSjK2c9UKds=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1764494334,
"narHash": "sha256-x2xCEXUlU4Ap56+t5HaoReOQ/bV/bIQ5rzTn/m+V3HQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d542db745310b6929708d9abea513f3ff19b1341",
"rev": "afbbf774e2087c3d734266c22f96fca2e78d3620",
"type": "github"
},
"original": {
@@ -108,13 +200,45 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs_4": {
"locked": {
"lastModified": 1764445028,
"narHash": "sha256-ik6H/0Zl+qHYDKTXFPpzuVHSZE+uvVz2XQuQd1IVXzo=",
"lastModified": 1768564909,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a09378c0108815dbf3961a0e085936f4146ec415",
"rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1772047000,
"narHash": "sha256-7DaQVv4R97cii/Qdfy4tmDZMB2xxtyIvNGSwXBBhSmo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1267bb4920d0fc06ea916734c11b0bf004bbe17e",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1772173633,
"narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6",
"type": "github"
},
"original": {
@@ -127,23 +251,22 @@
"root": {
"inputs": {
"home-manager": "home-manager",
"hyprcursor-phinger": "hyprcursor-phinger",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix",
"zen-browser": "zen-browser"
"nixers-repo": "nixers-repo",
"nixpkgs": "nixpkgs_5",
"nixpkgs-unstable": "nixpkgs-unstable_2",
"sops-nix": "sops-nix"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1764483358,
"narHash": "sha256-EyyvCzXoHrbL467YSsQBTWWg4sR96MH1sPpKoSOelB4=",
"lastModified": 1772401007,
"narHash": "sha256-YHykQg0h9hrlZGpMcywnaFzQ1Kn/5YNCCOSaaAl6z7Q=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "5aca6ff67264321d47856a2ed183729271107c9c",
"rev": "d8be5ea4cd3bc363492ab5bc6e874ccdc5465fe4",
"type": "github"
},
"original": {
@@ -152,19 +275,73 @@
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"walker": {
"inputs": {
"elephant": [
"nixers-repo",
"elephant"
],
"nixpkgs": "nixpkgs_4",
"systems": "systems_2"
},
"locked": {
"lastModified": 1771062828,
"narHash": "sha256-y1jBFFO0u+V21y3YldHZozrDwVJVrdC+o3c4M8/rasU=",
"owner": "abenz1267",
"repo": "walker",
"rev": "19b1104585305e0806b842af341630f72038a4b9",
"type": "github"
},
"original": {
"owner": "abenz1267",
"repo": "walker",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": [
"nixers-repo",
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1764534155,
"narHash": "sha256-HQyLJT0ikblWDR/8pzDJ7WYEZoFzkUrgwZk/f+JULBI=",
"lastModified": 1771876204,
"narHash": "sha256-nTX+Qa3W+xsFxBl+lr4RsWvC4vgZocLt/qDeIvnf4+w=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "fb066e133e614c024a470608ff56585c4f707b44",
"rev": "2f951adfab1f5a090fe5ea4c5eaf11efca7f1039",
"type": "github"
},
"original": {

168
flake.nix
View File

@@ -6,45 +6,86 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
# Nixpkgs-unstable
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Nixers
nixers-repo.url = "github:Cian-H/Nixers";
# Home manager
home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# Add sops for secret management
sops-nix.url = "github:Mic92/sops-nix";
# add phinger hyprcursor flake
hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger";
# add zen browser flake
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
outputs = {
self,
nixpkgs,
nixpkgs-unstable,
nixers-repo,
home-manager,
...
} @ inputs: let
inherit (self) outputs;
worklaptopTheme = {
pkgs,
unstablePkgs,
nixers,
}: {
gtkTheme = {
name = "Tokyonight-Dark";
package = pkgs.tokyonight-gtk-theme;
};
qtTheme = {
name = "Kvantum-Tokyo-Night";
package = nixers.tokyonight-kvantum-theme;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "phinger-cursors-dark";
package = pkgs.phinger-cursors;
};
fonts = {
serif = "NotoSerifNerdFont";
sansSerif = "NotoSansNerdFont";
monospace = "MonaspiceArNerdFontMono";
};
wallpaperSource = "/home/cianh/Pictures/Wallpapers/City_1_Upscaled.png";
wallpaper = "/var/lib/AccountsService/wallpaper/cianh";
avatarSource = "/home/cianh/Pictures/face.png";
avatar = "/var/lib/AccountsService/icons/cianh";
};
in {
# NixOS configuration entrypoint
# Available through 'nixos-rebuild --flake .#your-hostname'
nixosConfigurations = {
worklaptop = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs outputs;
unstablePkgs = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
worklaptop = let
pkgs = import nixpkgs {
system = "x86_64-linux";
config = {
allowUnfree = true;
cudaSupport = true;
allowUnfreePredicate = _: true;
};
};
in
nixpkgs.lib.nixosSystem {
specialArgs = let
unstablePkgs = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
nixers = inputs.nixers-repo.packages.x86_64-linux;
in {
inherit inputs outputs unstablePkgs nixers;
theme = worklaptopTheme {inherit pkgs unstablePkgs nixers;};
};
modules = [
./nixos/worklaptop.nix
];
};
modules = [
./nixos/worklaptop.nix
];
};
homeserver = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs outputs;
unstablePkgs = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
nixers = inputs.nixers-repo.packages.x86_64-linux;
};
modules = [
./nixos/homeserver.nix
@@ -55,7 +96,7 @@
# Standalone home-manager configuration entrypoint
# Available through 'home-manager --flake .#your-username@your-hostname'
homeConfigurations = {
"cianh@core" = home-manager.lib.homeManagerConfiguration {
"cianh@core" = let
pkgs = import nixpkgs {
# Home-manager requires 'pkgs' instance
system = "x86_64-linux";
@@ -65,49 +106,58 @@
allowUnfreePredicate = _: true;
};
};
extraSpecialArgs = {
inherit inputs outputs;
unstablePkgs = import nixpkgs-unstable {
# We also need to do the same for unstable
system = "x86_64-linux";
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit inputs outputs;
unstablePkgs = import nixpkgs-unstable {
# We also need to do the same for unstable
system = pkgs.stdenv.hostPlatform.system;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
};
nixers = inputs.nixers-repo.packages.${pkgs.stdenv.hostPlatform.system};
};
modules = [
./home-manager/core.nix
];
};
modules = [
./home-manager/core.nix
];
};
"cianh@worklaptop" = home-manager.lib.homeManagerConfiguration {
"cianh@worklaptop" = let
pkgs = import nixpkgs {
# Home-manager requires 'pkgs' instance
system = "x86_64-linux";
config = {
allowUnfree = true;
cudaSupport = true;
# Workaround for https://github.com/nix-community/home-manager/issues/2942
allowUnfreePredicate = _: true;
};
};
extraSpecialArgs = {
inherit inputs outputs;
unstablePkgs = import nixpkgs-unstable {
# We also need to do the same for unstable
system = "x86_64-linux";
cudaSupport = true;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = let
unstablePkgs = import nixpkgs-unstable {
system = "x86_64-linux";
cudaSupport = true;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
};
nixers = inputs.nixers-repo.packages.${pkgs.stdenv.hostPlatform.system};
in {
inherit inputs outputs unstablePkgs nixers;
theme = worklaptopTheme {inherit pkgs unstablePkgs nixers;};
};
modules = [
./home-manager/worklaptop.nix
];
};
modules = [
./home-manager/worklaptop.nix
];
};
"cianh@homeserver" = home-manager.lib.homeManagerConfiguration {
"cianh@homeserver" = let
pkgs = import nixpkgs {
# Home-manager requires 'pkgs' instance
system = "x86_64-linux";
@@ -117,21 +167,25 @@
allowUnfreePredicate = _: true;
};
};
extraSpecialArgs = {
inherit inputs outputs;
unstablePkgs = import nixpkgs-unstable {
# We also need to do the same for unstable
system = "x86_64-linux";
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit inputs outputs;
unstablePkgs = import nixpkgs-unstable {
# We also need to do the same for unstable
system = "x86_64-linux";
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
};
nixers = inputs.nixers-repo.packages.${pkgs.stdenv.hostPlatform.system};
};
modules = [
./home-manager/homeserver.nix
];
};
modules = [
./home-manager/homeserver.nix
];
};
};
};
}

View File

@@ -13,7 +13,7 @@
./core/packages.nix
./core/programs.nix
./core/services.nix
inputs.hyprcursor-phinger.homeManagerModules.hyprcursor-phinger
inputs.nixers-repo.homeManagerModules.hyprcursor-phinger
];
nix = {

View File

@@ -8,16 +8,32 @@
...
}: {
home.file = {
".bashrc" = lib.mkIf (!config.programs.bash.enable) {
source = ./dotfiles/dot_bashrc;
};
".bashrc".source = ./dotfiles/dot_bashrc;
".zshrc".source = ./dotfiles/dot_zshrc;
"nushell" = {
source = ./dotfiles/dot_config/nushell;
target = ".config/nushell";
target = ".config/nushell/my_config";
recursive = true;
};
"fish" = {
source = ./dotfiles/dot_config/fish;
target = ".config/fish";
recursive = true;
};
"nvim" = {
source = ./dotfiles/dot_config/nvim;
source = lib.cleanSourceWith {
src = ./dotfiles/dot_config/nvim;
filter = name: type: let
baseName = baseNameOf name;
in
! (
(lib.hasPrefix "*/nvim/*" name)
|| (lib.hasPrefix "." baseName)
|| (lib.hasPrefix "devenv" baseName)
|| (lib.hasSuffix ".toml" baseName)
|| (lib.hasSuffix ".yml" baseName)
);
};
target = ".config/nvim";
recursive = true;
};
@@ -39,6 +55,7 @@
xdg.configFile = {
"bat".source = ./dotfiles/dot_config/bat;
"path.env".source = ./dotfiles/dot_config/path.env;
"fastfetch".source = ./dotfiles/dot_config/fastfetch;
"helix".source = ./dotfiles/dot_config/helix;
"home-manager".source = ./dotfiles/dot_config/home-manager;
@@ -57,12 +74,17 @@
"kitty".source = ./dotfiles/dot_config/kitty;
"ghostty".source = ./dotfiles/dot_config/ghostty;
"micro".source = ./dotfiles/dot_config/micro;
"nushell/lsp.nu".text = ''
source ~/.config/nushell/my_config/lsp.nu
'';
"neovide".source = ./dotfiles/dot_config/neovide;
"glow".source = ./dotfiles/dot_config/glow;
"glamour".source = ./dotfiles/dot_config/glamour;
"starship.toml".source = ./dotfiles/dot_config/starship.toml;
"elephant/websearch.toml".source = ./dotfiles/dot_config/elephant/websearch.toml;
"walker".source = ./dotfiles/dot_config/walker;
"waybar".source = ./dotfiles/dot_config/waybar;
"euporie".source = ./dotfiles/dot_config/euporie;
# "euporie".source = ./dotfiles/dot_config/euporie;
"bottom".source = ./dotfiles/dot_config/bottom;
"swaync".source = ./dotfiles/dot_config/swaync;
"zellij".source = ./dotfiles/dot_config/zellij;
@@ -73,7 +95,6 @@
"hg".source = ./dotfiles/dot_config/hg;
"stylua.toml".source = ./dotfiles/dot_config/stylua.toml;
"electron-flags.conf".source = ./dotfiles/dot_config/electron-flags.conf;
"Kvantum".source = ./dotfiles/dot_config/Kvantum;
"foot".source = ./dotfiles/dot_config/foot;
};
}

View File

@@ -12,6 +12,37 @@
];
programs = {
home-manager.enable = true;
nushell = let
pkgStream = unstablePkgs;
in {
enable = true;
package = pkgStream.nushell;
plugins = with pkgStream.nushellPlugins; [
bson
desktop_notifications
formats
gstat
highlight
polars
query
semver
];
extraConfig = ''
source ~/.config/nushell/my_config/config.nu
'';
extraEnv = ''
source ~/.config/nushell/my_config/env.nu
'';
};
git.enable = true;
zoxide = {
enable = true;
enableNushellIntegration = true;
};
lazygit = {
enable = true;
package = unstablePkgs.lazygit;
enableNushellIntegration = true;
};
};
}

View File

@@ -10,5 +10,6 @@
home = {
username = "cianh";
homeDirectory = "/home/cianh";
shell.enableNushellIntegration = true;
};
}

View File

@@ -10,7 +10,6 @@
imports = [
./core.nix
./homeserver/packages.nix
./homeserver/programs.nix
./homeserver/containers.nix
inputs.sops-nix.homeManagerModules.sops
];

View File

@@ -21,7 +21,7 @@
imports = [
./containers/media.nix
./containers/monitoring.nix
# ./containers/metrics.nix
./containers/caddy.nix
./containers/work_tools.nix
./containers/nextcloud.nix

View File

@@ -21,9 +21,11 @@
volumes = [
"/home/cianh/caddy/config:/etc/caddy"
"/home/cianh/caddy/data:/data:Z"
"/home/cianh/caddy/logs:/var/log/caddy"
"/home/cianh/caddy/placeholder_site:/var/www/site:Z"
"/home/cianh/blog:/var/www/blog:Z"
"/home/cianh/Nextcloud:/var/www/nextcloud:Z"
"/home/cianh/goaccess/site:/var/www/goaccess:Z"
];
};
};

View File

@@ -19,10 +19,6 @@
"gitea-net"
"proxy-net"
];
ports = [
"3000:3000"
"2222:22"
];
environment = {
TZ = "Europe/Dublin";
};

View File

@@ -11,7 +11,9 @@
jellyfin = {
image = "docker.io/jellyfin/jellyfin:latest";
autoUpdate = "registry";
ports = ["8096:8096/tcp"];
network = [
"proxy-net"
];
volumes = [
"/home/cianh/TV_Archive/data:/media:Z"
"/home/cianh/TV_Archive/jf_config:/config:Z"

View File

@@ -0,0 +1,26 @@
{
inputs,
outputs,
lib,
config,
pkgs,
unstablePkgs,
...
}: {
services.podman = {
containers = {
goaccess = {
image = "docker.io/allinurl/goaccess:latest";
exec = "--output=/var/www/goaccess/index.html --log-file=/var/log/caddy/access.log --log-format=CADDY --tz=Europe/Dublin --anonymize-ip --real-time-html --ws-url=wss://metrics.bulba.space:443/ws --port=7890 --origin=metrics.bulba.space";
autoUpdate = "registry";
network = [
"proxy-net"
];
volumes = [
"/home/cianh/caddy/logs:/var/log/caddy:Z"
"/home/cianh/goaccess/site:/var/www/goaccess"
];
};
};
};
}

View File

@@ -1,38 +0,0 @@
{
inputs,
outputs,
lib,
config,
pkgs,
unstablePkgs,
...
}: {
services.podman = {
networks = {
grafana-net = {};
};
containers = {
grafana = {
image = "docker.io/grafana/grafana:latest";
autoUpdate = "registry";
network = ["grafana-net"];
ports = ["3100:3000"];
user = "1000:1000";
volumes = [
"/home/cianh/grafana:/var/lib/grafana:Z"
];
};
prometheus = {
image = "docker.io/prom/prometheus:latest";
autoUpdate = "registry";
network = [
"grafana-net"
"proxy-net"
];
volumes = [
"/home/cianh/prometheus/:/etc/prometheus/"
];
};
};
};
}

View File

@@ -19,9 +19,6 @@
"nextcloud-net"
"proxy-net"
];
ports = [
"9000:9000"
];
environment = {
NEXTCLOUD_URL = "nextcloud.bulba.space";
TRUSTED_DOMAINS = "nextcloud.bulba.space";

View File

@@ -34,7 +34,7 @@
volumes = [
"/home/cianh/vikunja/files:/app/vikunja/files"
];
ports = ["3456:3456"];
extraPodmanArgs = ["--userns=keep-id"];
extraConfig = {
Unit = {
After = "podman-vikunja-db.service";

View File

@@ -10,7 +10,6 @@
home.packages = [
(pkgs.python3.withPackages (
python-pkgs: [
python-pkgs.pip
python-pkgs.pkginfo
python-pkgs.python-lsp-server
python-pkgs.setuptools

View File

@@ -1,13 +0,0 @@
{
inputs,
outputs,
lib,
config,
pkgs,
unstablePkgs,
...
}: {
programs = {
bash.enable = true;
};
}

View File

@@ -14,5 +14,6 @@
./worklaptop/programs.nix
./worklaptop/defaultapps.nix
./worklaptop/theming.nix
inputs.nixers-repo.homeManagerModules.walker
];
}

View File

@@ -5,33 +5,42 @@
config,
pkgs,
unstablePkgs,
nixers,
...
}: let
# Patch vivaldi to ensure reliability on wayland
vivaldi-wayland = pkgs.symlinkJoin {
name = "vivaldi-wayland";
paths = [pkgs.vivaldi];
buildInputs = [pkgs.makeWrapper];
postBuild = ''
wrapProgram $out/bin/vivaldi \
--set NIXOS_OZONE_WL 1 \
--add-flags "--ozone-platform=wayland --enable-features=UseOzonePlatform --ozone-platform-hint=auto"
'';
};
in {
home.packages = [
pkgs.bitwarden-desktop
pkgs.babashka
pkgs.bat-extras.batman
pkgs.bat-extras.batdiff
pkgs.bat-extras.batgrep
pkgs.bat-extras.prettybat
pkgs.blueman
pkgs.broot
pkgs.clapper
pkgs.cliphist
pkgs.distrobox
pkgs.dvc
pkgs.feh
pkgs.git-lfs
pkgs.go
unstablePkgs.gurk-rs
pkgs.has
pkgs.hyperfine
pkgs.imagemagick
pkgs.impala
pkgs.jujutsu
pkgs.kubectl
pkgs.lnav
pkgs.lynx
pkgs.minikube
unstablePkgs.mission-center
pkgs.neovide
pkgs.nix-output-monitor
pkgs.nix-tree
pkgs.nh
pkgs.nodejs_24
pkgs.nwg-look
unstablePkgs.obsidian
pkgs.onlyoffice-desktopeditors
@@ -41,23 +50,31 @@ in {
unstablePkgs.podman-desktop
unstablePkgs.podman-tui
pkgs.popsicle
pkgs.smile
nixers.python-env
nixers.rbw-autofill
unstablePkgs.ruff
pkgs.signal-desktop
pkgs.sshs
unstablePkgs.uv
pkgs.vial
vivaldi-wayland
nixers.vivaldi-wayland
unstablePkgs.visidata
pkgs.vivaldi-ffmpeg-codecs
nixers.walker-obsidian-search
pkgs.warpinator
pkgs.xarchiver
pkgs.yubikey-agent
pkgs.yubikey-manager
pkgs.zathura
pkgs.zettlr
unstablePkgs.zeal
unstablePkgs.zed-editor
unstablePkgs.zotero
inputs.zen-browser.packages.x86_64-linux.default
nixers.zen-browser
# theming
pkgs.adwaita-icon-theme
pkgs.gtk-engine-murrine
pkgs.gtk_engines
pkgs.phinger-cursors
pkgs.tokyonight-gtk-theme
pkgs.hicolor-icon-theme
# Backend dev tools
pkgs.lua54Packages.lua
pkgs.luajitPackages.luarocks

View File

@@ -5,6 +5,7 @@
config,
pkgs,
unstablePkgs,
nixers,
...
}: {
programs = {
@@ -12,10 +13,25 @@
enable = true;
enableNushellIntegration = true;
};
direnv = {
enable = true;
enableNushellIntegration = true;
};
waybar = {
enable = true;
systemd.enable = true;
};
walker = {
enable = true;
runAsService = true;
};
rbw = {
enable = true;
settings = {
email = "chughes000@gmail.com";
pinentry = nixers.rbw-autofill;
};
};
hyprcursor-phinger.enable = true;
};
}

View File

@@ -12,4 +12,24 @@
pueue.enable = true;
hyprpaper.enable = true;
};
# Custom version of ghostty service, to stop closing during update
systemd.user.services."app-com.mitchellh.ghostty" = {
Unit = {
Description = "Ghostty Terminal Emulator";
X-SwitchMethod = "keep-old";
After = ["graphical-session.target"];
PartOf = ["graphical-session.target"];
};
Service = {
ExecStart = "${lib.getExe config.programs.ghostty.package}";
Environment = "WAYLAND_DISPLAY=wayland-1";
Type = "notify";
ReloadSignal = "SIGUSR2";
KillMode = "mixed";
Restart = "on-failure";
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
}

View File

@@ -5,22 +5,23 @@
config,
pkgs,
unstablePkgs,
theme,
...
}: {
# GTK theming
gtk = {
enable = true;
iconTheme = {
name = "Tokyonight-Light";
package = pkgs.tokyonight-gtk-theme;
name = theme.iconTheme.name;
package = theme.iconTheme.package;
};
theme = {
name = "Tokyonight-Dark";
package = pkgs.tokyonight-gtk-theme;
name = theme.gtkTheme.name;
package = theme.gtkTheme.package;
};
cursorTheme = {
name = "phinger-cursors-dark";
package = pkgs.phinger-cursors;
name = theme.cursorTheme.name;
package = theme.cursorTheme.package;
};
gtk2.extraConfig = ''
gtk-theme-name="Tokyonight-Dark"
@@ -38,13 +39,34 @@
'';
};
};
# QT theming
qt = {
enable = true;
platformTheme.name = "kvantum";
style.name = "kvantum";
};
xdg.configFile."Kvantum/kvantum.kvconfig".text = ''
[General]
theme=${theme.qtTheme.name}
'';
# dconf theming settings
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
gtk-theme = "Tokyonight-Dark";
icon-theme = "Tokyonight-Light";
cursor-theme = "phinger-cursors-dark";
gtk-theme = theme.gtkTheme.name;
icon-theme = theme.iconTheme.name;
cursor-theme = theme.cursorTheme.name;
};
};
# Ensure theming packages are installed
home.packages = [
theme.gtkTheme.package
theme.qtTheme.package
theme.iconTheme.package
theme.cursorTheme.package
];
}

View File

@@ -1,11 +1,29 @@
default:
@just --list
set shell := ["bash", "-c"]
prebuild:
git := "true"
flake := "true"
flatpak := "true"
default:
@just --choose
_git-sync:
git pull --recurse
git submodule update --remote --recursive
_flake-update:
nix flake update
prebuild:
@if [ "{{git}}" == "true" ]; then \
echo ">> Syncing Git..."; \
just _git-sync; \
fi
@if [ "{{flake}}" == "true" ]; then \
echo ">> Updating Flake..."; \
just _flake-update; \
fi
_update-root:
if `/usr/bin/env grep -Rq "nixos" /etc/*-release`; then \
sudo nixos-rebuild switch --flake .?submodules=1#$HOSTNAME; \
@@ -24,8 +42,62 @@ _update-home:
update-home: prebuild _update-home
update: prebuild _update-root _update-home
quick-update-root:
just git=false flake=false update-root
cleanup:
quick-update-home:
just git=false flake=false update-home
quick-update:
just git=false flake=false update
nogit-update-root:
just git=false update-root
nogit-update-home:
just git=false update-home
nogit-update:
just git=false update
noflake-update-root:
just flake=false update-root
noflake-update-home:
just flake=false update-home
noflake-update:
just flake=false update
update-flatpaks:
@if [ "{{flatpak}}" == "true" ] && command -v flatpak &> /dev/null; then \
echo ">> Updating Flatpaks..."; \
flatpak update -y; \
flatpak uninstall --unused -y; \
else \
echo ">> Flatpak not found or disabled. Skipping."; \
fi
history:
@echo ">> System Generations:"
@nix-env -p /nix/var/nix/profiles/system --list-generations | tail -n 5
@echo "\n>> Home Manager Generations:"
@home-manager generations | head -n 5
repl:
nix repl --file flake.nix
update: prebuild _update-root _update-home update-flatpaks
cleanup days="":
@if [ -n "{{days}}" ]; then \
echo ">> Deleting system generations older than {{days}}..."; \
sudo nix-collect-garbage --delete-older-than {{days}}; \
fi
@echo ">> Cleaning Nix Store..."
nix-store --gc
nix-store --optimise
@if command -v flatpak &> /dev/null; then \
echo ">> Cleaning unused Flatpaks..."; \
flatpak uninstall --unused -y; \
fi

View File

@@ -9,7 +9,6 @@
environment.systemPackages = [
pkgs.atuin
pkgs.bat
pkgs.bitwarden-cli
pkgs.bottom
pkgs.delta
pkgs.dust
@@ -37,12 +36,14 @@
pkgs.passh
pkgs.pkg-config
pkgs.pueue
pkgs.rbw
pkgs.ripgrep
pkgs.rm-improved
pkgs.starship
pkgs.tealdeer
pkgs.wget
pkgs.wl-clipboard
pkgs.wtype
pkgs.xclip
pkgs.xcp
pkgs.zellij

View File

@@ -75,10 +75,21 @@
blacklistedKernelModules = ["nouveau"];
};
networking.hostName = "worklaptop"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Configure networking
networking = {
hostName = "worklaptop"; # Define your hostname.
networkmanager.enable = false;
wireless.iwd = {
enable = true;
settings = {
General.EnableNetworkConfiguration = true;
Network = {
EnableIPv6 = true;
NameResolvingService = "systemd";
};
};
};
};
# Set your time zone.
time.timeZone = "Europe/Dublin";
@@ -138,8 +149,14 @@
stateVersion = "23.11"; # Did you read the comment?
autoUpgrade.enable = true;
autoUpgrade.dates = "weekly";
activationScripts.diff = ''
if [[ -e /run/current-system ]]; then
${pkgs.nushell}/bin/nu -c "let diff_closure = (${pkgs.nix}/bin/nix store diff-closures /run/current-system '$systemConfig'); let table = (\$diff_closure | lines | where \$it =~ KiB | where \$it =~ | parse -r '^(?<Package>\S+): (?<Old>[^,]+)(?:.*) (?<New>[^,]+)(?:.*), (?<DiffBin>.*)$' | insert Diff { get DiffBin | ansi strip | into filesize } | sort-by -r Diff | reject DiffBin); if (\$table | get Diff | is-not-empty) { print \"\"; \$table | append [[Package Old New Diff]; [\"\" \"\" \"\" \"\"]] | append [[Package Old New Diff]; [\"\" \"\" \"Total:\" (\$table | get Diff | math sum) ]] | print; print \"\" }"
fi
'';
};
zramSwap.enable = true; # enable RAM compression
# Set user config settings
users.defaultUserShell = pkgs.nushell;
users.defaultUserShell = unstablePkgs.nushell;
}

View File

@@ -4,12 +4,13 @@
config,
pkgs,
unstablePkgs,
nixers,
...
}: {
environment.systemPackages = [
pkgs.cargo
pkgs.flatpak
pkgs.gdm
pkgs.greetd
pkgs.grim
pkgs.grub2_efi
pkgs.nix-ld
@@ -20,7 +21,9 @@
pkgs.qmk
pkgs.qmk-udev-rules
pkgs.qmk_hid
pkgs.regreet
pkgs.seahorse
nixers.walker
pkgs.wayland
pkgs.wayland-utils
pkgs.xfce.thunar
@@ -36,6 +39,5 @@
unstablePkgs.libnotify
unstablePkgs.swaynotificationcenter
unstablePkgs.waybar
unstablePkgs.wofi
];
}

View File

@@ -4,66 +4,111 @@
config,
pkgs,
unstablePkgs,
theme,
...
}: {
}: let
username = "cianh";
in {
# Activate DEs
programs.uwsm.enable = true;
programs.hyprland = {
enable = true;
withUWSM = true;
xwayland.enable = true;
programs = {
uwsm = {
enable = true;
waylandCompositors.hyprland.binPath = lib.mkForce "/run/current-system/sw/bin/start-hyprland";
};
regreet = {
enable = true;
theme = {
name = theme.gtkTheme.name;
package = theme.gtkTheme.package;
};
cursorTheme = {
name = theme.cursorTheme.name;
package = theme.cursorTheme.package;
};
iconTheme = {
name = theme.iconTheme.name;
package = theme.iconTheme.package;
};
font = {
name = "Noto Sans";
size = 16;
package = pkgs.noto-fonts;
};
settings = {
GTK.application_prefer_dark_theme = true;
appearance.greeting_msg = "Hello ${username}, welcome back to '${config.networking.hostName}'!";
background = {
path = theme.wallpaper;
fit = "Cover";
};
};
};
hyprland = {
enable = true;
withUWSM = true;
xwayland.enable = true;
};
iio-hyprland.enable = true;
# Enable my preferred DE utilities
thunar = {
enable = true;
plugins = [
pkgs.xfce.thunar-volman
pkgs.xfce.thunar-archive-plugin
pkgs.xfce.thunar-media-tags-plugin
];
};
xfconf.enable = true;
# Disable automatically activated programs i dont want
foot.enable = false;
# Lets also activate some handy devenv tools
direnv = {
enable = true;
nix-direnv.enable = true;
};
nix-ld = {
enable = true;
libraries = [
pkgs.acl
pkgs.alsa-lib
pkgs.at-spi2-core
pkgs.attr
pkgs.bzip2
pkgs.curl
pkgs.dbus
pkgs.eget
pkgs.expat
pkgs.glib
pkgs.libsodium
pkgs.libssh
pkgs.libxml2
pkgs.nspr
pkgs.nss
pkgs.openssl
pkgs.pango
pkgs.stdenv.cc
pkgs.systemd
pkgs.util-linux
pkgs.vulkan-loader
pkgs.xz
pkgs.zlib
pkgs.zstd
];
};
seahorse.enable = true; # enable the graphical frontend
gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gnome3;
enableSSHSupport = true;
};
virt-manager.enable = true;
yubikey-touch-detector = {
enable = true;
libnotify = true;
};
};
# Enable my preferred DE utilities
programs.thunar.enable = true;
programs.thunar.plugins = [
pkgs.xfce.thunar-volman
pkgs.xfce.thunar-archive-plugin
pkgs.xfce.thunar-media-tags-plugin
];
programs.xfconf.enable = true;
# Disable automatically activated programs i dont want
programs.foot.enable = false;
# Lets also activate some handy devenv tools
programs.direnv.enable = true;
programs.direnv.nix-direnv.enable = true;
programs.nix-ld = {
enable = true;
libraries = [
pkgs.acl
pkgs.alsa-lib
pkgs.at-spi2-core
pkgs.attr
pkgs.bzip2
pkgs.curl
pkgs.dbus
pkgs.eget
pkgs.expat
pkgs.glib
pkgs.libsodium
pkgs.libssh
pkgs.libxml2
pkgs.nspr
pkgs.nss
pkgs.openssl
pkgs.pango
pkgs.stdenv.cc
pkgs.systemd
pkgs.util-linux
pkgs.vulkan-loader
pkgs.xz
pkgs.zlib
pkgs.zstd
];
};
programs.seahorse.enable = true; # enable the graphical frontend
programs.gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gnome3;
enableSSHSupport = true;
};
programs.virt-manager.enable = true;
}

View File

@@ -4,12 +4,14 @@
config,
pkgs,
unstablePkgs,
theme,
...
}: {
services = {
displayManager.defaultSession = "hyprland-uwsm";
desktopManager.gnome.enable = false;
displayManager.gdm.enable = true;
displayManager.gdm.enable = false;
greetd.enable = true;
xserver = {
videoDrivers = ["nvidia"]; # or "nvidiaLegacy470 etc.
enable = true;
@@ -18,6 +20,7 @@
variant = "";
};
};
resolved.enable = true;
pulseaudio.enable = false;
pipewire = {
enable = true;
@@ -32,30 +35,48 @@
# Enable flatpaks
flatpak.enable = true;
# Add guix, as it is a common tool for reproducibility in comp sci
guix.enable = true;
# Enable the OpenSSH daemon and other remote tools.
openssh.enable = true;
gnome.gnome-keyring.enable = true;
pcscd.enable = true;
udev = {
packages = [
pkgs.yubikey-personalization
];
};
};
# Add custom services
systemd.services = {
setup-user-icon = {
description = "Set user profile icon";
wantedBy = ["multi-user.target"];
greetd = {
after = ["setup-user-vars.service"];
requires = ["setup-user-vars.service"];
};
setup-user-vars = {
description = "Set user profile vars";
wantedBy = [
"multi-user.target"
"graphical-session.target"
];
after = ["home.mount"];
serviceConfig = {
Type = "oneshot";
ExecStart = ''
${pkgs.bash}/bin/bash -c " \
mkdir -p /var/lib/AccountsService/{icons,users} && \
cp /home/cianh/Pictures/face.png /var/lib/AccountsService/icons/cianh && \
echo '[User]\nSession=\nIcon=/var/lib/AccountsService/icons/cianh\nSystemAccount=false' > /var/lib/AccountsService/users/cianh && \
mkdir -p /var/lib/AccountsService/{icons,users,wallpaper} && \
cp ${theme.avatarSource} ${theme.avatar} && \
echo '[User]\nSession=\nIcon=${theme.avatar}\nSystemAccount=false' > /var/lib/AccountsService/users/cianh && \
chown root:root /var/lib/AccountsService/users/cianh && \
chmod 0600 /var/lib/AccountsService/users/cianh && \
chown root:root /var/lib/AccountsService/icons/cianh && \
chmod 0444 /var/lib/AccountsService/icons/cianh \
chown root:root ${theme.avatar} && \
chmod 0444 ${theme.avatar} && \
cp ${theme.wallpaperSource} ${theme.wallpaper} && \
chown root:root ${theme.wallpaper} && \
chmod 0444 ${theme.wallpaper} \
"
'';
};

View File

@@ -3,13 +3,17 @@
lib,
pkgs,
modulesPath,
theme,
...
}: {
# GTK theming
environment.sessionVariables.GTK_THEME = "Tokyonight-Dark";
# Session Variable for GTK
environment.sessionVariables.GTK_THEME = theme.gtkTheme.name;
# Delegate QT theming to kvantum
environment.sessionVariables.QT_STYLE_OVERRIDE = "kvantum";
# QT config
qt = {
enable = true;
style = "kvantum";
};
# Fonts
fonts = {
@@ -18,9 +22,9 @@
fontconfig = {
defaultFonts = {
serif = ["NotoSerifNerdFont"];
sansSerif = ["NotoSansNerdFont"];
monospace = ["MonaspiceArNerdFontMono"];
serif = [theme.fonts.serif];
sansSerif = [theme.fonts.sansSerif];
monospace = [theme.fonts.monospace];
};
};
@@ -49,5 +53,10 @@
# Adwaita (i love gnome, but god damn is adwaita annoying on other DEs)
pkgs.adwaita-icon-theme
pkgs.libadwaita
# My theme packages set at the top level
theme.gtkTheme.package
theme.qtTheme.package
theme.iconTheme.package
theme.cursorTheme.package
];
}