flocon/README.md
Anthony Rodriguez 390691be57
treewide: refactor structure
I have decided to refactor the entire structure of my repository, as the
old one was getting quite cluttered and I needed something that made
more sense. I've decided to go with the following, which will be
explained in the README when I find the time to do it. The gist of it
is:
- Put everything shared into its shared directory
- Rewrite the theme module (now style) to be more split, as it is
  theming a lot of different apps
- Merge nixos and home-manager configurations back into a singular
  config directory

Thanks a lot to llakala for the massive help she was with my Nix code.

commit 66ff9820f8
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:23:28 2024 +0100

    shared/nixosModules/style: use sharedModules

commit 1271294049
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:23:13 2024 +0100

    treewide: remove unused nvidia file

commit ab18a42418
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 19:02:34 2024 +0100

    flake: remove uneeded directory for nodes

commit f8afc9f461
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 18:43:19 2024 +0100

    shared/nixosModules/style: split everything into its file

commit 851a4d0d32
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:15:40 2024 +0100

    repo: update README

commit e01237d59a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:00:56 2024 +0100

    hosts/solaire: delete unused modules directory

commit 1c3665ec1c
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 11:00:24 2024 +0100

    pkgs: move to shared/pkgs

commit 587e8d321b
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:57:03 2024 +0100

    treewide: split up options from theming module, rename to style

    As an initial step towards refactoring the theming module, the options
    have been split up from the configuration itself. This will allow to
    find available options quicker, and separate concerns nicely. It was
    also renamed to style, to avoid confusion with its own options (eg.
    gtk.theme).

commit 87bb04f065
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:59 2024 +0100

    config/nixos/core/boot: remove unused arguments

commit 8e7c0584ef
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:46 2024 +0100

    hosts: move host-specific configuration to hosts/{host}/config

commit a600143e8a
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:19:24 2024 +0100

    nvidia: move to hosts/solaire

commit 7174a33a44
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:14:06 2024 +0100

    treewide: reorganize general structure

commit b86f1470ed
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 10:03:08 2024 +0100

    hosts/solaire: set global vars

commit de6ea242c0
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:59 2024 +0100

    system/network: replace hard-coded values with global vars

commit 5acf11adca
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:51 2024 +0100

    system/core/users: replace hard-coded values with global vars

commit 96425172a0
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:30 2024 +0100

    hosts/vamos: set global vars

commit 8338818b7d
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:24:23 2024 +0100

    hosts: import local modules by default

commit ffb60ac869
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:23:54 2024 +0100

    flake: update eachSystem to use lib.systems.flakeExposed

commit e98a15db1d
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Wed Dec 18 09:23:33 2024 +0100

    modules: create modules to hold global variables
2024-12-18 19:24:59 +01:00

2.4 KiB

❄️ flocon

My NixOS configurations, using flakes.

</> Software I use

Additionally using a lot of other software you can find in the configuration files.

🛠️ Structure

Name Description
assets Resources used throughout the system (images etc.)
config System configuration (separated between NixOS / home-manager)
hosts Host-specific
lib Helper functions
shared Re-used components (internal modules, custom derivations)

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.
  3. Setting up theming should be as simple as changing one or two options.

The main configuration can be found in config, which declares most of my programs, with re-usable modules and derivations in shared, to provide a way to globally set themes, usernames and more.

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

People / repositories I have copied / learned from:

  • fufexan/dotfiles for the configuration structure

  • jacekpoz/nixos for learning how NixOS modules work

  • sodiboo for helping me a whole lot with Niri-specific issues

  • llakala for being very thorough and helpful when cleaning up my code and general structure.

    Some bits have also been borrowed from within the configuration, and credit has been given where its due.