Generate docs (#1)
* feat: Reorganize code * feat: Generate docs as mdbook * feat: Add deploy github action * fix: formatting
This commit is contained in:
parent
ca6bf00ad6
commit
63034a2af9
11 changed files with 144 additions and 70 deletions
43
.github/workflows/deploy.yaml
vendored
Normal file
43
.github/workflows/deploy.yaml
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
name: Deploy Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- ./.github/workflows/deploy.yaml # this workflow
|
||||||
|
- ./docs/** # Docs generation code
|
||||||
|
- ./options.nix # module options
|
||||||
|
# Nix files
|
||||||
|
- flake.lock
|
||||||
|
- flake.nix
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-website:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: DeterminateSystems/nix-installer-action@v9
|
||||||
|
- uses: DeterminateSystems/magic-nix-cache-action@v2
|
||||||
|
- name: Build documentation
|
||||||
|
run: nix build .#docs --print-build-logs
|
||||||
|
- name: Adjust permissions
|
||||||
|
run: |
|
||||||
|
chown -R "$(id -u):$(id -g)" ./result
|
||||||
|
chmod -R a+rwx ./result
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v1
|
||||||
|
with:
|
||||||
|
path: ./result
|
||||||
|
deploy:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v2
|
1
docs/.gitignore
vendored
Normal file
1
docs/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
book
|
6
docs/book.toml
Normal file
6
docs/book.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[book]
|
||||||
|
authors = ["Jalil David Salamé Messina"]
|
||||||
|
language = "en"
|
||||||
|
multilingual = false
|
||||||
|
src = "src"
|
||||||
|
title = "Jalil's NixOS configuration module"
|
16
docs/default.nix
Normal file
16
docs/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
eval = lib.evalModules { modules = [ ../options.nix ]; };
|
||||||
|
doc = (pkgs.nixosOptionsDoc { inherit (eval) options; }).optionsCommonMark;
|
||||||
|
in
|
||||||
|
pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
name = "nixos-configuration-book";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
patchPhase = ''
|
||||||
|
# copy generated options removing the declared by statement
|
||||||
|
sed '/^\*Declared by:\*$/,/^$/d' <${doc} >> src/options.md
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = "${pkgs.mdbook}/bin/mdbook build --dest-dir $out";
|
||||||
|
}
|
3
docs/src/SUMMARY.md
Normal file
3
docs/src/SUMMARY.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Summary
|
||||||
|
|
||||||
|
- [Module Options](./options.md)
|
3
docs/src/options.md
Normal file
3
docs/src/options.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Module Options
|
||||||
|
|
||||||
|
Here you will find the module options and their default values (if they have any).
|
11
flake.nix
11
flake.nix
|
@ -15,22 +15,25 @@
|
||||||
# Flake outputs that other flakes can use
|
# Flake outputs that other flakes can use
|
||||||
outputs = { flake-schemas, nixpkgs, stylix, ... }:
|
outputs = { flake-schemas, nixpkgs, stylix, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (nixpkgs) lib;
|
||||||
# Helpers for producing system-specific outputs
|
# Helpers for producing system-specific outputs
|
||||||
supportedSystems = [ "x86_64-linux" "aarch64-linux" ];
|
supportedSystems = [ "x86_64-linux" "aarch64-linux" ];
|
||||||
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
|
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { pkgs = import nixpkgs { inherit system; }; });
|
||||||
pkgs = import nixpkgs { inherit system; };
|
# Module documentation
|
||||||
});
|
doc = forEachSupportedSystem ({ pkgs }: { doc = import ./docs { inherit pkgs lib; }; });
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Schemas tell Nix about the structure of your flake's outputs
|
# Schemas tell Nix about the structure of your flake's outputs
|
||||||
schemas = flake-schemas.schemas;
|
schemas = flake-schemas.schemas;
|
||||||
|
|
||||||
|
packages = doc;
|
||||||
|
|
||||||
# Nix files formatter (run `nix fmt`)
|
# Nix files formatter (run `nix fmt`)
|
||||||
formatter = forEachSupportedSystem ({ pkgs }: pkgs.nixpkgs-fmt);
|
formatter = forEachSupportedSystem ({ pkgs }: pkgs.nixpkgs-fmt);
|
||||||
|
|
||||||
nixosModules = rec {
|
nixosModules = rec {
|
||||||
default = nixosModule;
|
default = nixosModule;
|
||||||
nixosModule = import ./configuration { inherit stylix; };
|
nixosModule = import ./module { inherit stylix; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,46 +1,11 @@
|
||||||
{ stylix }: { config, pkgs, lib, ... }:
|
{ stylix }: { config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) types;
|
|
||||||
cfg = config.jconfig;
|
cfg = config.jconfig;
|
||||||
mkDisableOption = option: lib.mkOption {
|
|
||||||
description = lib.mdDoc "Whether to enable ${option}.";
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./gui ] ++ lib.optional (cfg.enable && cfg.styling.enable) stylix.homeManagerModules.stylix;
|
imports = [ ./gui ] ++ lib.optional (cfg.enable && cfg.styling.enable) stylix.nixosModules.stylix;
|
||||||
|
|
||||||
options.jconfig = lib.mkOption {
|
options = import ../options.nix;
|
||||||
description = lib.mdDoc "Jalil's default NixOS configuration.";
|
|
||||||
type = types.submodule {
|
|
||||||
options.enable = lib.mkEnableOption "jalil's default configuration.";
|
|
||||||
options.styling = lib.mkOption {
|
|
||||||
description = "Jalil's styling options";
|
|
||||||
type = types.submodule {
|
|
||||||
options.enable = mkDisableOption "jalil's default styling";
|
|
||||||
options.wallpaper = lib.mkOption {
|
|
||||||
description = "The wallpaper to use.";
|
|
||||||
type = types.str;
|
|
||||||
default = builtins.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/lunik1/nixos-logo-gruvbox-wallpaper/d4937c424fad79c1136a904599ba689fcf8d0fad/png/gruvbox-dark-rainbow.png";
|
|
||||||
sha256 = "036gqhbf6s5ddgvfbgn6iqbzgizssyf7820m5815b2gd748jw8zc";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
options.bootLogo = lib.mkOption {
|
|
||||||
description = "The logo used by plymouth at boot.";
|
|
||||||
type = types.str;
|
|
||||||
# http://xenia-linux-site.glitch.me/images/cathodegaytube-splash.png
|
|
||||||
default = builtins.fetchurl {
|
|
||||||
url = "https://efimero.github.io/xenia-images/cathodegaytube-splash.png";
|
|
||||||
sha256 = "qKugUfdRNvMwSNah+YmMepY3Nj6mWlKFh7jlGlAQDo8=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.optionalAttrs cfg.enable {
|
config = lib.optionalAttrs cfg.enable {
|
||||||
boot.plymouth.enable = cfg.styling.enable;
|
boot.plymouth.enable = cfg.styling.enable;
|
|
@ -1,37 +1,9 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) types;
|
|
||||||
cfg = config.jconfig.gui;
|
cfg = config.jconfig.gui;
|
||||||
enable = config.jconfig.enable && cfg.enable;
|
|
||||||
# Like lib.mkEnableOption but default to true
|
|
||||||
mkDisableOption = option: lib.mkOption {
|
|
||||||
description = lib.mdDoc "Whether to enable ${option}.";
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.jhome.gui = lib.mkOption {
|
config = lib.optionalAttrs (config.jconfig.enable && cfg.enable)
|
||||||
description = lib.mdDoc "Jalil's default configuration for a NixOS gui.";
|
|
||||||
type = types.submodule {
|
|
||||||
options.enable = lib.mkEnableOption "jalil's default gui configuration.";
|
|
||||||
# Fix for using Xinput mode on 8bitdo Ultimate C controller
|
|
||||||
# Inspired by https://aur.archlinux.org/packages/8bitdo-ultimate-controller-udev
|
|
||||||
# Adapted from: https://gist.github.com/interdependence/28452fbfbe692986934fbe1e54c920d4
|
|
||||||
options."8bitdoFix" = mkDisableOption "a fix for 8bitdo controllers";
|
|
||||||
options.steamHardwareSupport = mkDisableOption "steam hardware support";
|
|
||||||
options.ydotool = lib.mkOption {
|
|
||||||
description = lib.mdDoc "Jalil's default ydotool configuration.";
|
|
||||||
type = types.submodule {
|
|
||||||
options.enable = mkDisableOption "ydotool";
|
|
||||||
options.autoStart = mkDisableOption "autostarting ydotool at login";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.optionalAttrs enable
|
|
||||||
{
|
{
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.gnome.adwaita-icon-theme
|
pkgs.gnome.adwaita-icon-theme
|
62
options.nix
Normal file
62
options.nix
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) types;
|
||||||
|
# Like mkEnableOption but defaults to true
|
||||||
|
mkDisableOption = option: lib.mkOption {
|
||||||
|
description = lib.mdDoc "Whether to enable ${option}.";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.jconfig = lib.mkOption {
|
||||||
|
description = lib.mdDoc "Jalil's default NixOS configuration.";
|
||||||
|
type = types.submodule {
|
||||||
|
options = {
|
||||||
|
enable = lib.mkEnableOption "jalil's default configuration.";
|
||||||
|
gui = lib.mkOption {
|
||||||
|
description = lib.mdDoc "Jalil's default configuration for a NixOS gui.";
|
||||||
|
type = types.submodule {
|
||||||
|
options.enable = lib.mkEnableOption "jalil's default gui configuration.";
|
||||||
|
# Fix for using Xinput mode on 8bitdo Ultimate C controller
|
||||||
|
# Inspired by https://aur.archlinux.org/packages/8bitdo-ultimate-controller-udev
|
||||||
|
# Adapted from: https://gist.github.com/interdependence/28452fbfbe692986934fbe1e54c920d4
|
||||||
|
options."8bitdoFix" = mkDisableOption "a fix for 8bitdo controllers";
|
||||||
|
options.steamHardwareSupport = mkDisableOption "steam hardware support";
|
||||||
|
options.ydotool = lib.mkOption {
|
||||||
|
description = lib.mdDoc "Jalil's default ydotool configuration.";
|
||||||
|
type = types.submodule {
|
||||||
|
options.enable = mkDisableOption "ydotool";
|
||||||
|
options.autoStart = mkDisableOption "autostarting ydotool at login";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
styling = lib.mkOption {
|
||||||
|
description = "Jalil's styling options";
|
||||||
|
type = types.submodule {
|
||||||
|
options.enable = mkDisableOption "jalil's default styling";
|
||||||
|
options.wallpaper = lib.mkOption {
|
||||||
|
description = "The wallpaper to use.";
|
||||||
|
type = types.str;
|
||||||
|
default = builtins.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/lunik1/nixos-logo-gruvbox-wallpaper/d4937c424fad79c1136a904599ba689fcf8d0fad/png/gruvbox-dark-rainbow.png";
|
||||||
|
sha256 = "036gqhbf6s5ddgvfbgn6iqbzgizssyf7820m5815b2gd748jw8zc";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
options.bootLogo = lib.mkOption {
|
||||||
|
description = "The logo used by plymouth at boot.";
|
||||||
|
type = types.str;
|
||||||
|
# http://xenia-linux-site.glitch.me/images/cathodegaytube-splash.png
|
||||||
|
default = builtins.fetchurl {
|
||||||
|
url = "https://efimero.github.io/xenia-images/cathodegaytube-splash.png";
|
||||||
|
sha256 = "qKugUfdRNvMwSNah+YmMepY3Nj6mWlKFh7jlGlAQDo8=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue