diff --git a/hosts/hermit/configuration.nix b/hosts/hermit/configuration.nix index 11dce4c..06a7e89 100644 --- a/hosts/hermit/configuration.nix +++ b/hosts/hermit/configuration.nix @@ -41,10 +41,19 @@ }; programs = { editors = { + emacs.enable = false; + # only emacs for me, right now. + neovim.enable = true; + # sadly just not advanced enough, yet. helix.enable = true; }; + discord.enable = true; # nushell.enable = true; + eza.enable = true; + firefox.enable = true; + spotify.enable = false; # starship.enable = true; + zellij.enable = true; terminals = { foot.enable = true; }; diff --git a/hosts/temperance/configuration.nix b/hosts/temperance/configuration.nix index d7f255f..d986f3c 100644 --- a/hosts/temperance/configuration.nix +++ b/hosts/temperance/configuration.nix @@ -52,10 +52,24 @@ in { }; programs = { editors = { + emacs.enable = false; + # only emacs for me, right now. + neovim.enable = true; + # sadly just not advanced enough, yet. helix.enable = true; + kakoune.enable = true; }; + discord.enable = true; + nushell.enable = true; + oh-my-posh.enable = true; + eza.enable = true; + firefox.enable = true; + spotify.enable = true; + zellij.enable = false; + steam.enable = false; terminals = { foot.enable = true; + kitty.enable = true; }; }; sound.enable = true; diff --git a/hosts/tower/configuration.nix b/hosts/tower/configuration.nix index 7dfad78..a1428a8 100644 --- a/hosts/tower/configuration.nix +++ b/hosts/tower/configuration.nix @@ -35,6 +35,7 @@ editors = { helix.enable = true; }; + eza.enable = true; }; }; other = { diff --git a/modules/options/meta/module.nix b/modules/options/meta/module.nix new file mode 100644 index 0000000..4440d8c --- /dev/null +++ b/modules/options/meta/module.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + ... +}: let + inherit (builtins) elemAt; + inherit (lib) options types; + inherit (options) mkOption; + inherit (types) listOf str; +in { + options.meta = { + users = mkOption { + type = listOf str; + default = ["cr"]; + description = '' + A list of users on a system. + ''; + }; + mainUser = { + username = mkOption { + type = str; + default = elemAt config.meta.users 0; + description = '' + The main user for each system. This is the first element of the list of users by default. + ''; + }; + gitSigningKey = mkOption { + type = str; + description = '' + The main user's git signing key, used to automatically sing git commits with this key + ''; + }; + }; + }; +} diff --git a/modules/options/system/hardware.nix b/modules/options/system/hardware.nix new file mode 100644 index 0000000..6fc8b87 --- /dev/null +++ b/modules/options/system/hardware.nix @@ -0,0 +1,10 @@ +{lib, ...}: let + inherit (lib) mkOption mkEnableOption; +in { + options.modules.system.hardware = { + nvidia = { + enable = mkEnableOption "Nvidia Nvidia graphics drivers"; + }; + amd.enable = mkEnableOption "AMD graphics drivers"; + }; +} diff --git a/modules/options/system/module.nix b/modules/options/system/module.nix index bce1197..51c2c46 100644 --- a/modules/options/system/module.nix +++ b/modules/options/system/module.nix @@ -29,6 +29,8 @@ in { # monitor configuration ./monitors.nix + + ./hardware.nix ]; options.modules.system = { diff --git a/modules/options/system/monitors.nix b/modules/options/system/monitors.nix index 4294f2e..78d5fe8 100644 --- a/modules/options/system/monitors.nix +++ b/modules/options/system/monitors.nix @@ -1,6 +1,6 @@ {lib, ...}: let inherit (lib) mkOption; - inherit (lib.types) submodule int ints number attrsOf ; + inherit (lib.types) str submodule int ints number attrsOf listOf; in { options.modules.system.hardware.monitors = mkOption { description = "\n List of monitors to use\n "; diff --git a/modules/options/system/programs/default.nix b/modules/options/system/programs/default.nix index 9f7e0d3..df72978 100644 --- a/modules/options/system/programs/default.nix +++ b/modules/options/system/programs/default.nix @@ -3,6 +3,8 @@ in { options.modules.system.programs = { editors = { + emacs.enable = mkEnableOption "Emacs operatig system"; + neovim.enable = mkEnableOption "Neovim text editor"; helix.enable = mkEnableOption "Helix text editor"; kakoune.enable = mkEnableOption "Kakoune text editor"; }; @@ -10,7 +12,13 @@ in { discord.enable = mkEnableOption "Discord messenger"; spotify.enable = mkEnableOption "Spotify music client"; zathura.enable = mkEnableOption "Zathura pdf viewer"; + nextcloud.enable = mkEnableOption "Nextcloud sync client"; + firefox.enable = mkEnableOption "Firefox web browser"; + zellij.enable = mkEnableOption "Zellij terminal multiplexer"; + steam.enable = mkEnableOption "Steam games platform"; + eza.enable = mkEnableOption "eza"; + oh-my-posh.enable = mkEnableOption "oh-my-posh"; nushell.enable = mkEnableOption "nushell"; terminals = { foot.enable = mkEnableOption "Foot terminal emulator"; diff --git a/modules/other/git.nix b/modules/other/git.nix index c5b31c3..1a24704 100644 --- a/modules/other/git.nix +++ b/modules/other/git.nix @@ -17,6 +17,8 @@ in { pull.ff = "only"; gpg.format = "ssh"; commit.gpgsign = "true"; + # breaks forgejo + # diff.external = "${pkgs.difftastic}/bin/difft"; signing = { key = "${key}"; diff --git a/modules/other/users.nix b/modules/other/users.nix index 1fa4711..75d41a9 100644 --- a/modules/other/users.nix +++ b/modules/other/users.nix @@ -1,62 +1,29 @@ { config, - lib, pkgs, self, ... }: let - inherit (builtins) elemAt; - inherit (lib.options) mkOption; - inherit (lib.types) listOf str; - inherit (config.meta.mainUser) username; in { - options.meta = { - users = mkOption { - type = listOf str; - default = ["cr"]; - description = '' - A list of users on a system. - ''; - }; - mainUser = { - username = mkOption { - type = str; - default = elemAt config.meta.users 0; - description = '' - The main user for each system. This is the first element of the list of users by default. - ''; - }; - gitSigningKey = mkOption { - type = str; - description = '' - The main user's git signing key, used to automatically sing git commits with this key - ''; - default = '' - ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw== ''; - }; - }; - }; - config = { + users = { + mutableUsers = true; users = { - mutableUsers = true; - users = { - ${username} = { - isNormalUser = true; - extraGroups = [ - "wheel" - "networking" - "video" - "networkmanager" - "audio" - "nix" - "docker" - ]; - shell = self.packages.${pkgs.stdenv.system}.fish; - # hashedPasswordFile = "/etc/passwords/cr"; - }; - # root.hashedPasswordFile = "/persist/passwords/root"; + ${username} = { + isNormalUser = true; + extraGroups = [ + "wheel" + "networking" + "video" + "networkmanager" + "audio" + "nix" + "docker" + ]; + shell = self.packages.${pkgs.stdenv.system}.fish; + # hashedPasswordFile = "/etc/passwords/cr"; }; + # root.hashedPasswordFile = "/persist/passwords/root"; }; }; } diff --git a/modules/programs/gui/steam.nix b/modules/programs/gui/steam.nix index 2b19e16..a027f0f 100644 --- a/modules/programs/gui/steam.nix +++ b/modules/programs/gui/steam.nix @@ -4,12 +4,9 @@ pkgs, ... }: let - inherit (lib.modules) mkIf; - inherit (lib.options) mkEnableOption; - + inherit (lib) mkIf; cfg = config.modules.system.programs.steam; in { - options.modules.system.programs.steam.enable = mkEnableOption "Steam games platform"; config = mkIf cfg.enable { programs.steam = { enable = true; diff --git a/modules/system/hardware/graphics.nix b/modules/system/hardware/graphics.nix index 25e255e..dae0ada 100644 --- a/modules/system/hardware/graphics.nix +++ b/modules/system/hardware/graphics.nix @@ -1,37 +1,38 @@ { config, lib, + pkgs, ... }: let - inherit (lib.modules) mkIf; - inherit (lib.options) mkEnableOption; - cfg = config.modules.system.hardware; + inherit (lib) mkIf; + inherit (lib.modules) mkForce; in { - options.modules.system.hardware = { - nvidia = { - enable = mkEnableOption "Nvidia graphics drivers"; - }; - amd.enable = mkEnableOption "AMD graphics drivers"; - }; config = { hardware = { - graphics.enable = true; + graphics = { + enable = true; + extraPackages = mkIf cfg.amd.enable (builtins.attrValues { + inherit + (pkgs) + mesa + libva + vaapiVdpa + ; + }); + }; nvidia = mkIf cfg.nvidia.enable { - # we want the open-source drivers - open = true; - modesetting.enable = true; - nvidiaSettings = false; - - # fixes sleep on nvidia devices + open = mkForce true; powerManagement = { enable = true; finegrained = false; }; + nvidiaSettings = false; package = config.boot.kernelPackages.nvidiaPackages.beta; }; }; + boot.initrd.kernelModules = mkIf cfg.amd.enable ["amdgpu"]; services.xserver.videoDrivers = mkIf cfg.nvidia.enable ["nvidia"]; }; }