From 8e2301502918488ca5267df5a05fa54996173439 Mon Sep 17 00:00:00 2001 From: Artur Manuel Date: Fri, 18 Oct 2024 00:00:48 +0100 Subject: [PATCH] feat: more modules --- computers/shared/default.nix | 2 ++ computers/shared/fonts.nix | 60 +++++++++++++++++++++++++++++++++ computers/shared/mpd.nix | 23 +++++++++++++ computers/toothless/default.nix | 13 +++++++ flake.lock | 12 +++---- 5 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 computers/shared/fonts.nix create mode 100644 computers/shared/mpd.nix diff --git a/computers/shared/default.nix b/computers/shared/default.nix index 974e4e0..e6b9a7c 100644 --- a/computers/shared/default.nix +++ b/computers/shared/default.nix @@ -5,5 +5,7 @@ ./git.nix ./qutebrowser.nix ./pipewire.nix + ./mpd.nix + ./fonts.nix ]; } diff --git a/computers/shared/fonts.nix b/computers/shared/fonts.nix new file mode 100644 index 0000000..69a79d8 --- /dev/null +++ b/computers/shared/fonts.nix @@ -0,0 +1,60 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.alqueva.fonts; + inherit (lib) types mkOption; + fontSubmodule = fontPackages: fontNames: { + options = { + packages = mkOption { + type = types.listOf types.package; + default = fontPackages; + description = "Package of the font used."; + }; + names = mkOption { + type = types.listOf types.str; + default = fontNames; + description = "Name of the default font you will be using."; + }; + }; + }; + mkFontOption = fontType: fontPackages: fontNames: + mkOption { + type = types.submodule (fontSubmodule fontPackages fontNames); + description = "Options for the ${fontType} letterform."; + }; +in { + options.alqueva.fonts = { + sansSerif = mkFontOption "sans-serif" [pkgs.roboto] ["Roboto"]; + monospace = mkFontOption "monospace" [pkgs.roboto-mono] ["Roboto Mono"]; + serif = mkFontOption "serif" [pkgs.roboto-serif] ["Roboto Serif"]; + emoji = mkFontOption "emoji" [pkgs.noto-fonts-color-emoji] ["Noto Color Emoji"]; + extraPackages = mkOption { + type = types.listOf types.package; + default = []; + description = "Extra font packages to be installed."; + }; + }; + config = { + fonts = { + packages = builtins.concatLists [ + cfg.extraPackages + cfg.sansSerif.packages + cfg.monospace.packages + cfg.serif.packages + cfg.emoji.packages + ]; + fontconfig = { + defaultFonts = { + sansSerif = cfg.sansSerif.names; + monospace = cfg.monospace.names; + serif = cfg.serif.names; + emoji = cfg.emoji.names; + }; + enable = true; + }; + }; + }; +} diff --git a/computers/shared/mpd.nix b/computers/shared/mpd.nix new file mode 100644 index 0000000..b518304 --- /dev/null +++ b/computers/shared/mpd.nix @@ -0,0 +1,23 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.alqueva.mpd; +in { + options.alqueva.mpd = { + enable = lib.mkEnableOption "mpd"; + ncmpcpp = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable ncmpcpp alongside mpd."; + }; + }; + + config = lib.mkIf cfg.enable { + services.mpd.enable = true; + environment.systemPackages = + lib.optional cfg.ncmpcpp pkgs.ncmpcpp; + }; +} diff --git a/computers/toothless/default.nix b/computers/toothless/default.nix index eacb0d4..6c91569 100644 --- a/computers/toothless/default.nix +++ b/computers/toothless/default.nix @@ -52,6 +52,19 @@ git.enable = true; qutebrowser.enable = true; pipewire.enable = true; + mpd = { + enable = true; + ncmpcpp = true; + }; + fonts = { + sansSerif = {}; + monospace = {}; + serif = {}; + emoji = {}; + extraPackages = [ + pkgs.nerdfonts + ]; + }; }; programs.neovim.enable = true; diff --git a/flake.lock b/flake.lock index 6bc481a..1855332 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1729070567, - "narHash": "sha256-r3KMTeBLioUtRPRFjdWbpZqfMmQHr6Dj9vjGaj4OhP8=", + "lastModified": 1729099656, + "narHash": "sha256-VftVIg7UXTy1bq+tzi1aVYOWl7PQ35IpjW88yMYjjpc=", "owner": "nix-community", "repo": "disko", - "rev": "c8760cee70cf166ad6bcee0bd9f0bba934a3a651", + "rev": "d7d57edb72e54891fa67a6f058a46b2bb405663b", "type": "github" }, "original": { @@ -62,11 +62,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1728778939, - "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", + "lastModified": 1729104314, + "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ff68f91754be6f3427e4986d7949e6273659be1d", + "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", "type": "github" }, "original": {