My NixOS config Part 3: Flake-Parts Crusaders nix.ladas552.me
hjem nix nixos impermanence flake-parts nvfetcher niri noctalia

beggining of an end

ladas552.me 09bfd1fc fb0d9e53

verified
+47 -6
+47
WHAT-BRANCH.norg
··· 1 + @document.meta 2 + title: WHAT-BRANCH 3 + description: What this PR will be about 4 + authors: ladas552 5 + categories: [ 6 + nix 7 + ] 8 + created: 2026-03-08T12:33:21 9 + updated: 2026-03-08T18:25:52 10 + version: 1.1.1 11 + @end 12 + 13 + * What I want 14 + - Remove flake-parts dependency 15 + ** Additonal ideas to implement 16 + - Go flake inputless. 17 + Get everything from nvfetcher. Yes, even nixpkgs. I don't have a reason to, other than that I hate how flake inputs work. not having a good way to import modules. Also need to find a way to make a nvf config. 18 + - Switch to Adios 19 + For the fun of it. I think I can use adios with Flakes. Need to check. There is no practical reason, other than it will be fun and Uniq. 20 + * How 21 + ** My current setup 22 + ~ Utilises generic module class to set options for every flake parts module, including the wrappers. 23 + ~ nixosConfiguration function to combine all the modules into a host 24 + ~ If I don't import a module into host, it doesn't exist. As in doesn't apply changes 25 + 26 + ** How Can I reapply this setup on non Flake-Parts config 27 + ~ Generic modules, are just normal modules because normal modules don't type check. So theoretically I can import the normal option modules under any scope. 28 + ~ I can just use the default flake outputs with a let in 29 + ~ I think options will work just fine. But I need to take out all the boilerplate from it. make it as simple as `mkIfModule` at the top of the config or something. 30 + 31 + ** Materials 32 + *** Classes without flake-parts 33 + from @boomshroom on nixos unofficial discord, this way whichever module loads the config will determine under what class it will load. 34 + @code nix 35 + { _class, ...}: 36 + { 37 + nixos = { /* nixos config */ }; 38 + homeManager = { /* home-manager config */ }; 39 + nixOnDroid = { /* droid config */ }; 40 + darwin = { /* macos config */ }; 41 + nixbsd = { /* bsd config */ }; 42 + }.${_class} 43 + @end 44 + 45 + *** Configs to steal 46 + - {https://github.com/llakala/nixos}[llakala] - adios, wrappers, uses base values and specialArgs 47 + - {https://github.com/hercules-ci/flake-parts/blob/main/extras/modules.nix}[Flake-parts] - This file in particular defines modules and classes in `flake.modules`. So theoretically I can just adopt this into my config without fucking with flake-parts
-6
flake.nix
··· 30 30 inputs.treefmt-nix.follows = ""; 31 31 }; 32 32 33 - flake-parts = { 34 - url = "github:hercules-ci/flake-parts"; 35 - # No useless inputs 36 - inputs.nixpkgs-lib.follows = "nixpkgs"; 37 - }; 38 - 39 33 # Neovim 40 34 nvf = { 41 35 url = "github:notashelf/nvf";