diff --git a/docs/default.nix b/docs/default.nix index 34635bd..a5a5f8d 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,8 +1,12 @@ # with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix -{ pkgs, build_systems, lib, ... }: +{ + pkgs, + build_systems, + lib, + ... +}: let - makeOptionsDoc = configuration: - pkgs.nixosOptionsDoc { options = configuration; }; + makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; }; generateDocs = obj: '' touch src/${obj.fst}.md sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md @@ -11,18 +15,17 @@ let echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; system = (build_systems ../example/.)."example".options; - makeOptionsDocPrograms = name: - pkgs.nixosOptionsDoc { options = system.mods.${name}; }; + makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; - names = lib.lists.remove "default" - (map (name: lib.strings.removeSuffix ".nix" name) - (lib.attrsets.mapAttrsToList (name: _: name) paths)); + names = lib.lists.remove "default" ( + map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + ); mods = map makeOptionsDocPrograms names; - docs = - lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); + docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); summary = lib.strings.concatStringsSep " " (map summaryAppend names); -in pkgs.stdenvNoCC.mkDerivation { +in +pkgs.stdenvNoCC.mkDerivation { name = "dashNix-book"; src = ./.; diff --git a/docs/src/README.md b/docs/src/README.md index 2e5d444..0af74b9 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -198,4 +198,6 @@ For package lists, please check the individual modules, as the lists can be long - fish: Enables and configures fish shell - kitty: Enables and configures kitty terminal - oxi: My own programs, can be selectively disabled, or as a whole +- mime: Mime type configuration +- xkb: Keyboard layout configuration - scripts: Various preconfigured scripts with the ability to add more diff --git a/example/flake.nix b/example/flake.nix index 1c4fa7d..def9784 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -4,8 +4,7 @@ inputs = { dashvim.url = "github:DashieTM/DashVim"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - ironbar.url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; anyrun.url = "github:Kirottu/anyrun"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; @@ -22,9 +21,11 @@ }; }; - outputs = { ... }@inputs: { - nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; - }; + outputs = + { ... }@inputs: + { + nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; + }; nixConfig = { builders-use-substitutes = true; diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 20a5134..ef9d710 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -66,7 +66,7 @@ # ]; # or amd, whatever you have gpu.nvidia.enable = true; - kde_connect.enable = true; + kdeConnect.enable = true; # login manager: # default is greetd # greetd = { }; diff --git a/flake.nix b/flake.nix index 000c69d..52680f9 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,9 @@ nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; - nix-flatpak = { url = "github:gmodena/nix-flatpak"; }; + nix-flatpak = { + url = "github:gmodena/nix-flatpak"; + }; home-manager = { url = "github:nix-community/home-manager"; @@ -23,8 +25,7 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; stylix.url = "github:danth/stylix"; @@ -47,11 +48,14 @@ }; }; - outputs = { self, ... }@inputs: + outputs = + { self, ... }@inputs: let stable = import inputs.stable { system = "x86_64-linux"; - config = { allowUnfree = true; }; + config = { + allowUnfree = true; + }; }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; @@ -61,7 +65,8 @@ allowUnfree = true; }; }; - in rec { + in + rec { dashNixLib = import ./lib { inherit self inputs pkgs; lib = inputs.nixpkgs.lib; diff --git a/home/default.nix b/home/default.nix index 67c4290..7d0a2aa 100644 --- a/home/default.nix +++ b/home/default.nix @@ -29,7 +29,6 @@ imports = [ ./common.nix - ./xdg.nix ./themes ./sync.nix ] diff --git a/home/xdg.nix b/home/xdg.nix deleted file mode 100644 index aa9541a..0000000 --- a/home/xdg.nix +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2020-2021 Mihai Fufezan -# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix -{ config, ... }: -let - browser = [ "firefox" ]; - imageViewer = [ "imv" ]; - videoPlayer = [ "mpv" ]; - audioPlayer = [ "io.bassi.Amberol" ]; - - xdgAssociations = - type: program: list: - builtins.listToAttrs ( - map (e: { - name = "${type}/${e}"; - value = program; - }) list - ); - - image = xdgAssociations "image" imageViewer [ - "png" - "svg" - "jpeg" - "gif" - ]; - video = xdgAssociations "video" videoPlayer [ - "mp4" - "avi" - "mkv" - ]; - audio = xdgAssociations "audio" audioPlayer [ - "mp3" - "flac" - "wav" - "aac" - ]; - browserTypes = - (xdgAssociations "application" browser [ - "json" - "x-extension-htm" - "x-extension-html" - "x-extension-shtml" - "x-extension-xht" - "x-extension-xhtml" - ]) - // (xdgAssociations "x-scheme-handler" browser [ - "about" - "ftp" - "http" - "https" - "unknown" - ]); - - # XDG MIME types - associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( - { - "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; - "text/html" = browser; - "text/plain" = [ "neovide" ]; - "x-scheme-handler/chrome" = [ "com.brave.browser" ]; - "inode/directory" = [ "yazi" ]; - } - // image - // video - // audio - // browserTypes - ); -in -{ - xdg = { - enable = true; - cacheHome = config.home.homeDirectory + "/.local/cache"; - - mimeApps = { - enable = true; - defaultApplications = associations; - }; - - userDirs = { - enable = true; - createDirectories = true; - extraConfig = { - XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; - }; - }; - }; -} diff --git a/lib/default.nix b/lib/default.nix index 8a6cb87..32910cc 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,51 +1,61 @@ -{ inputs, pkgs, self, lib, additionalMods ? { - nixos = [ ]; - home = [ ]; -}, mods ? { - nixos = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; -}, ... }: { - /* * - # build_systems +{ + inputs, + pkgs, + self, + lib, + additionalMods ? { + nixos = [ ]; + home = [ ]; + }, + mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; + }, + ... +}: +{ + /* + * + # build_systems - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - The second parameter is the root of your configuration, which should be ./. in most cases. + The second parameter is the root of your configuration, which should be ./. in most cases. - `root` + `root` - : the root path of your configuration + : the root path of your configuration - # Example usage - :::{.example} - ```nix - nixosConfigurations = - (build_systems [ "nixos" ] ./.); - ``` - ::: + # Example usage + :::{.example} + ```nix + nixosConfigurations = + (build_systems [ "nixos" ] ./.); + ``` + ::: */ # let # paths = builtins.readDir ; @@ -54,31 +64,53 @@ # ); # in - build_systems = root: - builtins.listToAttrs (map (name: { - name = name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit self inputs pkgs mod additionalHomeConfig root; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - }; - modules = [ mod ] ++ mods.nixos ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional - (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) (lib.lists.remove "" (lib.attrsets.mapAttrsToList - (name: fType: if fType == "directory" then name else "") - (builtins.readDir (root + /hosts))))); + build_systems = + root: + builtins.listToAttrs ( + map + (name: { + name = name; + value = + let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + in + inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit + self + inputs + pkgs + mod + additionalHomeConfig + root + ; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + }; + modules = + [ mod ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) + ); buildIso = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit self inputs pkgs; }; + specialArgs = { + inherit self inputs pkgs; + }; modules = [ ../iso/configuration.nix ]; }; } diff --git a/modules/programs/base_packages.nix b/modules/programs/basePackages.nix similarity index 81% rename from modules/programs/base_packages.nix rename to modules/programs/basePackages.nix index 4ab9ae1..cd0a501 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/basePackages.nix @@ -8,7 +8,7 @@ }: { options.mods = { - base_packages = { + basePackages = { enable = lib.mkOption { default = true; example = false; @@ -17,7 +17,7 @@ Enables default system packages. ''; }; - additional_packages = lib.mkOption { + additionalPackages = lib.mkOption { default = [ ]; example = [ pkgs.openssl ]; type = with lib.types; listOf package; @@ -26,7 +26,7 @@ Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -34,7 +34,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -47,7 +47,7 @@ config = lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then with pkgs; [ adwaita-icon-theme @@ -73,13 +73,13 @@ upower xorg.xkbutils ] - ++ config.mods.base_packages.additional_packages + ++ config.mods.basePackages.additionalPackages else - config.mods.base_packages.additional_packages; + config.mods.basePackages.additionalPackages; gtk.iconCache.enable = false; services = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then { upower.enable = true; dbus = { @@ -92,12 +92,12 @@ openFirewall = true; }; } - // config.mods.base_packages.special_services + // config.mods.basePackages.specialServices else - config.mods.base_packages.special_services; + config.mods.basePackages.specialServices; programs = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then { nix-ld = { enable = true; @@ -119,9 +119,9 @@ ssh.startAgent = true; gnupg.agent.enable = true; } - // config.mods.base_packages.special_programs + // config.mods.basePackages.specialPrograms else - config.mods.base_packages.special_programs; + config.mods.basePackages.specialPrograms; }; } diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 4a968be..7c7d8a9 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,7 +1,7 @@ { imports = [ ./acpid.nix - ./base_packages.nix + ./basePackages.nix ./bluetooth.nix ./coding.nix ./drives.nix @@ -12,13 +12,13 @@ ./gdm.nix ./git.nix ./gnome.nix - ./gnome_services.nix + ./gnomeServices.nix ./gpu.nix ./greetd.nix - ./home_packages.nix + ./homePackages.nix ./hyprland ./kde.nix - ./kde_connect.nix + ./kdeConnect.nix ./keepassxc.nix ./kitty.nix ./media.nix @@ -35,6 +35,7 @@ ./stylix.nix ./teams.nix ./virtualbox.nix + ./mime.nix ./xkb.nix ./xone.nix ./yazi diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 579ed70..9c0ecfe 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -130,7 +130,9 @@ in }; }; # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... - swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ]; + swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ + { device = "/dev/disk/by-label/SWAP"; } + ]; } ); } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 0386d57..4e04b76 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -54,6 +54,7 @@ abbr --add gl 'git pull origin' abbr --add gm 'git commit -m' abbr --add ga "git add -A" + abbr --add gc "git commit --amend --no-edit" abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20' abbr --add s "kitty +kitten ssh" abbr --add zl 'z "" ' diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 29ea71c..d3a23cd 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -44,13 +44,13 @@ type = lib.types.bool; description = "Whether to use gamemode"; }; - gpu_optimization = lib.mkOption { + gpuOptimization = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; }; - gpu_device = lib.mkOption { + gpuDevice = lib.mkOption { default = 0; example = 1; type = lib.types.int; @@ -71,9 +71,9 @@ general = { governor = "performance"; }; - gpu = lib.mkIf config.mods.gaming.gpu_optimization { + gpu = lib.mkIf config.mods.gaming.gpuOptimization { apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.mods.gaming.gpu_device; + gpu_device = config.mods.gaming.gpuDevice; amd_performance_level = "high"; nv_powermizer_mode = 1; }; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index e105cb7..2e78f4c 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -2,7 +2,6 @@ lib, config, options, - pkgs, ... }: { @@ -19,7 +18,7 @@ type = lib.types.str; description = "Git email"; }; - ssh_config = lib.mkOption { + sshConfig = lib.mkOption { default = '' Host github.com ${ @@ -63,7 +62,7 @@ }; }; }; - home.file.".ssh/config".text = config.mods.git.ssh_config; + home.file.".ssh/config".text = config.mods.git.sshConfig; } ); } diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnomeServices.nix similarity index 92% rename from modules/programs/gnome_services.nix rename to modules/programs/gnomeServices.nix index 3c489cd..4bc4d7e 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnomeServices.nix @@ -7,7 +7,7 @@ }: { options.mods = { - gnome_services.enable = lib.mkOption { + gnomeServices.enable = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -26,7 +26,7 @@ }; }; - config = lib.mkIf config.mods.gnome_services.enable ( + config = lib.mkIf config.mods.gnomeServices.enable ( lib.optionalAttrs (options ? services.gnome.gnome-keyring) { programs.dconf.enable = true; services = { diff --git a/modules/programs/home_packages.nix b/modules/programs/homePackages.nix similarity index 72% rename from modules/programs/home_packages.nix rename to modules/programs/homePackages.nix index 1992028..e6f8890 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/homePackages.nix @@ -6,14 +6,14 @@ ... }: { - options.mods.home_packages = { + options.mods.homePackages = { useDefaultPackages = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Use default packages (will use additional_packages only if disabled)"; }; - additional_packages = lib.mkOption { + additionalPackages = lib.mkOption { default = [ ]; example = [ pkgs.flatpak ]; type = with lib.types; listOf package; @@ -22,7 +22,7 @@ Will be installed regardless of default home manager packages are installed. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -30,7 +30,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -77,18 +77,18 @@ }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.home_packages.useDefaultPackages then + if config.mods.homePackages.useDefaultPackages then with pkgs; [ # TODO add fcp once fixed.... - (lib.mkIf config.mods.home_packages.ncspot ncspot) - (lib.mkIf config.mods.home_packages.vesktop vesktop) - (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) - (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) + (lib.mkIf config.mods.homePackages.ncspot ncspot) + (lib.mkIf config.mods.homePackages.vesktop vesktop) + (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) + (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) + (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) (lib.mkIf ( - !isNull config.mods.home_packages.additionalBrowser - ) config.mods.home_packages.additionalBrowser) + !isNull config.mods.homePackages.additionalBrowser + ) config.mods.homePackages.additionalBrowser) adw-gtk3 bat brightnessctl @@ -119,9 +119,9 @@ zenith zoxide ] - ++ config.mods.home_packages.additional_packages + ++ config.mods.homePackages.additionalPackages else - config.mods.home_packages.additional_packages; + config.mods.homePackages.additionalPackages; xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { global = { @@ -129,14 +129,14 @@ }; }; programs = - if config.mods.home_packages.useDefaultPackages then - config.mods.home_packages.special_programs + if config.mods.homePackages.useDefaultPackages then + config.mods.homePackages.specialPrograms else - config.mods.home_packages.special_programs; + config.mods.homePackages.specialPrograms; services = - if config.mods.home_packages.useDefaultPackages then - config.mods.home_packages.special_services + if config.mods.homePackages.useDefaultPackages then + config.mods.homePackages.specialServices else - config.mods.home_packages.special_services; + config.mods.homePackages.specialServices; }; } diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 5be6ad9..5e7d9d8 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -16,7 +16,7 @@ type = lib.types.bool; description = "Enables anyrun"; }; - use_default_config = lib.mkOption { + useDefaultConfig = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -24,7 +24,7 @@ Use preconfigured anyrun config. ''; }; - custom_config = lib.mkOption { + customConfig = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -33,7 +33,7 @@ Will be merged with default configuration if enabled. ''; }; - use_default_css = lib.mkOption { + useDefaultCss = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -41,7 +41,7 @@ Use preconfigured anyrun css. ''; }; - custom_css = lib.mkOption { + customCss = lib.mkOption { default = ''''; example = '' #window { @@ -63,7 +63,7 @@ programs.anyrun = { enable = true; config = - if config.mods.hyprland.anyrun.use_default_config then + if config.mods.hyprland.anyrun.useDefaultConfig then { plugins = [ inputs.anyrun.packages.${pkgs.system}.applications @@ -83,12 +83,12 @@ hidePluginInfo = true; closeOnClick = true; } - // config.mods.hyprland.anyrun.custom_config + // config.mods.hyprland.anyrun.customConfig else - config.mods.hyprland.anyrun.custom_config; + config.mods.hyprland.anyrun.customConfig; extraCss = - if config.mods.hyprland.anyrun.use_default_css then + if config.mods.hyprland.anyrun.useDefaultCss then '' #window { border-radius: 10px; @@ -137,9 +137,9 @@ border-radius: 10px; } '' - + config.mods.hyprland.anyrun.custom_css + + config.mods.hyprland.anyrun.customCss else - config.mods.hyprland.anyrun.custom_css; + config.mods.hyprland.anyrun.customCss; }; } ); diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 5f35aec..f1f1bfa 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -37,7 +37,7 @@ The workspace configuration for hyprland. ''; }; - no_atomic = lib.mkOption { + noAtomic = lib.mkOption { default = false; example = true; type = lib.types.bool; @@ -45,7 +45,7 @@ Use tearing ''; }; - extra_autostart = lib.mkOption { + extraAutostart = lib.mkOption { default = [ ]; example = [ "your application" ]; type = lib.types.listOf lib.types.str; @@ -53,7 +53,7 @@ Extra exec_once. ''; }; - use_default_config = lib.mkOption { + useDefaultConfig = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -61,7 +61,7 @@ Use preconfigured Hyprland config. ''; }; - custom_config = lib.mkOption { + customConfig = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -100,7 +100,7 @@ wayland.windowManager.hyprland = { enable = true; settings = - if config.mods.hyprland.use_default_config then + if config.mods.hyprland.useDefaultConfig then { "$mod" = "SUPER"; @@ -131,14 +131,14 @@ "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" # media keys - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audio-control sink +5%") ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") # hyprland keybinds # misc @@ -219,7 +219,7 @@ border_size = 3; "col.active_border" = lib.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; # "col.inactive_border" = "0x66333333"; - allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; + allow_tearing = lib.mkIf config.mods.hyprland.noAtomic true; }; decoration = { @@ -297,7 +297,7 @@ "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_SCALE_FACTOR,1" ''EDITOR,"neovide --novsync --nofork"'' - (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") + (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") @@ -349,7 +349,7 @@ # should be taken care of with the new systemd services # "nextcloud --background" "oxinoti" - ] ++ config.mods.hyprland.extra_autostart; + ] ++ config.mods.hyprland.extraAutostart; # plugin = { # hyprspace = { @@ -359,9 +359,9 @@ # }; # }; } - // config.mods.hyprland.custom_config + // config.mods.hyprland.customConfig else - lib.mkForce config.mods.hyprland.custom_config; + lib.mkForce config.mods.hyprland.customConfig; plugins = config.mods.hyprland.plugins; #inputs.Hyprspace.packages.${pkgs.system}.Hyprspace }; diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index 578b542..03d24e5 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,7 +1,6 @@ { lib, config, - pkgs, options, ... }: @@ -17,262 +16,309 @@ in type = lib.types.bool; description = "Enables ironbar"; }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured ironbar config. + ''; + }; + customConfig = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom ironbar configuration. + Will be merged with default configuration if enabled. + ''; + }; + useDefaultCss = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured ironbar css. + ''; + }; + customCss = lib.mkOption { + default = ''''; + example = '' + #window { + border-radius: none; + } + ''; + type = lib.types.lines; + description = '' + Custom ironbar css. + Will be merged with default css if enabled. + ''; + }; }; }; config = lib.mkIf config.mods.hyprland.ironbar.enable ( lib.optionalAttrs (options ? programs.ironbar) { - programs.ironbar = { enable = true; - style = '' - @import url("/home/${username}/.config/gtk-3.0/gtk.css"); + style = + if config.mods.hyprland.ironbar.useDefaultCss then + '' + @import url("/home/${username}/.config/gtk-3.0/gtk.css"); - * { - color: #71bbe6; - padding: 0px; - margin: 0px; - } + * { + color: #71bbe6; + padding: 0px; + margin: 0px; + } - .background { - background-color: rgba(0, 0, 0, 0); - } + .background { + background-color: rgba(0, 0, 0, 0); + } - .workspaces { - margin: 2px 0px 0px 5px; - border-radius: 10px; - /* background-color: #2b2c3b; */ - background-color: #1E1E2E; - padding: 2px 5px 2px 5px; - } + .workspaces { + margin: 2px 0px 0px 5px; + border-radius: 10px; + /* background-color: #2b2c3b; */ + background-color: #1E1E2E; + padding: 2px 5px 2px 5px; + } - .workspaces .item { - margin: 0px 3px 0px 3px; - font-size: 13px; - border-radius: 100%; - padding: 0px 2px 0px 3px; - background-color: rgba(0, 0, 0, 0); - } + .workspaces .item { + margin: 0px 3px 0px 3px; + font-size: 13px; + border-radius: 100%; + padding: 0px 2px 0px 3px; + background-color: rgba(0, 0, 0, 0); + } - .workspaces .item:hover { - background-color: #3e4152; - } + .workspaces .item:hover { + background-color: #3e4152; + } - .workspaces .item.focused { - background-color: #3e4152; - } + .workspaces .item.focused { + background-color: #3e4152; + } - .audio-box { - padding: 2em; - background-color: #1E1E2E; - border-radius: 5px; - } + .audio-box { + padding: 2em; + background-color: #1E1E2E; + border-radius: 5px; + } - .audio-slider { - padding: 5px; - margin: 5px; - } + .audio-slider { + padding: 5px; + margin: 5px; + } - .audio-button { - padding: 5px 10px 5px 10px; - margin: 0px 1em 20px 1em; - border-radius: 100%; - font-size: 17px; - } + .audio-button { + padding: 5px 10px 5px 10px; + margin: 0px 1em 20px 1em; + border-radius: 100%; + font-size: 17px; + } - .audio-button-box { - padding: 0px 2.5em 0px 2.5em; - } + .audio-button-box { + padding: 0px 2.5em 0px 2.5em; + } - .focused { - /* margin: 2px 0px 0px 0px; */ - padding: 0px 5px 0px 5px; - /* background-color: 1a1b26; */ - background-color: #1E1E2E; - font-size: 17px; - border-radius: 10px; - } + .focused { + /* margin: 2px 0px 0px 0px; */ + padding: 0px 5px 0px 5px; + /* background-color: 1a1b26; */ + background-color: #1E1E2E; + font-size: 17px; + border-radius: 10px; + } - #bar #end { - margin: 0px 5px 0px 0px; - padding: 0px 5px 0px 5px; - background-color: #1E1E2E; - border-radius: 10px; - } + #bar #end { + margin: 0px 5px 0px 0px; + padding: 0px 5px 0px 5px; + background-color: #1E1E2E; + border-radius: 10px; + } - .popup-button { - padding: 0px 5px 0px 3px; - margin: 0em 3px; - border-radius: 100%; - font-size: 13px; - background-color: #1E1E2E; - } + .popup-button { + padding: 0px 5px 0px 3px; + margin: 0em 3px; + border-radius: 100%; + font-size: 13px; + background-color: #1E1E2E; + } - .popup-button-box { - padding: 2px 0px 2px 0px; - } + .popup-button-box { + padding: 2px 0px 2px 0px; + } - .clock { - padding: 0px 5px 0px 5px; - font-size: 17px; - background-color: #1E1E2E; - } + .clock { + padding: 0px 5px 0px 5px; + font-size: 17px; + background-color: #1E1E2E; + } - .clock:hover { - background-color: #3e4152; - } + .clock:hover { + background-color: #3e4152; + } - .custom button { - background-color: #1E1E2E; - } + .custom button { + background-color: #1E1E2E; + } - .custom button:hover { - background-color: #3e4152; - } + .custom button:hover { + background-color: #3e4152; + } - .memory-usage { - font-size: 15px; - margin: 0px 5px 0px 0px; - } + .memory-usage { + font-size: 15px; + margin: 0px 5px 0px 0px; + } - .memory-usage:hover { - background-color: #3e4152; - } + .memory-usage:hover { + background-color: #3e4152; + } - .popup-clock { - background-color: #1E1E2E; - border-radius: 5px; - padding: 2px 8px 10px 8px; - } + .popup-clock { + background-color: #1E1E2E; + border-radius: 5px; + padding: 2px 8px 10px 8px; + } - .popup-clock .calendar-clock { - font-size: 2.5em; - padding-bottom: 0.1em; - } + .popup-clock .calendar-clock { + font-size: 2.5em; + padding-bottom: 0.1em; + } - .popup-clock .calendar { - border-radius: 5px; - font-size: 1.05em; - } + .popup-clock .calendar { + border-radius: 5px; + font-size: 1.05em; + } - .popup-clock .calendar:selected { - background-color: #3e4152; - } - ''; + .popup-clock .calendar:selected { + background-color: #3e4152; + } + '' + + config.mods.hyprland.ironbar.customCss + else + config.mods.hyprland.ironbar.customCss; features = [ #"another_feature" ]; config = { - monitors."${config.conf.defaultMonitor}" = { - end = config.conf.ironbar.modules ++ [ + monitors."${config.conf.defaultMonitor}" = + if config.mods.hyprland.ironbar.useDefaultConfig then { - type = "sys_info"; - format = [ " {memory_percent}" ]; - interval.memory = 30; - class = "memory-usage"; - } - { - type = "custom"; - bar = [ + end = config.conf.ironbar.modules ++ [ { - type = "button"; - class = "popup-button"; - label = ""; - on_click = "popup:toggle"; + type = "sys_info"; + format = [ " {memory_percent}" ]; + interval.memory = 30; + class = "memory-usage"; } - ]; - class = "popup-button-box"; - popup = [ { - type = "box"; - orientation = "vertical"; - class = "audio-box"; - widgets = [ + type = "custom"; + bar = [ + { + type = "button"; + class = "popup-button"; + label = ""; + on_click = "popup:toggle"; + } + ]; + class = "popup-button-box"; + popup = [ { type = "box"; - orientation = "horizontal"; + orientation = "vertical"; + class = "audio-box"; widgets = [ { - type = "button"; - class = "audio-button"; - label = ""; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; + type = "box"; + orientation = "horizontal"; + widgets = [ + { + type = "button"; + class = "audio-button"; + label = ""; + on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; + } + { + type = "button"; + class = "audio-button"; + label = "󰋋"; + on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; + } + ]; + class = "audio-button-box"; } { - type = "button"; - class = "audio-button"; - label = "󰋋"; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; + type = "label"; + label = "Output"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; + } + { + type = "label"; + label = "Input"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; } ]; - class = "audio-button-box"; - } - { - type = "label"; - label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { - type = "label"; - label = "Input"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; } ]; } - ]; - } - { - type = "custom"; - bar = [ { - type = "button"; - class = "popup-button"; - label = ""; - on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; + type = "custom"; + bar = [ + { + type = "button"; + class = "popup-button"; + label = ""; + on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; + } + ]; + class = "popup-button-box"; + } + { + type = "clock"; + format = "%I:%M"; + format_popup = "%I:%M:%S"; + locale = "en_US"; + } + { type = "tray"; } + ]; + position = "top"; + height = 10; + anchor_to_edges = true; + start = [ + { + type = "workspaces"; + all_monitors = true; + } + ]; + center = [ + { + type = "focused"; + show_icon = true; + show_title = true; + icon_size = 20; + truncate = "end"; } ]; - class = "popup-button-box"; } - { - type = "clock"; - format = "%I:%M"; - format_popup = "%I:%M:%S"; - locale = "en_US"; - } - { type = "tray"; } - ]; - position = "top"; - height = 10; - anchor_to_edges = true; - start = [ - { - type = "workspaces"; - all_monitors = true; - } - ]; - center = [ - { - type = "focused"; - show_icon = true; - show_title = true; - icon_size = 20; - truncate = "end"; - } - ]; - }; + // config.mods.hyprland.ironbar.customConfig + else + config.mods.hyprland.ironbar.customConfig; }; }; } diff --git a/modules/programs/kde_connect.nix b/modules/programs/kdeConnect.nix similarity index 88% rename from modules/programs/kde_connect.nix rename to modules/programs/kdeConnect.nix index 153a149..da4cc22 100644 --- a/modules/programs/kde_connect.nix +++ b/modules/programs/kdeConnect.nix @@ -8,7 +8,7 @@ { options.mods = { - kde_connect.enable = lib.mkOption { + kdeConnect.enable = lib.mkOption { default = false; type = lib.types.bool; example = true; @@ -18,7 +18,7 @@ }; }; - config = lib.mkIf config.mods.kde_connect.enable ( + config = lib.mkIf config.mods.kdeConnect.enable ( lib.optionalAttrs (options ? networking.firewall) { networking.firewall = { allowedTCPPortRanges = [ diff --git a/modules/programs/media.nix b/modules/programs/media.nix index deb895f..a8f3cf5 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -21,7 +21,7 @@ Additional media packages. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -29,7 +29,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -78,13 +78,13 @@ obs-studio.enable = true; obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; } - // config.mods.media.special_programs + // config.mods.media.specialPrograms else - config.mods.media.special_programs; + config.mods.media.specialPrograms; services = if config.mods.media.useBasePackages then - config.mods.media.special_services + config.mods.media.specialServices else - config.mods.media.special_services; + config.mods.media.specialServices; }; } diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix new file mode 100644 index 0000000..9d8bc50 --- /dev/null +++ b/modules/programs/mime.nix @@ -0,0 +1,154 @@ +# Copyright (c) 2020-2021 Mihai Fufezan +# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix +{ + config, + lib, + options, + ... +}: +{ + options.mods.mime = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables mime handling with nix"; + }; + imageTypes = lib.mkOption { + default = [ + "png" + "svg" + "jpeg" + "gif" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Image mime handlers"; + }; + videoTypes = lib.mkOption { + default = [ + "mp4" + "avi" + "mkv" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Video mime handlers"; + }; + audioTypes = lib.mkOption { + default = [ + "mp3" + "flac" + "wav" + "aac" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Audio mime handlers"; + }; + browserTypes = lib.mkOption { + default = [ + "json" + "x-extension-htm" + "x-extension-html" + "x-extension-shtml" + "x-extension-xht" + "x-extension-xhtml" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Browser mime handlers"; + }; + browserXTypes = lib.mkOption { + default = [ + "about" + "ftp" + "http" + "https" + "unknown" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Browser X mime handlers"; + }; + browserApplications = lib.mkOption { + default = [ "firefox" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling browser mime types"; + }; + imageApplications = lib.mkOption { + default = [ "imv" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling image mime types"; + }; + videoApplications = lib.mkOption { + default = [ "mpv" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling video mime types"; + }; + audioApplications = lib.mkOption { + default = [ "io.bassi.Amberol" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling audio mime types"; + }; + # TODO additional config + }; + config = lib.optionalAttrs (options ? home) { + xdg = + let + xdgAssociations = + type: program: list: + builtins.listToAttrs ( + map (e: { + name = "${type}/${e}"; + value = program; + }) list + ); + + imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes; + videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes; + audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes; + browserAc = + (xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes) + // (xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications + config.mods.mime.browserXTypes + ); + associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( + # TODO make configurable + { + "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; + "text/html" = config.mods.mime.browserApplications; + "text/plain" = [ "neovide" ]; + "x-scheme-handler/chrome" = [ "com.brave.browser" ]; + "inode/directory" = [ "yazi" ]; + } + // imageAc + // audioAc + // videoAc + // browserAc + ); + in + lib.mkIf config.mods.mime.enable { + enable = true; + cacheHome = config.home.homeDirectory + "/.local/cache"; + + mimeApps = { + enable = true; + defaultApplications = associations; + }; + + userDirs = { + enable = true; + createDirectories = true; + extraConfig = { + XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + pws = "${config.home.homeDirectory}/pws"; + }; + }; + }; + }; +} diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index 80144b8..ad75719 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -17,14 +17,18 @@ config = lib.mkIf config.mods.printing.enable ( lib.optionalAttrs (options ? services.printing) { # Enable CUPS to print documents. - services.printing.enable = true; - services.printing.browsing = true; - services.printing.drivers = [ pkgs.hplip ]; - services.printing.startWhenNeeded = true; # optional - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; + services = { + printing = { + enable = true; + browsing = true; + drivers = [ pkgs.hplip ]; + startWhenNeeded = true; # optional + }; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; }; } ); diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 8a3889e..5a6ddd1 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -7,13 +7,13 @@ }: { options.mods.scripts = { - change-brightness = lib.mkOption { + changeBrightness = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Enables the change-brightness script"; }; - audio-control = lib.mkOption { + audioControl = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -28,8 +28,8 @@ config = ( lib.optionalAttrs (options ? home.packages) { home.packages = [ - (lib.mkIf config.mods.scripts.change-brightness ( - pkgs.writeShellScriptBin "change-brightness" '' + (lib.mkIf config.mods.scripts.changeBrightness ( + pkgs.writeShellScriptBin "changeBrightness" '' set_brightness() { brightnessctl set "$1" CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') @@ -41,8 +41,8 @@ fi '' )) - (lib.mkIf config.mods.scripts.audio-control ( - pkgs.writeShellScriptBin "audio-control" '' + (lib.mkIf config.mods.scripts.audioControl ( + pkgs.writeShellScriptBin "audioControl" '' ncspot() { NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index 04f877e..f4a5def 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -17,7 +17,7 @@ Enables starship prompt ''; }; - use_default_prompt = lib.mkOption { + useDefaultPrompt = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -25,7 +25,7 @@ Enables preconfigured prompt ''; }; - custom_prompt = lib.mkOption { + customPrompt = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -49,9 +49,9 @@ { enable = true; interactiveOnly = true; - presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ]; + presets = lib.mkIf config.mods.starship.useDefaultPrompt [ "pastel-powerline" ]; settings = - lib.mkIf config.mods.starship.use_default_prompt { + lib.mkIf config.mods.starship.useDefaultPrompt { # derived from https://starship.rs/presets/pastel-powerline format = "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)"; right_format = "$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os"; @@ -170,7 +170,7 @@ format = "[ $time ]($style)"; }; } - // config.mods.starship.custom_prompt; + // config.mods.starship.customPrompt; }; } );