From 549059624768d7af0117833a3885d2ff48bcaed5 Mon Sep 17 00:00:00 2001 From: "christoph.hollizeck" Date: Fri, 22 Mar 2024 17:52:40 +0100 Subject: [PATCH] moving to new config --- .../x86_64-linux/cholli@yggdrasil/default.nix | 50 ++++++++++----- lib/module/default.nix | 62 +++++++++++++++++++ modules/nixos/snowfall/default.nix | 16 ----- modules/nixos/system/boot/default.nix | 20 ++++++ modules/nixos/system/fonts/default.nix | 37 +++++++++++ modules/nixos/system/locale/default.nix | 27 ++++++++ modules/nixos/system/time/default.nix | 20 ++++++ modules/nixos/system/xkb/default.nix | 22 +++++++ 8 files changed, 224 insertions(+), 30 deletions(-) create mode 100644 lib/module/default.nix delete mode 100644 modules/nixos/snowfall/default.nix create mode 100644 modules/nixos/system/boot/default.nix create mode 100644 modules/nixos/system/fonts/default.nix create mode 100644 modules/nixos/system/locale/default.nix create mode 100644 modules/nixos/system/time/default.nix create mode 100644 modules/nixos/system/xkb/default.nix diff --git a/homes/x86_64-linux/cholli@yggdrasil/default.nix b/homes/x86_64-linux/cholli@yggdrasil/default.nix index 22d16fb..6f5bfa6 100644 --- a/homes/x86_64-linux/cholli@yggdrasil/default.nix +++ b/homes/x86_64-linux/cholli@yggdrasil/default.nix @@ -1,21 +1,43 @@ -{ lib -, pkgs -, config +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib +, # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs +, # You also have access to your flake's inputs. + inputs +, # Additional metadata is provided by Snowfall Lib. + home +, # The home architecture for this host (eg. `x86_64-linux`). + target +, # The Snowfall Lib target for this home (eg. `x86_64-home`). + format +, # A normalized name for the home target (eg. `home`). + virtual +, # A boolean to determine whether this home is a virtual target using nixos-generators. + host +, # The host name for this home. + # All other arguments come from the home home. + config , ... }: -# User information gathered by Snowfall Lib is available. -let - name = config.snowfallorg.user.name; - home = config.snowfallorg.user.home.directory; -in -{ - home = { - packages = with pkgs; [ neovim steam discord ]; +with lib.wyrdgard; { + wyrdgard = { + user = { + enable = true; + name = config.snowfallorg.user.name; + }; - sessionVariables = { EDITOR = "nvim"; }; + submodule = { + basics.enable = true; + graphical-interface.enable = true; + }; - shellAliases = { vimdiff = "nvim -d"; }; + system.hardware = { + audio.enable = true; + bluetooth.enable = true; + networking.enable = true; + }; - stateVersion = "23.11"; }; } diff --git a/lib/module/default.nix b/lib/module/default.nix new file mode 100644 index 0000000..48e53c6 --- /dev/null +++ b/lib/module/default.nix @@ -0,0 +1,62 @@ +{ lib, ... }: + +with lib; rec { + ## Create a NixOS module option. + ## + ## ```nix + ## lib.mkOpt nixpkgs.lib.types.str "My default" "Description of my option." + ## ``` + ## + #@ Type -> Any -> String + mkOpt = type: default: description: + mkOption { inherit type default description; }; + + ## Create a NixOS module option without a description. + ## + ## ```nix + ## lib.mkOpt' nixpkgs.lib.types.str "My default" + ## ``` + ## + #@ Type -> Any -> String + mkOpt' = type: default: mkOpt type default null; + + ## Create a boolean NixOS module option. + ## + ## ```nix + ## lib.mkBoolOpt true "Description of my option." + ## ``` + ## + #@ Type -> Any -> String + mkBoolOpt = mkOpt types.bool; + + ## Create a boolean NixOS module option without a description. + ## + ## ```nix + ## lib.mkBoolOpt true + ## ``` + ## + #@ Type -> Any -> String + mkBoolOpt' = mkOpt' types.bool; + + enabled = { + ## Quickly enable an option. + ## + ## ```nix + ## services.nginx = enabled; + ## ``` + ## + #@ true + enable = true; + }; + + disabled = { + ## Quickly disable an option. + ## + ## ```nix + ## services.nginx = enabled; + ## ``` + ## + #@ false + enable = false; + }; +} diff --git a/modules/nixos/snowfall/default.nix b/modules/nixos/snowfall/default.nix deleted file mode 100644 index fe06455..0000000 --- a/modules/nixos/snowfall/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib -, config -, ... -}: -let - cfg = config.snowfallorg.example; -in -{ - options.snowfallorg.example = { - enable = lib.mkEnableOption "Snowfall Example"; - }; - - config = lib.mkIf cfg.enable { - environment.variables = { SNOWFALLORG_EXAMPLE = "enabled"; }; - }; -} diff --git a/modules/nixos/system/boot/default.nix b/modules/nixos/system/boot/default.nix new file mode 100644 index 0000000..ddbecf5 --- /dev/null +++ b/modules/nixos/system/boot/default.nix @@ -0,0 +1,20 @@ +{ options +, config +, pkgs +, lib +, ... +}: +with lib; +with lib.wyrdgard; let + cfg = config.wyrdgard.system.boot; +in +{ + options.wyrdgard.system.boot = with types; { + enable = mkBoolOpt false "Whether or not to enable booting."; + }; + + config = mkIf cfg.enable { + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + }; +} diff --git a/modules/nixos/system/fonts/default.nix b/modules/nixos/system/fonts/default.nix new file mode 100644 index 0000000..052c932 --- /dev/null +++ b/modules/nixos/system/fonts/default.nix @@ -0,0 +1,37 @@ +{ options +, config +, pkgs +, lib +, ... +}: +with lib; +with lib.wyrdgard; let + cfg = config.wyrdgard.system.fonts; +in +{ + options.wyrdgard.system.fonts = with types; { + enable = mkBoolOpt false "Whether or not to manage fonts."; + fonts = mkOpt (listOf package) [ ] "Custom font packages to install."; + }; + + config = mkIf cfg.enable { + environment.variables = { + # Enable icons in tooling since we have nerdfonts. + LOG_ICONS = "true"; + }; + + environment.systemPackages = with pkgs; [ + font-manager + ]; + + fonts.packages = with pkgs; + [ + noto-fonts + noto-fonts-cjk-sans + noto-fonts-cjk-serif + noto-fonts-emoji + (nerdfonts.override { fonts = [ "CodeNewRoman" ]; }) + ] + ++ cfg.fonts; + }; +} diff --git a/modules/nixos/system/locale/default.nix b/modules/nixos/system/locale/default.nix new file mode 100644 index 0000000..f4e876b --- /dev/null +++ b/modules/nixos/system/locale/default.nix @@ -0,0 +1,27 @@ +{ options +, config +, pkgs +, lib +, ... +}: +with lib; +with lib.wyrdgard; let + cfg = config.wyrdgard.system.locale; +in +{ + options.wyrdgard.system.locale = with types; { + enable = mkBoolOpt false "Whether or not to manage locale settings."; + }; + + config = mkIf cfg.enable { + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_TIME = "de_DE.UTF-8"; + }; + + console = { + keyMap = mkForce "us"; + }; + }; +} diff --git a/modules/nixos/system/time/default.nix b/modules/nixos/system/time/default.nix new file mode 100644 index 0000000..9d3f378 --- /dev/null +++ b/modules/nixos/system/time/default.nix @@ -0,0 +1,20 @@ +{ options +, config +, pkgs +, lib +, ... +}: +with lib; +with lib.wyrdgard; let + cfg = config.wyrdgard.system.time; +in +{ + options.wyrdgard.system.time = with types; { + enable = + mkBoolOpt false "Whether or not to configure timezone information."; + }; + + config = mkIf cfg.enable { + time.timeZone = "Europe/Berlin"; + }; +} diff --git a/modules/nixos/system/xkb/default.nix b/modules/nixos/system/xkb/default.nix new file mode 100644 index 0000000..8d179d3 --- /dev/null +++ b/modules/nixos/system/xkb/default.nix @@ -0,0 +1,22 @@ +{ options +, config +, lib +, ... +}: +with lib; +with lib.wyrdgard; let + cfg = config.wyrdgard.system.xkb; +in +{ + options.wyrdgard.system.xkb = with types; { + enable = mkBoolOpt false "Whether or not to configure xkb."; + }; + + config = mkIf cfg.enable { + console.useXkbConfig = true; + services.xserver = { + xkb.layout = "us"; + xkbOptions = "caps:escape"; + }; + }; +}