mirror of
https://github.com/Cian-H/My_NixOS_Config.git
synced 2026-03-10 06:38:07 +00:00
Compare commits
93 Commits
5883819835
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 62622d8484 | |||
| af45dc34cf | |||
| 3d2516aa83 | |||
| 5d15ebe2d2 | |||
| e8becbb9b4 | |||
| 25e607b05f | |||
| 11dbca9a25 | |||
| 705861861c | |||
| af9e6c1f99 | |||
| 60c8c0e805 | |||
| 052957dda2 | |||
| a99d56674a | |||
| 0ee99ecacc | |||
| 5961834ac1 | |||
| 43890000f1 | |||
| c9dd770fe7 | |||
| d25930beda | |||
| 2e1da650f1 | |||
| 1bed7f9a24 | |||
| 0bdb2cd9c7 | |||
| a2ccb82883 | |||
| 313788b705 | |||
| 10f251232f | |||
| da96083321 | |||
| 1e7dc1c592 | |||
| 973d334944 | |||
| 22bc6e1411 | |||
| 4a57caf66f | |||
| f9ff10b687 | |||
| bfb58ab2d1 | |||
| 845f148529 | |||
| dbe307daa8 | |||
| a6f9f11759 | |||
| 60c06f47f6 | |||
| 71ef3cd92e | |||
| 15a6a14b7e | |||
| 1c5319f82f | |||
| 0d644d769c | |||
| 1d8ce0dd02 | |||
| 0303c204e4 | |||
| 6bbff50ba0 | |||
| 82ef0d74d6 | |||
| 74a6017de2 | |||
| 0016ae4a8a | |||
| 4e68cd734b | |||
| dadbcbb9ea | |||
| 9670b914e2 | |||
| 4f11e3f493 | |||
| 8296de917d | |||
| a81bce828a | |||
| 7cb86d6f50 | |||
| a62f8fdcf4 | |||
| 4375c0629b | |||
| 4286f74af8 | |||
| ddd249b6df | |||
| 94e38cbe84 | |||
| c2ec4c2e8a | |||
| 954652802d | |||
| 3cbadd49ef | |||
| 7add6b42cb | |||
| fc6dc5fcc4 | |||
| 0d151652da | |||
| 6c74c6aac0 | |||
| f610ea778d | |||
| a2306cccd4 | |||
| 717a6ee2f4 | |||
| 7c8d91d0bf | |||
| 7074d8f426 | |||
| 0c22cb09ff | |||
| 8126c81e97 | |||
| 4b56d75dd6 | |||
| 375e0882fe | |||
| 5db7b3c3ea | |||
| 9fdf746aff | |||
| 92e51c4ec0 | |||
| 4b6c081bdd | |||
| 0c7a0e0414 | |||
| c3ba099953 | |||
| 94f550cc9d | |||
| 1c71c860c6 | |||
| 6f8e075aac | |||
| 59b814dcbd | |||
| 0a994a3013 | |||
| 8ecc67c56e | |||
| dfa280fffd | |||
| 338337b880 | |||
| c24b894ccc | |||
| e591a1edcb | |||
| 4c58524477 | |||
| fe046cdb52 | |||
| 77ad9d9147 | |||
| 8ab6f627f0 | |||
| 6929b99a34 |
116
README.md
Normal file
116
README.md
Normal 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
263
flake.lock
generated
@@ -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
168
flake.nix
@@ -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
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Submodule home-manager/core/dotfiles updated: 8bd730eed5...a3616d95e9
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
home = {
|
||||
username = "cianh";
|
||||
homeDirectory = "/home/cianh";
|
||||
shell.enableNushellIntegration = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
imports = [
|
||||
./core.nix
|
||||
./homeserver/packages.nix
|
||||
./homeserver/programs.nix
|
||||
./homeserver/containers.nix
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
imports = [
|
||||
./containers/media.nix
|
||||
./containers/monitoring.nix
|
||||
# ./containers/metrics.nix
|
||||
./containers/caddy.nix
|
||||
./containers/work_tools.nix
|
||||
./containers/nextcloud.nix
|
||||
|
||||
@@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -19,10 +19,6 @@
|
||||
"gitea-net"
|
||||
"proxy-net"
|
||||
];
|
||||
ports = [
|
||||
"3000:3000"
|
||||
"2222:22"
|
||||
];
|
||||
environment = {
|
||||
TZ = "Europe/Dublin";
|
||||
};
|
||||
|
||||
@@ -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"
|
||||
|
||||
26
home-manager/homeserver/containers/metrics.nix
Normal file
26
home-manager/homeserver/containers/metrics.nix
Normal 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"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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/"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -19,9 +19,6 @@
|
||||
"nextcloud-net"
|
||||
"proxy-net"
|
||||
];
|
||||
ports = [
|
||||
"9000:9000"
|
||||
];
|
||||
environment = {
|
||||
NEXTCLOUD_URL = "nextcloud.bulba.space";
|
||||
TRUSTED_DOMAINS = "nextcloud.bulba.space";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
outputs,
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
unstablePkgs,
|
||||
...
|
||||
}: {
|
||||
programs = {
|
||||
bash.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -14,5 +14,6 @@
|
||||
./worklaptop/programs.nix
|
||||
./worklaptop/defaultapps.nix
|
||||
./worklaptop/theming.nix
|
||||
inputs.nixers-repo.homeManagerModules.walker
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
|
||||
82
justfile
82
justfile
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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} \
|
||||
"
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user