Compare commits

...

45 commits

Author SHA1 Message Date
39297e9fbb
home/programs/games: fix STL dependencies 2024-11-06 22:41:11 +01:00
80035c8826
pkgs/bolt-launcher: bump to 0.10.0, add desktop entry 2024-11-06 22:40:55 +01:00
c37edb347c
treewide: minor cleanups 2024-11-06 16:49:58 +01:00
0e46a1e15d
flake: update input versions 2024-11-06 16:40:38 +01:00
84a77fdc97
treewide: pass permittedInsecurePackages directly to bolt-launcher in outputs 2024-11-06 16:39:42 +01:00
645c8cfbf0
system: remove nix import from core to system/default.nix 2024-11-06 16:33:11 +01:00
4c06bbd772
treewide: add mkSystem function for hosts and inject custom lib through _module.args 2024-11-06 16:27:40 +01:00
a9b8cc60e0
hosts/solaire: avoid repeating paths 2024-11-06 16:25:57 +01:00
1a61ae4ac4
treewide: add bolt-launcher until it's merged in nixpkgs 2024-11-03 21:41:21 +01:00
23fc7f2f45
home/programs/niri: use alt as prefix again 2024-11-03 21:29:42 +01:00
22d75b8f7b
treewide: add distrobox for mcuxpresso (only way to make it work without losing my mind) 2024-11-03 18:32:30 +01:00
fd85d604ab
home/programs/niri: change prefix to super (better with home row mods) 2024-11-01 23:45:39 +01:00
901b51531a
treewide: add kanata 2024-11-01 22:50:39 +01:00
c0f25e3097
home/terminal/shell/fish: add autopair 2024-11-01 09:49:09 +01:00
32a219dcf8 Update README.md 2024-11-01 08:39:52 +00:00
d033f9affb
system/services: remove extra udev rules (not needed with mcuxpresso's udev rules) 2024-10-31 09:21:23 +01:00
0e220a0587
treewide: add custom packages + mcuxpesso IDE 2024-10-30 23:40:58 +01:00
2e29a5cec7
programs/editors/neovim: add wakatime 2024-10-30 08:30:21 +01:00
5650e76a4b
treewide: add portfolio hosting 2024-10-27 11:56:13 +01:00
44f5ce1f29
flake: update flake version 2024-10-27 00:58:45 +02:00
88e2b06ae4
system/programs/fonts: change noto-fonts-cjk to sans variant 2024-10-27 00:57:59 +02:00
7bf11e55b6
programs/browsers/firefox: move policies to wrapFirefox (make it rebuild itself) 2024-10-24 18:22:44 +02:00
1745932cd8
treewide: add server-side secrets management with agenix 2024-10-24 16:02:14 +02:00
0c52f88386
flake: remove useless {} around niri 2024-10-24 14:49:32 +02:00
1d468d43f7
flake: add deploy-rs to dev shell 2024-10-24 14:19:40 +02:00
90ca463731
hosts/anastacia: add laptop ssh key 2024-10-24 14:12:11 +02:00
61537d4722
hosts/anastacia: add VPS host, searx and forgejo
commit b761f7218b
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 18:03:43 2024 +0200

    system/services/searx: setup default search settings

commit c58816d17a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 17:38:06 2024 +0200

    browsers/firefox: switch to my own searx

commit 006daa6ebc
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 17:35:17 2024 +0200

    system/services/forgejo: enable on ipv4

commit 6c75a3644f
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 17:35:05 2024 +0200

    system/services: add searx

commit d472424a4e
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 13:22:36 2024 +0200

    system/services: add forgejo

commit 43e754db72
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Oct 23 11:25:01 2024 +0200

    hosts/anastacia: init with generated configuration
2024-10-23 18:04:37 +02:00
96f9c0c180
browsers/firefox: enable search suggestions in policies 2024-10-23 18:04:17 +02:00
16b65ac39c
flake: re-order inputs, remove chaotic 2024-10-22 16:40:57 +02:00
3ae586c272
hosts: add README 2024-10-22 15:08:40 +02:00
1474053f43
hosts: move local modules to their own directory inside specific host 2024-10-22 15:01:05 +02:00
c233c1a420
hosts/solaire: set wallpaper in solaire itself, not hosts/default.nix 2024-10-22 14:04:01 +02:00
2d295004d0
modules: rename nixosModules.style to nixosModules.theme 2024-10-22 13:44:47 +02:00
df51d1b29d
terminal/programs: add nix-index with comma 2024-10-22 12:41:47 +02:00
e850329a8e
flake: move away from flake-parts (remove unnecessary abstractions) 2024-10-22 11:56:48 +02:00
0511bf4efd
repo: update README (explain configuration and minor fixes) 2024-10-22 02:00:07 +02:00
af3c8ebd8c
repo: update README 2024-10-22 01:40:58 +02:00
0ac23d83ea
home/programs/browsers: add extra search engines for firefox 2024-10-22 01:27:11 +02:00
373ab1c398
home/programs/niri: add browser bind 2024-10-22 01:26:20 +02:00
6c0003aa0b
home/programs/browsers: declare firefox addons and start configuring them 2024-10-21 19:08:21 +02:00
52532f2ee8
repo: add .envrc 2024-10-21 19:08:05 +02:00
b582ed7cd1
repo: update README 2024-10-21 16:42:24 +02:00
2a49f8cb73
home/terminal: switch back default editor to neovim 2024-10-21 16:40:48 +02:00
b255b3988b
repo: remove home/profiles
commit f60d03acf6
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Mon Oct 21 16:02:55 2024 +0200

    flake: update dependencies

commit 8c3cd9631a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Mon Oct 21 15:49:07 2024 +0200

    repo: move common home packages into home/default.nix

commit aa46aa0762
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Mon Oct 21 15:34:23 2024 +0200

    repo: refactor to remove home/profiles

    Removed the profiles directory in home, as I thought it was redundant:
    they had the same name as my hostnames, as all my machines are
    single-user only. Therefore, everything is now under its own
    hosts/{hostname}, and flake.nix just has to import hosts/default.nix
    like it did before.
2024-10-21 16:37:58 +02:00
ac8fa51639
repo: go back to latest kernel, fix games 2024-10-21 16:09:13 +02:00
70 changed files with 1430 additions and 557 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake .

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.direnv

View file

@ -1,4 +1,4 @@
# ❄️ nix
# ❄️ flocon
My NixOS configurations, using flakes.
@ -8,19 +8,29 @@ My NixOS configurations, using flakes.
- Text editor: [neovim](https://github.com/neovim/neovim)
- Shell: [fish](https://github.com/fish-shell/fish-shell)
- Colors: [Catppuccin](https://github.com/catppuccin/catppuccin)
- Font: [Intel One Mono](github.com/intel/intel-one-mono)
- Font: [Intel One Mono](https://github.com/intel/intel-one-mono)
Additionally using a lot of other software you can find in the configuration files.
# 🛠️ Structure
| Name | Description |
| ------------------- | ------------------------------------------------- |
| ------------------- | -------------------------- |
| [home](home/) | Home manager configuration |
| [hosts](hosts/) | Host-specific (entry-points of the configuration) |
| [hosts](hosts/) | Host-specific |
| [lib](lib/) | Helper functions |
| [modules](modules/) | NixOS modules |
| [system](system/) | Common NixOS configuration |
| [pkgs](pkgs/) | Custom packages |
| [system](system/) | NixOS configuration |
My configuration is structured based on the following principles:
1. Hosts should be the main entry points and outputs.
2. Abstractions should be avoided as much as possible.
The bulk of the configuration can be found either in [home](home/) or [system](system/), which declares most of my programs, with some extra Nix code in [lib](lib/) and custom [modules](modules/), mostly for convenience and to provide a way to globally set styles and themes for now.
My hosts can then pick and choose the programs and configurations that they need from the other directories. If the need arises for a more modular setup for a specific piece of software (ie. having different flavors of Firefox per host), I will write a custom module for it. This helps to avoid unnecessarily abstracting my configuration, as I don't find it necessary for the most part, and I would also like it to remain as simple as possible.
# 👥 Credits
@ -29,4 +39,4 @@ People / repositories I have copied / learned from:
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles) for the configuration structure
- [jacekpoz/nixos](https://git.jacekpoz.pl/poz/niksos) for learning how NixOS modules work
Some bits have also been borrowed from within the configuration, and credit has been given when its due.
Some bits have also been borrowed from within the configuration, and credit has been given where its due.

View file

@ -1,9 +1,32 @@
{
"nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1723293904,
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
"owner": "ryantm",
"repo": "agenix",
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"ags": {
"inputs": {
"nixpkgs": "nixpkgs",
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1728326430,
@ -39,28 +62,6 @@
"type": "github"
}
},
"chaotic": {
"inputs": {
"flake-schemas": "flake-schemas",
"home-manager": "home-manager",
"jovian": "jovian",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1729092978,
"narHash": "sha256-2SMJFFgKSvrQfkfzdcYjwFGvgeoCtDdbl/CGZNIU7hs=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "9af42c96e8d666f1df2b087aba1a6349f1c22f4e",
"type": "github"
},
"original": {
"owner": "chaotic-cx",
"ref": "nyxpkgs-unstable",
"repo": "nyx",
"type": "github"
}
},
"crane": {
"inputs": {
"nixpkgs": [
@ -82,6 +83,71 @@
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"deploy-rs": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_3",
"utils": "utils"
},
"locked": {
"lastModified": 1727447169,
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
"type": "github"
},
"original": {
"owner": "serokell",
"repo": "deploy-rs",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1730865784,
"narHash": "sha256-6kJYNjVCyf1tYgpqm7QOYcMkkD/RsaSfrsC2+ojmFAI=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "b8d22442e09a02eb8b830d41726ac371be21b7cd",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"flake-compat": {
"flake": false,
"locked": {
@ -114,6 +180,22 @@
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
@ -133,26 +215,6 @@
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1727826117,
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"lanzaboote",
@ -173,16 +235,16 @@
"type": "github"
}
},
"flake-parts_4": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1727826117,
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
@ -191,7 +253,7 @@
"type": "github"
}
},
"flake-parts_5": {
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
@ -209,32 +271,13 @@
"type": "github"
}
},
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
"revCount": 75,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": [
"systems"
]
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"lastModified": 1629284811,
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c",
"type": "github"
},
"original": {
@ -245,7 +288,7 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
"systems": "systems_4"
},
"locked": {
"lastModified": 1710146030,
@ -263,7 +306,7 @@
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
"systems": "systems_5"
},
"locked": {
"lastModified": 1710146030,
@ -281,14 +324,14 @@
},
"flake-utils_4": {
"inputs": {
"systems": "systems_6"
"systems": "systems_8"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
@ -356,16 +399,16 @@
"home-manager": {
"inputs": {
"nixpkgs": [
"chaotic",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1728903686,
"narHash": "sha256-ZHFrGNWDDriZ4m8CA/5kDa250SG1LiiLPApv1p/JF0o=",
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e1aec543f5caf643ca0d94b6a633101942fd065f",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
@ -381,11 +424,11 @@
]
},
"locked": {
"lastModified": 1729027341,
"narHash": "sha256-IqWD7bA9iJVifvJlB4vs2KUXVhN+d9lECWdNB4jJ0tE=",
"lastModified": 1730837930,
"narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "2a4fd1cfd8ed5648583dadef86966a8231024221",
"rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
"type": "github"
},
"original": {
@ -394,33 +437,11 @@
"type": "github"
}
},
"jovian": {
"inputs": {
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1728974938,
"narHash": "sha256-pTPEx6WlM+nJVGrRUGx7Di4ljZMwE9HfvlZ6f3NzNfo=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "23170582b0658e6afd913149a58863af3a57b376",
"type": "github"
},
"original": {
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_3",
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts_2",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
@ -525,7 +546,7 @@
},
"niri": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_3",
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_4",
@ -534,11 +555,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1729090125,
"narHash": "sha256-jZQe55BWLEv6OwItbL7mMsm8A3/1rrLk4vTm3k7+jqg=",
"lastModified": 1730875971,
"narHash": "sha256-VpTY0Urm0tebIndEP3qCsfAEjh8IB0d9j7XRZkNLRrw=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "44d93e05a400cad197fd10f9d50e9475fc519326",
"rev": "563b10c27839d0b08353d4cd3563e0f9beb3468d",
"type": "github"
},
"original": {
@ -567,11 +588,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1729086716,
"narHash": "sha256-xF1AtbQ+ipQyzyXV8mWGlndbeqACM3IIadyCHO0OtpU=",
"lastModified": 1730871742,
"narHash": "sha256-wK7UD90LxLr8oELIYPhUS6+IPU32JGESaHd/tny5/ig=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "84655d3b2627687e14431adb49450cd6af1de40f",
"rev": "8867a4f84c4bd07235abd37828b0d724321facbe",
"type": "github"
},
"original": {
@ -580,36 +601,33 @@
"type": "github"
}
},
"nix-github-actions": {
"nix-index-db": {
"inputs": {
"nixpkgs": [
"chaotic",
"jovian",
"nixpkgs"
]
},
"locked": {
"lastModified": 1690328911,
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
"lastModified": 1730604744,
"narHash": "sha256-/MK6QU4iOozJ4oHTfZipGtOgaT/uy/Jm4foCqHQeYR4=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "cc2ddbf2df8ef7cc933543b1b42b845ee4772318",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"ref": "matrix-name",
"repo": "nix-github-actions",
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1728729581,
"narHash": "sha256-oazkQ/z7r43YkDLLQdMg8oIB3CwWNb+2ZrYOxtLEWTQ=",
"lastModified": 1730886862,
"narHash": "sha256-wCZtRGM1NGxq6VG4+TMzfsa4cuG2VJVtowtYuWW5W3g=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "a8dd1b21995964b115b1e3ec639dd6ce24ab9806",
"rev": "90642a0deae927fa911d49d4f7c5616257105141",
"type": "github"
},
"original": {
@ -648,14 +666,14 @@
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1727825735,
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
"lastModified": 1730504152,
"narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
}
},
"nixpkgs-lib_3": {
@ -688,11 +706,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1728909085,
"narHash": "sha256-WLxED18lodtQiayIPDE5zwAfkPJSjHJ35UhZ8h3cJUg=",
"lastModified": 1730741070,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c0b1da36f7c34a7146501f684e9ebdf15d2bebf8",
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github"
},
"original": {
@ -720,27 +738,27 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1728888510,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
"lastModified": 1702272962,
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1728888510,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
"lastModified": 1730785428,
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
@ -752,11 +770,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1728888510,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
"lastModified": 1730785428,
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
@ -799,6 +817,22 @@
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1711404521,
"narHash": "sha256-cYhDZ3RYLiXAi4LQDGuQjjDDbtP00Wd/Vjal/jWyTuA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "07518c851b0f12351d7709274bbbd4ecc1f089c7",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "07518c851b0f12351d7709274bbbd4ecc1f089c7",
"type": "github"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1726871744,
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
@ -830,24 +864,9 @@
"type": "sourcehut"
}
},
"nur": {
"locked": {
"lastModified": 1729415156,
"narHash": "sha256-Ha5CqNs+mFMzf5O2HVfs9mxqIQnBwt+srspiQWAvN/A=",
"owner": "nix-community",
"repo": "NUR",
"rev": "fdda803471577189005bac0b4bc934689f52ef59",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nvf": {
"inputs": {
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_4",
"flake-utils": "flake-utils_3",
"mnw": "mnw",
"nil": "nil",
@ -955,14 +974,14 @@
"plugin-vim-vsnip": "plugin-vim-vsnip",
"plugin-which-key": "plugin-which-key",
"rnix-lsp": "rnix-lsp",
"systems": "systems_4"
"systems": "systems_6"
},
"locked": {
"lastModified": 1728378979,
"narHash": "sha256-CW/5Cs9m8HupL+6iRMpdHE88OmK9MXH2h3BcXCQw440=",
"lastModified": 1730289819,
"narHash": "sha256-GYEgdCLzNODbMNEeYbMa5EWgEwTEMxdSSPTz8uEwZdQ=",
"owner": "notashelf",
"repo": "nvf",
"rev": "0947ab38c0bc79780eec599161306157b8de74a3",
"rev": "8ff50562d7203a2b87bc6409e806f13b115d6b48",
"type": "github"
},
"original": {
@ -981,11 +1000,11 @@
]
},
"locked": {
"lastModified": 1729098898,
"narHash": "sha256-poRon0EwKWfOfttFk/8IiUPzCO/ahpNvtsSd9lizlHY=",
"lastModified": 1730635861,
"narHash": "sha256-Npp3pl9aeAiq+wZPDbw2ZxybNuZWyuN7AY6fik56DCo=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "508a077405fa700de0248e7f84bc4fefbd308dd9",
"rev": "293668587937daae1df085ee36d2b2d0792b7a0f",
"type": "github"
},
"original": {
@ -2611,6 +2630,24 @@
"type": "github"
}
},
"portfolio": {
"inputs": {
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1730891412,
"narHash": "sha256-EEXp1jQMoA7off1ioqB5aJM1a5ZfGS6KQVsYSZ/ub78=",
"owner": "nezia1",
"repo": "portfolio",
"rev": "082cc68c67deead967bf177d048995c6a27ef84e",
"type": "github"
},
"original": {
"owner": "nezia1",
"repo": "portfolio",
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
@ -2642,7 +2679,7 @@
"inputs": {
"naersk": "naersk",
"nixpkgs": "nixpkgs_7",
"utils": "utils"
"utils": "utils_2"
},
"locked": {
"lastModified": 1669555118,
@ -2660,20 +2697,21 @@
},
"root": {
"inputs": {
"agenix": "agenix",
"ags": "ags",
"basix": "basix",
"chaotic": "chaotic",
"flake-parts": "flake-parts_2",
"flake-utils": "flake-utils",
"deploy-rs": "deploy-rs",
"firefox-addons": "firefox-addons",
"home-manager": "home-manager_2",
"lanzaboote": "lanzaboote",
"niri": "niri",
"nix-index-db": "nix-index-db",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_5",
"nur": "nur",
"nvf": "nvf",
"plasma-manager": "plasma-manager",
"systems": "systems_5",
"portfolio": "portfolio",
"systems": "systems_7",
"treefmt-nix": "treefmt-nix",
"wezterm": "wezterm"
}
@ -2738,11 +2776,11 @@
]
},
"locked": {
"lastModified": 1726280639,
"narHash": "sha256-YfLRPlFZWrT2oRLNAoqf7G3+NnUTDdlIJk6tmBU7kXM=",
"lastModified": 1729477859,
"narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "e9f8641c92f26fd1e076e705edb12147c384171d",
"rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1",
"type": "github"
},
"original": {
@ -2752,21 +2790,6 @@
}
},
"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": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -2781,6 +2804,21 @@
"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"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
@ -2813,16 +2851,16 @@
},
"systems_5": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"repo": "default",
"type": "github"
}
},
@ -2841,16 +2879,46 @@
"type": "github"
}
},
"systems_7": {
"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_8": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_8"
"nixpkgs": "nixpkgs_9"
},
"locked": {
"lastModified": 1729077719,
"narHash": "sha256-zayHqZO9gA1U85c4CPvVSnLV8/cBgc2yVrSKWaKeBUs=",
"lastModified": 1730321837,
"narHash": "sha256-vK+a09qq19QNu2MlLcvN4qcRctJbqWkX7ahgPZ/+maI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "5307ba60125bb024d7e52d71d582eafd511f3fee",
"rev": "746901bb8dba96d154b66492a29f5db0693dbfcc",
"type": "github"
},
"original": {
@ -2860,6 +2928,24 @@
}
},
"utils": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_2": {
"locked": {
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
@ -2888,11 +2974,11 @@
},
"locked": {
"dir": "nix",
"lastModified": 1729006311,
"narHash": "sha256-1xtKJHu6CFnOhp4snof+WSTwcdPgwIaD6mBODP/cv3w=",
"lastModified": 1730734444,
"narHash": "sha256-lNgCAphrq3/bYGjgDxEl2rVcer6GnmfWXDhxc+kdYOk=",
"owner": "wez",
"repo": "wezterm",
"rev": "9ddca7bde92090792dbcdc65c1e9897c362196d7",
"rev": "51c794ac500a2033b9dc570c71810518bfa667a9",
"type": "github"
},
"original": {
@ -2906,16 +2992,16 @@
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1718165778,
"narHash": "sha256-dwF9nI54a6Fo9XU5s4qmvMXSgCid3YQVGxch00qEMvI=",
"lastModified": 1730166465,
"narHash": "sha256-nq7bouXQXaaPPo/E+Jbq+wNHnatD4dY8OxSrRqzvy6s=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "b6d281967cb0b7bf1dfdb8d0f597b517dc4aa5c5",
"rev": "a713cf46cb7db84a0d1b57c3a397c610cad3cf98",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.4",
"ref": "v0.5",
"repo": "xwayland-satellite",
"type": "github"
}
@ -2923,11 +3009,11 @@
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1726378112,
"narHash": "sha256-OANPb73V/RQDqtpIcbzeJ93KuOHKFQv+1xXC44Ut7tY=",
"lastModified": 1730258684,
"narHash": "sha256-E+69sdxUhPSNI8+JlTL6KKbNv5qVD3L1y8hdVO37A44=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "b962a0f33b503aa39c9cf6919f488b664e5b79b4",
"rev": "b0ee6db9fa9901c675b3c7e952c2a8ce987a0f58",
"type": "github"
},
"original": {

103
flake.nix
View file

@ -1,82 +1,81 @@
{
description = "nezia's nixos configuration";
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
systems = ["x86_64-linux"];
imports = [
./hosts
./modules
];
perSystem = {pkgs, ...}: {
devShells.default = pkgs.mkShell {
outputs = {
self,
nixpkgs,
systems,
agenix,
deploy-rs,
treefmt-nix,
...
} @ inputs: let
eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system});
treefmtEval = eachSystem (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix);
in {
devShells = eachSystem (pkgs: {
default = pkgs.mkShell {
packages = [
pkgs.alejandra
pkgs.git
deploy-rs.packages.${pkgs.system}.default
agenix.packages.${pkgs.system}.default
];
};
formatter = pkgs.alejandra;
});
formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
nixosModules = import ./modules;
nixosConfigurations = let
lib' = import ./lib {inherit inputs lib';};
in
import ./hosts {inherit inputs lib';};
packages = eachSystem (pkgs: import ./pkgs {inherit inputs pkgs;});
deploy.nodes = import ./nodes {inherit self inputs;};
};
};
inputs = {
# global, so they can be `.follow`ed
systems.url = "github:nix-systems/default-linux";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
# nix related
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
systems.url = "github:nix-systems/default-linux";
nixos-hardware.url = "github:NixOS/nixos-hardware";
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
wezterm = {
url = "github:wez/wezterm/main?dir=nix";
nix-index-db = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nvf = {
url = "github:notashelf/nvf";
# other
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
ags.url = "github:Aylur/ags";
basix.url = "github:notashelf/basix";
deploy-rs.url = "github:serokell/deploy-rs";
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
niri.url = "github:sodiboo/niri-flake";
nvf.url = "github:notashelf/nvf";
portfolio.url = "github:nezia1/portfolio";
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
ags.url = "github:Aylur/ags";
niri = {
url = "github:sodiboo/niri-flake";
};
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1";
# Optional but recommended to limit the size of your system closure.
treefmt-nix.url = "github:numtide/treefmt-nix";
wezterm = {
url = "github:wez/wezterm/main?dir=nix";
inputs.nixpkgs.follows = "nixpkgs";
};
treefmt-nix.url = "github:numtide/treefmt-nix";
nur.url = "github:nix-community/NUR";
nixos-hardware.url = "github:NixOS/nixos-hardware";
};
}

View file

@ -1,6 +1,8 @@
{
imports = [
./services/udiskie.nix
./terminal
./programs
];
home = {
username = "nezia";

View file

@ -1,10 +0,0 @@
{
vamos = [
../.
./vamos
];
solaire = [
../.
./solaire
];
}

View file

@ -1,11 +0,0 @@
{self, ...}: {
imports = [
"${self}/home/services/udiskie.nix"
"${self}/home/programs"
"${self}/home/terminal/emulators/foot.nix"
"${self}/home/programs/editors/neovim.nix"
"${self}/home/programs/editors/helix.nix"
];
}

View file

@ -1,19 +0,0 @@
{self, ...}: {
imports = [
"${self}/home/services/udiskie.nix"
"${self}/home/programs"
"${self}/home/programs/niri"
"${self}/home/programs/ags"
"${self}/home/programs/fuzzel.nix"
"${self}/home/programs/swaybg.nix"
"${self}/home/programs/swaylock.nix"
"${self}/home/programs/swayidle.nix"
"${self}/home/terminal/emulators/foot.nix"
"${self}/home/programs/editors/neovim.nix"
"${self}/home/programs/editors/helix.nix"
];
}

View file

@ -1,6 +1,5 @@
{
inputs,
config,
pkgs,
...
}: let
@ -13,18 +12,133 @@
in {
programs.firefox = {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = {
DisableTelemetry = true;
DisablePocket = true;
DisableFeedbackCommands = true;
DisableFirefoxStudies = true;
OfferToSaveLogins = false;
OffertosaveloginsDefault = false;
PasswordManagerEnabled = false;
SearchSuggestEnabled = true;
# https://github.com/Sly-Harvey/NixOS/blob/f9da2691ea46565256ad757959cfc26ec6cee10d/modules/programs/browser/firefox/default.nix#L58-L163
"3rdparty".Extensions = {
"addon@darkreader.org" = {
permissions = ["internal:privateBrowsingAllowed"];
enabled = true;
automation = {
enabled = true;
behavior = "OnOff";
mode = "system";
};
detectDarkTheme = true;
enabledByDefault = true;
changeBrowserTheme = false;
enableForProtectedPages = true;
fetchNews = false;
previewNewDesign = true;
};
"uBlock0@raymondhill.net" = {
permissions = ["internal:privateBrowsingAllowed"];
advancedSettings = [
[
"userResourcesLocation"
"https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new-ublock-origin.js"
]
];
adminSettings = {
userSettings = {
uiTheme = "dark";
advancedUserEnabled = true;
userFiltersTrusted = true;
importedLists = [
"https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
];
selectedFilterLists = [
"FRA-0"
"adguard-cookies"
"adguard-mobile-app-banners"
"adguard-other-annoyances"
"adguard-popup-overlays"
"adguard-social"
"adguard-spyware-url"
"adguard-widgets"
"easylist"
"easylist-annoyances"
"easylist-chat"
"easylist-newsletters"
"easylist-notifications"
"easyprivacy"
"fanboy-cookiemonster"
"https://filters.adtidy.org/extension/ublock/filters/3.txt"
"https://github.com/DandelionSprout/adfilt/raw/master/LegitimateURLShortener.txt"
"plowe-0"
"ublock-annoyances"
"ublock-badware"
"ublock-cookies-adguard"
"ublock-cookies-easylist"
"ublock-filters"
"ublock-privacy"
"ublock-quick-fixes"
"ublock-unbreak"
"urlhaus-1"
"https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
];
};
};
};
};
};
};
profiles = {
nezia = {
settings = {
"browser.urlbar.suggest.searches" = true;
"browser.search.suggest.enabled" = true;
"ui.key.menuAccessKeyFocuses" = false;
};
extensions = with inputs.firefox-addons.packages.${pkgs.system}; [
darkreader
proton-pass
shinigami-eyes
stylus
ublock-origin
violentmonkey
];
# https://git.jacekpoz.pl/poz/niksos/src/commit/a48647a1c5bc6877a1100a65f4dc169b2fc11ed7/hosts/hape/firefox.nix
search = {
default = "SearxNG";
engines = {
"SearxNG" = {
urls = [
{
rels = ["results"];
template = "https://search.nezia.dev/search";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
{
rels = ["suggestions"];
template = "https://search.nezia.dev/autocompleter";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
"type" = "application/x-suggestions+json";
}
];
iconUpdateURL = "https://search.nezia.dev/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = ["@s"];
};
"Nix Packages" = {
urls = [
{
@ -47,50 +161,30 @@ in {
"NixOS Wiki" = {
urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}];
iconUpdateURL = "https://wiki.nixos.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000; # every day
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = ["@nw"];
};
"Home Manager Options" = {
"NixOS Options" = {
urls = [{template = "https://search.nixos.org/options?channel=unstable&type=packages&query={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@no"];
};
"Noogle" = {
urls = [{template = "https://noogle.dev/q?term={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@ng"];
};
"Home Manager" = {
urls = [{template = "https://home-manager-options.extranix.com/?release=master&query={searchTerms}";}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@hm"];
};
"Arch Wiki" = {
urls = [{template = "https://wiki.archlinux.org/index.php?search={searchTerms}";}];
icon = "https://archlinux.org/favicon.ico";
definedAliases = ["@aw"];
};
"SearxNG" = {
urls = [
{
rels = ["results"];
template = "https://searx.tiekoetter.com/search";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
{
rels = ["suggestions"];
template = "https://searx.tiekoetter.com/autocompleter";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
"type" = "application/x-suggestions+json";
}
];
definedAliases = ["@sx"];
};
"Google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
};
};
# https://github.com/oddlama/nix-config/blob/main/users/myuser/graphical/firefox.nix#L53-L57
extraConfig = builtins.concatStringsSep "\n" [
(builtins.readFile "${betterfox}/user.js")
(builtins.readFile "${betterfox}/Securefox.js")
(builtins.readFile "${betterfox}/Fastfox.js")
(builtins.readFile "${betterfox}/Peskyfox.js")

View file

@ -4,8 +4,11 @@
./media
./xdg.nix
./gtk.nix
./editors/neovim.nix
./editors/helix.nix
];
# idk where to put this
programs = {
fzf.enable = true;
hyfetch.enable = true;
@ -15,6 +18,7 @@
};
};
# miscellaneous programs that do not need to be configured
home.packages = with pkgs; [
geary
imhex
@ -31,5 +35,9 @@
nautilus
simple-scan
entr
# inputs.self.packages.${pkgs.system}.mcuxpresso.ide
# dfu-util
# segger-jlink
# inputs.self.packages.${pkgs.system}.mcuxpresso.config-tools
];
}

View file

@ -2,9 +2,7 @@
lib,
pkgs,
...
}: let
inherit (lib) getExe;
in {
}: {
programs.helix = {
enable = true;
settings = {

View file

@ -60,6 +60,10 @@
git.enable = true;
utility = {
vim-wakatime.enable = true;
};
lsp = {
enable = true;
lspSignature.enable = true;

View file

@ -1,6 +1,6 @@
{
inputs,
nixosConfig,
osConfig,
lib,
pkgs,
...
@ -15,7 +15,7 @@
font = "monospace:size=14";
};
colors = let
inherit (inputs.basix.schemeData.base16.${nixosConfig.style.scheme}) palette;
inherit (inputs.basix.schemeData.base16.${osConfig.theme.scheme}) palette;
in {
background = "${palette.base00}ff";
text = "${palette.base05}ff";

View file

@ -3,17 +3,19 @@
inputs,
...
}: {
home.packages = with pkgs; [
protonup-qt
bottles
lutris
path-of-building
r2modman
home.packages = [
pkgs.bottles
pkgs.lutris
pkgs.mangohud
pkgs.path-of-building
pkgs.protonplus
pkgs.r2modman
# steamtinkerlaunch dependencies
xdotool
xorg.xwininfo
yad
pkgs.xdotool
pkgs.xorg.xwininfo
pkgs.yad
inputs.self.packages.${pkgs.system}.bolt-launcher
];
programs.mangohud.enable = true;
}

View file

@ -6,10 +6,10 @@
lib,
...
}: let
isDark = inputs.basix.schemeData.base16.${osConfig.style.scheme}.variant == "dark";
isDark = inputs.basix.schemeData.base16.${osConfig.theme.scheme}.variant == "dark";
in {
home.pointerCursor = {
inherit (osConfig.style.cursorTheme) name package size;
inherit (osConfig.theme.cursorTheme) name package size;
gtk.enable = true;
x11.enable = true;
};
@ -35,11 +35,11 @@ in {
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
iconTheme = {
inherit (osConfig.style.gtk.iconTheme) name package;
inherit (osConfig.theme.gtk.iconTheme) name package;
};
theme = lib.mkIf (!osConfig.services.xserver.desktopManager.gnome.enable) {
inherit (osConfig.style.gtk.theme) name package;
inherit (osConfig.theme.gtk.theme) name package;
};
};
dconf.settings = {

View file

@ -6,11 +6,13 @@
}: let
appLauncher = "fuzzel";
terminal = "foot";
browser = "firefox";
prefix = "Alt";
in {
programs.niri.settings.binds = {
"${prefix}+D".action.spawn = appLauncher;
"${prefix}+Return".action.spawn = terminal;
"${prefix}+W".action.spawn = browser;
"${prefix}+Shift+E".action.quit.skip-confirmation = true;
"${prefix}+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay;
"${prefix}+Q".action = config.lib.niri.actions.close-window;

View file

@ -6,7 +6,7 @@
osConfig,
...
}: let
colors = inputs.basix.schemeData.base16.${osConfig.style.scheme}.palette;
colors = inputs.basix.schemeData.base16.${osConfig.theme.scheme}.palette;
in {
imports = [./binds.nix];

View file

@ -2,7 +2,7 @@
{
pkgs,
lib,
nixosConfig,
osConfig,
...
}: {
systemd.user.services.swaybg = {
@ -11,7 +11,7 @@
PartOf = ["graphical-session.target"];
};
Service = {
ExecStart = "${lib.getExe pkgs.swaybg} -i ${nixosConfig.style.wallpaper} -m fill";
ExecStart = "${lib.getExe pkgs.swaybg} -i ${osConfig.theme.wallpaper} -m fill";
Restart = "on-failure";
};
Install.WantedBy = ["graphical-session.target"];

View file

@ -1,10 +1,10 @@
{
inputs,
pkgs,
nixosConfig,
osConfig,
...
}: let
inherit (inputs.basix.schemeData.base16.${nixosConfig.style.scheme}) palette;
inherit (inputs.basix.schemeData.base16.${osConfig.theme.scheme}) palette;
in {
# requires `security.pam.services.swaylock = { };` at the system level or else
# unlock will not work.

View file

@ -1,3 +1,3 @@
_: {
{
services.udiskie.enable = true;
}

View file

@ -5,6 +5,6 @@
];
home.sessionVariables = {
EDITOR = "hx";
EDITOR = "nvim";
};
}

View file

@ -1,6 +1,6 @@
{
inputs,
nixosConfig,
osConfig,
config,
lib,
...
@ -14,7 +14,7 @@
shell = "${lib.getExe config.programs.fish.package}";
};
colors = let
schemeData = inputs.basix.schemeData.base16.${nixosConfig.style.scheme};
schemeData = inputs.basix.schemeData.base16.${osConfig.theme.scheme};
in {
background = schemeData.palette.base00;
foreground = schemeData.palette.base05;

View file

@ -1,5 +1,4 @@
{
lib,
config,
inputs,
pkgs,

View file

@ -1,4 +1,4 @@
_: {
{
programs.wezterm = {
enable = true;
# package = inputs.wezterm.packages.${pkgs.system}.default;

View file

@ -5,6 +5,7 @@
./tmux.nix
./direnv.nix
./zellij.nix
./nix-index.nix
];
home.packages = with pkgs; [

View file

@ -1,4 +1,4 @@
_: {
{
programs = {
direnv = {
enable = true;

View file

@ -0,0 +1,11 @@
{inputs, ...}: {
imports = [inputs.nix-index-db.hmModules.nix-index];
programs = {
nix-index = {
enable = true;
symlinkToCacheHome = true; # needed for comma
};
command-not-found.enable = false;
nix-index-database.comma.enable = true;
};
}

View file

@ -1,4 +1,4 @@
_: {
{
programs.zellij = {
enable = true;
settings = {

View file

@ -14,6 +14,10 @@
name = "fzf";
inherit (pkgs.fishPlugins.fzf) src;
}
{
name = "autopair";
inherit (pkgs.fishPlugins.autopair) src;
}
];
};

View file

@ -1,4 +1,4 @@
_: {
{
programs.starship = {
enable = true;
enableTransience = true;

View file

@ -1,4 +1,4 @@
_: {
{
programs.zoxide = {
enable = true;
enableBashIntegration = false;

25
hosts/README.md Normal file
View file

@ -0,0 +1,25 @@
# 💻 Hosts
This directory contains the entry points for different NixOS system configurations. Each host represents a complete system configuration, combining NixOS system settings and Home Manager configurations.
## Components
### default.nix
The `default.nix` file in each host directory serves as the main entry point for the system configuration. It:
- Sets up NixOS configurations
- Sets up Home Manager configurations
- References host-specific module declarations
### modules/
The `modules/` directory contains host-specific declarations for custom modules that are defined in the flake's `nixosModules` output. This so far only includes global theme / style related declarations.
## Adding a New Host
1. Create a new directory for the host
2. Add a `hardware-configuration.nix` generated with `nixos-generate-config`
3. Add a `default.nix` that imports the desired configurations
4. Create host-specific module declarations in the `modules/` subdirectory to customize the global modules as needed
5. Reference the new host in `hosts/default.nix`

View file

@ -0,0 +1,29 @@
{
self,
inputs,
...
}: let
mod = "${self}/system";
in {
imports = [
./hardware-configuration.nix
./networking.nix # generated at runtime by nixos-infect
inputs.agenix.nixosModules.default
"${mod}/services/forgejo.nix"
"${mod}/services/searx.nix"
"${mod}/services/portfolio.nix"
];
boot.tmp.cleanOnBoot = true;
zramSwap.enable = true;
networking.hostName = "anastacia";
networking.domain = "";
services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEzs7SQH0Vjt9JHoXXmWy9fPU1I3rrRWV5magZFrI5al"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHKEPlN/GU9nJZPleA77HH5NA+6vyhhM84fTSjEwnEgq"
];
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,12 @@
{modulesPath, ...}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot = {
loader.grub.device = "/dev/sda";
initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
initrd.kernelModules = ["nvme"];
};
fileSystems."/" = {
device = "/dev/sda1";
fsType = "ext4";
};
}

View file

@ -0,0 +1,52 @@
{lib, ...}: {
# This file was populated at runtime with the networking
# details gathered from the active system.
networking = {
nameservers = [
"8.8.8.8"
];
defaultGateway = "172.31.1.1";
defaultGateway6 = {
address = "fe80::1";
interface = "eth0";
};
dhcpcd.enable = false;
usePredictableInterfaceNames = lib.mkForce false;
interfaces = {
eth0 = {
ipv4.addresses = [
{
address = "78.47.146.254";
prefixLength = 32;
}
];
ipv6.addresses = [
{
address = "2a01:4f8:1c1c:8495::1";
prefixLength = 64;
}
{
address = "fe80::9400:3ff:fecb:6deb";
prefixLength = 64;
}
];
ipv4.routes = [
{
address = "172.31.1.1";
prefixLength = 32;
}
];
ipv6.routes = [
{
address = "fe80::1";
prefixLength = 128;
}
];
};
};
};
services.udev.extraRules = ''
ATTR{address}=="96:00:03:cb:6d:eb", NAME="eth0"
'';
}

View file

@ -1,80 +1,33 @@
{
self,
inputs,
lib',
...
}: {
flake.nixosConfigurations = let
inherit (inputs.nixpkgs.lib) nixosSystem;
homeImports = import "${self}/home/profiles";
mod = "${self}/system";
inherit (import mod) laptop desktop;
specialArgs = {
inherit inputs self;
};
}: let
inherit (lib') mkSystem;
in {
vamos = nixosSystem {
inherit specialArgs;
modules =
laptop
++ [
vamos = mkSystem {
system = "x86_64-linux";
modules = [
./vamos
"${mod}/core/lanzaboote.nix"
"${mod}/services/greetd.nix"
"${mod}/programs/niri"
"${mod}/services/gnome.nix"
"${mod}/services/mail.nix"
self.nixosModules.style
({pkgs, ...}: {
style = let
wallpaper = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true";
hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4=";
};
in {
gtk.enable = true;
inherit wallpaper;
};
})
{
home-manager = {
users.nezia.imports = homeImports.vamos;
extraSpecialArgs = specialArgs;
};
}
inputs.self.nixosModules.theme
inputs.nixos-hardware.nixosModules.framework-13-7040-amd
];
};
solaire = nixosSystem {
inherit specialArgs;
modules =
desktop
++ [
solaire = mkSystem {
system = "x86_64-linux";
modules = [
./solaire
"${mod}/programs/gnome.nix"
"${mod}/hardware/nvidia.nix"
"${mod}/programs/games.nix"
self.nixosModules.style
{
style = {
gtk.enable = false;
wallpaper = ../wallpapers/lucy-edgerunners-wallpaper.jpg;
};
}
{
home-manager = {
users.nezia.imports = homeImports.solaire;
extraSpecialArgs = specialArgs;
};
}
inputs.self.nixosModules.theme
];
};
anastacia = mkSystem {
system = "x86_64-linux";
modules = [
./anastacia
];
};
}

View file

@ -1,7 +1,29 @@
{pkgs, ...}: {
{specialArgs, ...}: let
system = ../../system;
home = ../../home;
in {
imports = [
./hardware-configuration.nix
./modules
system
"${system}/hardware/uni-sync.nix"
"${system}/programs/gnome.nix"
"${system}/programs/games.nix"
"${system}/hardware/nvidia.nix"
];
home-manager = {
users.nezia.imports = [
home
"${home}/programs/games"
"${home}/terminal/emulators/foot.nix"
];
extraSpecialArgs = specialArgs;
};
networking.hostName = "solaire";
environment.variables.FLAKE = "/home/nezia/.dotfiles";
}

View file

@ -0,0 +1,3 @@
{
imports = [./theme.nix];
}

View file

@ -0,0 +1,3 @@
{
theme.wallpaper = ../../wallpapers/lucy-edgerunners-wallpaper.jpg;
}

View file

@ -1,7 +1,47 @@
{lib, ...}: {
{
self,
specialArgs,
...
}: let
mod = "${self}/system";
in {
imports = [
./hardware-configuration.nix
./modules
"${mod}"
"${mod}/core/lanzaboote.nix"
"${mod}/hardware/fprintd.nix"
"${mod}/services/power.nix"
"${mod}/services/brightness.nix"
"${mod}/services/logind.nix"
"${mod}/services/greetd.nix"
"${mod}/services/kanata.nix"
"${mod}/programs/niri"
"${mod}/services/gnome.nix"
"${mod}/services/mail.nix"
];
home-manager = {
users.nezia.imports = [
"${self}/home"
"${self}/home/services/udiskie.nix"
"${self}/home/programs/niri"
"${self}/home/programs/ags"
"${self}/home/programs/fuzzel.nix"
"${self}/home/programs/swaybg.nix"
"${self}/home/programs/swaylock.nix"
"${self}/home/programs/swayidle.nix"
"${self}/home/terminal/emulators/foot.nix"
];
extraSpecialArgs = specialArgs;
};
networking.hostName = "vamos";
environment.variables.FLAKE = "/home/nezia/.dotfiles";
}

View file

@ -0,0 +1,3 @@
{
imports = [./theme.nix];
}

View file

@ -0,0 +1,8 @@
{pkgs, ...}: {
theme = {
wallpaper = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true";
hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4=";
};
};
}

View file

@ -1,8 +1,9 @@
{
pkgs,
lib,
inputs,
lib',
...
}: let
inherit (inputs.nixpkgs) lib;
# convert rrggbb hex to rgba(r, g, b, a)
rgba = c: let
r = toString (hexToDec (builtins.substring 0 2 c));
@ -86,8 +87,25 @@
];
# Create a KDE konsole color scheme from base16 colors
mkKonsoleColorScheme = scheme:
mkKonsoleColorScheme = pkgs: scheme:
pkgs.writeText "${scheme.name}.colorscheme" (schemeToKonsole scheme);
in {
inherit mkKonsoleColorScheme rgba;
# https://github.com/diniamo/niqs/blob/caf396bb470619fa06936a379eec6e283c3c3d95/lib/default.nix#L13-L35C7
mkSystem = {system, ...} @ args:
lib.nixosSystem {
system = null;
specialArgs = {inherit inputs;};
modules =
[
{
_module.args = {
inherit system lib';
};
nixpkgs = {inherit system;};
}
]
++ args.modules or [];
};
in {
inherit mkKonsoleColorScheme rgba mkSystem;
}

View file

@ -1,5 +1,3 @@
{
flake.nixosModules = {
style = import ./style;
};
theme = import ./theme;
}

View file

@ -7,7 +7,7 @@
inherit (lib.types) string path package;
in {
imports = [./gtk.nix];
options.style = {
options.theme = {
scheme = mkOption {
description = ''
Name of the tinted-scheming color scheme to use.
@ -22,6 +22,10 @@ in {
'';
type = path;
example = lib.literalExpression "./wallpaper.png";
default = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true";
hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4=";
};
};
cursorTheme = {

View file

@ -8,9 +8,9 @@
inherit (lib) mkOption mkEnableOption;
inherit (lib.types) package str;
cfg = config.style.gtk;
cfg = config.theme.gtk;
in {
options.style.gtk = {
options.theme.gtk = {
enable = mkEnableOption "enable GTK theming options";
theme = {
name = mkOption {
@ -57,7 +57,7 @@ in {
${toString themePath} set by the GTK module does not exist!
To suppress this message, make sure that
`config.modules.style.gtk.theme.package` contains
`config.modules.theme.gtk.theme.package` contains
the path `${cfg.theme.name}`
'';
})

14
nodes/default.nix Normal file
View file

@ -0,0 +1,14 @@
{
self,
inputs,
...
}: {
anastacia = {
hostname = "2a01:4f8:1c1c:8495::1";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.anastacia;
};
};
}

208
pkgs/bolt-launcher.nix Normal file
View file

@ -0,0 +1,208 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
cmake,
ninja,
libarchive,
libz,
jdk17,
libcef,
luajit,
xorg,
mesa,
glib,
nss,
nspr,
atk,
at-spi2-atk,
libdrm,
expat,
libxkbcommon,
gtk3,
pango,
cairo,
alsa-lib,
dbus,
at-spi2-core,
cups,
systemd,
buildFHSEnv,
copyDesktopItems,
makeDesktopItem,
}: let
cef = libcef.overrideAttrs (_: {
installPhase = let
gl_rpath = lib.makeLibraryPath [
stdenv.cc.cc.lib
];
rpath = lib.makeLibraryPath [
glib
nss
nspr
atk
at-spi2-atk
libdrm
expat
xorg.libxcb
libxkbcommon
xorg.libX11
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
mesa
gtk3
pango
cairo
alsa-lib
dbus
at-spi2-core
cups
xorg.libxshmfence
systemd
];
in ''
mkdir -p $out/lib/ $out/share/cef/
cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/
cp -r ../Resources/* $out/lib/
cp -r ../Release/* $out/lib/
patchelf --set-rpath "${rpath}" $out/lib/libcef.so
patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so
patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so
cp ../Release/*.bin $out/share/cef/
cp -r ../Resources/* $out/share/cef/
cp -r ../include $out
cp -r ../libcef_dll $out
cp -r ../cmake $out
'';
});
bolt = stdenv.mkDerivation (finalAttrs: {
pname = "bolt-launcher";
version = "0.10.0";
src = fetchFromGitHub {
owner = "AdamCake";
repo = "bolt";
rev = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-2IoFzD+yhQv1Y7D+abeNUT23BC4P1xZTALF8Y+Zsg44=";
};
nativeBuildInputs = [
cmake
ninja
luajit
makeWrapper
copyDesktopItems
];
buildInputs = [
mesa
xorg.libX11
xorg.libxcb
libarchive
libz
cef
jdk17
];
desktopItems = [
(makeDesktopItem {
inherit (bolt) name;
desktopName = "Bolt Launcher";
keywords = [
"Game"
];
exec = "${bolt.name}";
terminal = false;
categories = ["Game"];
icon = "bolt-launcher";
})
];
cmakeFlags = [
"-D CMAKE_BUILD_TYPE=Release"
"-D BOLT_LUAJIT_INCLUDE_DIR=${luajit}/include"
"-G Ninja"
];
preConfigure = ''
ls -al
mkdir -p cef/dist/Release cef/dist/Resources cef/dist/include
ln -s ${cef}/lib/* cef/dist/Release
ln -s ${cef}/share/cef/*.pak cef/dist/Resources
ln -s ${cef}/share/cef/icudtl.dat cef/dist/Resources
ln -s ${cef}/share/cef/locales cef/dist/Resources
ln -s ${cef}/include/* cef/dist/include
ln -s ${cef}/libcef_dll cef/dist/libcef_dll
ln -s ${cef}/cmake cef/dist/cmake
ln -s ${cef}/CMakeLists.txt cef/dist
'';
postInstall = ''
for size in 16 32 64 128 256; do
size_dir="''${size}x''${size}"
ls -al $src/icon
mkdir -p $out/share/icons/hicolor/''${size_dir}/apps
cp $src/icon/$size.png $out/share/icons/hicolor/''${size_dir}/apps/bolt-launcher.png
done
mkdir -p $out/share/icons/hicolor/scalable/apps/
cp $src/icon/bolt.svg $out/share/icons/hicolor/scalable/apps/bolt-launcher.svg
'';
postFixup = ''
makeWrapper "$out/opt/bolt-launcher/bolt" "$out/bin/${finalAttrs.pname}-${finalAttrs.version}" \
--set JAVA_HOME "${jdk17}"
ls -al $out/bin
mkdir -p $out/lib
cp $out/usr/local/lib/libbolt-plugin.so $out/lib
'';
});
in
buildFHSEnv {
inherit (bolt) name version;
targetPkgs = pkgs:
[bolt]
++ (with pkgs; [
xorg.libSM
xorg.libXxf86vm
xorg.libX11
glib
pango
cairo
gdk-pixbuf
gtk2-x11
libz
libcap
libsecret
openssl_1_1
SDL2
libGL
]);
extraInstallCommands = ''
mkdir -p $out/share/applications $out/share/icons
ln -s ${bolt}/share/applications/*.desktop \
$out/share/applications/
ln -s ${bolt}/share/icons/hicolor \
$out/share/icons/hicolor
'';
runScript = "${bolt.name}";
meta = {
homepage = "https://github.com/Adamcake/Bolt";
description = "An alternative launcher for RuneScape";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [nezia];
platforms = lib.platforms.linux;
mainProgram = "${bolt.name}";
};
}

15
pkgs/default.nix Normal file
View file

@ -0,0 +1,15 @@
{
inputs,
pkgs,
...
}: {
mcuxpresso = import ./mcuxpresso pkgs;
# this is unfortunately needed since bolt-launcher makes use of openssl-1.1.1w, and since it is not part of hosts, we have to add it this way
bolt-launcher =
(import inputs.nixpkgs {
inherit (pkgs) system;
config.permittedInsecurePackages = ["openssl-1.1.1w"];
})
.callPackage
./bolt-launcher.nix {};
}

View file

@ -0,0 +1,49 @@
{
eclipses,
stdenv,
requireFile,
...
}: let
name = "mcuxpressotools";
version = "v16-1";
description = "MCUXpresso Config Tools";
filename = "mcuxpresso-config-tools-${version}_amd64.deb";
src = stdenv.mkDerivation {
inherit version description;
name = "${name}-src";
src = requireFile {
url = "https://www.nxp.com/design/software/development-software/mcuxpresso-config-tools-pins-clocks-and-peripherals:MCUXpresso-Config-Tools";
name = "${filename}.bin";
sha256 = "sha256-BbEwxm1urV2IrgUiTiMBEAPvonQGwdL4fpqFftGgRxI=";
};
buildCommand = ''
# Unpack tarball.
mkdir -p deb
sh $src --target deb || true
ar -xv deb/${filename}
tar xfvz data.tar.gz -C .
mkdir -p ./final/eclipse
mv ./opt/nxp/MCUX_CFG_v13/bin/.* final/eclipse
mv ./usr final/
mv final/eclipse/tools final/eclipse/eclipse
mv final/eclipse/tools.ini final/eclipse/eclipse.ini
# Create custom .eclipseproduct file
echo "name=${name}
id=com.nxp.${name}
version=${version}
" > final/eclipse/.eclipseproduct
# Additional files
mkdir -p final/usr/share/mime
mv ./opt/nxp/MCUX_CFG_v13/mcu_data final/mcu_data
cd ./final
tar -czf $out ./
'';
};
in
eclipses.buildEclipse {inherit description name src;}

View file

@ -0,0 +1,3 @@
pkgs: {
ide = pkgs.callPackage ./ide.nix {};
}

100
pkgs/mcuxpresso/ide.nix Normal file
View file

@ -0,0 +1,100 @@
# https://github.com/KoviRobi/nixos-config/blob/3ab3f8372d1fd021a235de4d314ef7147846513e/overlays/mcuxpresso.nix
{pkgs, ...}: let
name = "mcuxpressoide";
version = "24.9.25";
description = "MCUXpresso IDE";
filename = "${name}-${version}.x86_64.deb";
mcuxpressoideSrc = pkgs.stdenv.mkDerivation {
inherit version description;
name = "${name}-src";
src = pkgs.requireFile {
url = "https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE";
name = "${filename}.bin";
hash = "sha256-e3g7rzZQ1WFLcUakkjaufpHMtw3qkw5lwxJuCKs6L+k=";
};
buildCommand = ''
# Unpack tarball.
mkdir -p deb
sh $src --target deb || true
ar -xv deb/${filename}
tar xfvz data.tar.gz -C .
mkdir -p ./final/eclipse
mv ./usr/local/${name}-${version}/ide/* ./usr/local/${name}-${version}/ide/.* final/eclipse
mv final/eclipse/mcuxpressoide final/eclipse/eclipse
mv final/eclipse/mcuxpressoide.ini final/eclipse/eclipse.ini
# Create custom .eclipseproduct file
rm final/eclipse/.eclipseproduct
echo "name=${name}
id=com.nxp.${name}
version=${version}
" > final/eclipse/.eclipseproduct
# Install udev rules
mkdir -p final/lib/udev/rules.d
mv ./lib/udev/rules.d/56-pemicro.rules ./lib/udev/rules.d/85-mcuxpresso.rules final/lib/udev/rules.d/
# Additional files
mv ./usr/local/${name}-${version}/mcu_data final/mcu_data
cd ./final
tar -czf $out ./
'';
};
mcuxpressoide = pkgs.eclipses.buildEclipse {
name = "mcuxpresso-eclipse";
inherit description;
src = mcuxpressoideSrc;
};
# needed because of the integrated toolchain
mcuxpressoFhsEnv = pkgs.buildFHSEnv {
name = "mcuxpresso-env";
targetPkgs = pkgs: [
pkgs.stdenv.cc.cc.lib
pkgs.gcc
pkgs.libgcc
pkgs.libstdcxx5
pkgs.xorg.libXext
pkgs.xorg.libX11
pkgs.xorg.libXrender
pkgs.xorg.libXtst
pkgs.xorg.libXi
pkgs.freetype
pkgs.alsa-lib
pkgs.ncurses
pkgs.ncurses5
pkgs.libusb1
pkgs.readline
pkgs.libffi
pkgs.zlib
pkgs.tcl
pkgs.libxcrypt
pkgs.libxcrypt-legacy
pkgs.libusb-compat-0_1
];
runScript = "${mcuxpressoide}/bin/eclipse";
};
in
# wrapper with desktop entry and udev rules
pkgs.stdenv.mkDerivation {
inherit name version description;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
nativeBuildInputs = [pkgs.copyDesktopItems];
desktopItems = [
(pkgs.makeDesktopItem {
inherit name;
type = "Application";
desktopName = "MCUXpresso IDE";
exec = "mcuxpresso";
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/lib/udev/rules.d $out/eclipse $out/mcu_data
cp ${mcuxpressoide}/lib/udev/rules.d/85-mcuxpresso.rules ${mcuxpressoide}/lib/udev/rules.d/56-pemicro.rules $out/lib/udev/rules.d/
ln -s ${mcuxpressoFhsEnv}/bin/mcuxpresso-env $out/bin/mcuxpresso
runHook postInstall
'';
}

BIN
secrets/searx-env-file.age Normal file

Binary file not shown.

5
secrets/secrets.nix Normal file
View file

@ -0,0 +1,5 @@
let
anastacia = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEplguGeXCbdz++Ry5pwJylmtAMnwtf1+9JoJnCGfw3A root@anastacia";
in {
"searx-env-file.age".publicKeys = [anastacia];
}

View file

@ -4,7 +4,6 @@
./users.nix
./security.nix
./networking.nix
../nix
];
i18n = {
defaultLocale = "en_US.UTF-8";

View file

@ -7,6 +7,7 @@
"audio"
"video"
"wheel"
"plugdev"
];
};
}

View file

@ -1,6 +1,8 @@
let
common = [
{
imports = [
./core
./nix
./hardware/printing.nix
./hardware/fwupd.nix
@ -10,21 +12,4 @@ let
./services
];
desktop =
common
++ [
./hardware/uni-sync.nix
];
laptop =
common
++ [
./hardware/fprintd.nix
./services/power.nix
./services/brightness.nix
./services/keyd.nix
./services/logind.nix
];
in {
inherit desktop laptop;
}

View file

@ -1,33 +1,11 @@
{config, ...}: {
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.beta;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
}

View file

@ -1,15 +1,13 @@
{pkgs, ...}: {
{
nixpkgs = {
config.allowUnfree = true;
overlays = [
(_: prev: {
lib =
prev.lib
// import ../../lib {
inherit (prev) lib pkgs;
};
})
config = {
allowUnfree = true;
permittedInsecurePackages = [
"cinny-4.2.2"
"cinny-unwrapped-4.2.2"
"segger-jlink-qt4-796s"
];
config.permittedInsecurePackages = ["cinny-4.2.1" "cinny-unwrapped-4.2.1"];
segger-jlink.acceptLicense = true;
};
};
}

View file

@ -2,7 +2,7 @@
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-cjk-sans
noto-fonts-emoji
noto-fonts-extra
(nerdfonts.override {fonts = ["IntelOneMono"];})

View file

@ -1,21 +1,9 @@
{pkgs, ...}: {
{
programs = {
steam = {
enable = true;
gamescopeSession.enable = true;
extraCompatPackages = [
pkgs.proton-ge-bin
];
};
gamemode = {
enable = true;
settings = {
general = {
softrealtime = "auto";
renice = 15;
};
};
};
steam.enable = true;
gamemode.enable = true;
gamescope.enable = true;
coolercontrol = {
enable = true;
nvidiaSupport = true;

View file

@ -1,3 +1,9 @@
{
imports = [./docker.nix ./gnupg.nix ./pipewire.nix ./kmscon.nix];
{pkgs, ...}: {
imports = [
./docker.nix
./gnupg.nix
./pipewire.nix
./kmscon.nix
];
services.udev.packages = [pkgs.segger-jlink];
}

View file

@ -1,9 +1,8 @@
_: {
virtualisation.docker = {
{pkgs, ...}: {
virtualisation.podman = {
enable = true;
rootless = {
enable = true;
setSocketVariable = true;
};
dockerCompat = true;
};
environment.systemPackages = [pkgs.distrobox];
}

View file

@ -0,0 +1,54 @@
{
config,
pkgs,
...
}: let
srv = config.services.forgejo.settings.server;
in {
services = {
forgejo = {
enable = true;
package = pkgs.forgejo;
lfs.enable = true;
database.type = "postgres";
dump = {
enable = true;
type = "tar.xz";
};
settings = {
server = {
DOMAIN = "git.nezia.dev";
HTTP_PORT = 1849;
ROOT_URL = "https://${srv.DOMAIN}/";
HTTP_ADDR = "localhost";
};
service = {
DISABLE_REGISTRATION = true;
};
federation = {
ENABLED = true;
};
};
};
caddy = {
enable = true;
virtualHosts."git.nezia.dev".extraConfig = ''
reverse_proxy * localhost:${toString srv.HTTP_PORT}
'';
};
};
networking.firewall = {
enable = true;
allowedTCPPorts = [80 443];
# If you're using nftables (default in newer NixOS)
extraForwardRules = ''
ip6 saddr { ::/0 } accept
'';
};
# Ensure IPv6 is enabled
networking.enableIPv6 = true;
}

View file

@ -0,0 +1,33 @@
{
services.kanata = {
enable = true;
keyboards.default = {
extraDefCfg = "process-unmapped-keys yes";
config = ''
(defsrc
caps a s d f j k l ;
)
(defvar
tap-time 150
hold-time 200
)
(defalias
escctrl (tap-hold 100 100 esc lctl)
a (tap-hold $tap-time $hold-time a lmet)
s (tap-hold $tap-time $hold-time s lalt)
d (tap-hold $tap-time $hold-time d lsft)
f (tap-hold $tap-time $hold-time f lctl)
j (tap-hold $tap-time $hold-time j rctl)
k (tap-hold $tap-time $hold-time k rsft)
l (tap-hold $tap-time $hold-time l ralt)
; (tap-hold $tap-time $hold-time ; rmet)
)
(deflayer base
@escctrl @a @s @d @f @j @k @l @;
)
'';
};
};
}

View file

@ -1,4 +1,4 @@
_: {
{
hardware.pulseaudio.enable = false;
# rtkit is optional but recommended
security.rtkit.enable = true;

View file

@ -0,0 +1,21 @@
{
inputs,
pkgs,
...
}: {
services.caddy.enable = true;
services.caddy.virtualHosts = {
"www.nezia.dev" = {
extraConfig = ''
redir https://nezia.dev{uri}
'';
};
"nezia.dev" = {
extraConfig = ''
root * ${inputs.portfolio.packages.${pkgs.system}.default}
file_server
encode gzip
'';
};
};
}

61
system/services/searx.nix Normal file
View file

@ -0,0 +1,61 @@
{
config,
pkgs,
...
}: {
age.secrets.searx-env-file.file = ../../secrets/searx-env-file.age;
services = {
searx = {
enable = true;
package = pkgs.searxng;
environmentFile = config.age.secrets.searx-env-file.path;
settings = {
search = {
safe_search = 1; # 0 = None, 1 = Moderate, 2 = Strict
autocomplete = "google"; # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
default_lang = "en";
};
server = {
secret_key = "@SEARX_SECRET_KEY@";
port = 8888; # Internal port
bind_address = "localhost"; # Only listen locally
base_url = "https://search.nezia.dev/";
image_proxy = true;
default_http_headers = {
X-Content-Type-Options = "nosniff";
X-XSS-Protection = "1; mode=block";
X-Download-Options = "noopen";
X-Robots-Tag = "noindex, nofollow";
Referrer-Policy = "no-referrer";
};
};
engines = [
{
name = "qwant";
disabled = true;
}
];
};
};
caddy = {
enable = true;
virtualHosts."search.nezia.dev" = {
extraConfig = ''
encode gzip
reverse_proxy localhost:8888 {
header_up Host {host}
header_up X-Real-IP {remote_addr}
header_up X-Forwarded-For {remote_addr}
header_up X-Forwarded-Proto {scheme}
}
'';
};
};
};
# Open required ports
networking.firewall = {
allowedTCPPorts = [80 443]; # For Caddy
};
}

View file

@ -1,6 +1,10 @@
# TODO: maybe use flake-parts
{...}: {
# Used to find the project root
{pkgs, ...}: {
projectRootFile = "flake.nix";
programs.alejandra.enable = true;
programs = {
alejandra.enable = true;
prettier = {
enable = true;
package = pkgs.prettierd;
};
};
}