From e7be7c468842944a9877ad6ff948afd0d1cb2dbe Mon Sep 17 00:00:00 2001 From: arjan-s Date: Fri, 30 Sep 2022 18:53:39 +0200 Subject: [PATCH] pls: add module (#3285) --- .github/CODEOWNERS | 3 +++ modules/misc/news.nix | 7 +++++ modules/modules.nix | 1 + modules/programs/pls.nix | 36 ++++++++++++++++++++++++++ tests/default.nix | 1 + tests/modules/programs/pls/bash.nix | 29 +++++++++++++++++++++ tests/modules/programs/pls/default.nix | 5 ++++ tests/modules/programs/pls/fish.nix | 36 ++++++++++++++++++++++++++ tests/modules/programs/pls/zsh.nix | 32 +++++++++++++++++++++++ 9 files changed, 150 insertions(+) create mode 100644 modules/programs/pls.nix create mode 100644 tests/modules/programs/pls/bash.nix create mode 100644 tests/modules/programs/pls/default.nix create mode 100644 tests/modules/programs/pls/fish.nix create mode 100644 tests/modules/programs/pls/zsh.nix diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6cd830fe4..281fc006a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -243,6 +243,9 @@ Makefile @thiagokokada /modules/programs/piston-cli.nix @ethancedwards8 +/modules/programs/pls.nix @arjan-s +/tests/modules/programs/pls @arjan-s + /modules/programs/powerline-go.nix @DamienCassou /modules/programs/pubs.nix @loicreynier diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 72448faa0..e0a313e7f 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -719,6 +719,13 @@ in A new module is available: 'programs.tmate'. ''; } + + { + time = "2022-09-29T13:43:02+00:00"; + message = '' + A new module is available: 'programs.pls'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index e4a863a58..4f3b3fdeb 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -142,6 +142,7 @@ let ./programs/pidgin.nix ./programs/pistol.nix ./programs/piston-cli.nix + ./programs/pls.nix ./programs/powerline-go.nix ./programs/pubs.nix ./programs/pylint.nix diff --git a/modules/programs/pls.nix b/modules/programs/pls.nix new file mode 100644 index 000000000..1c5af3782 --- /dev/null +++ b/modules/programs/pls.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.pls; + + aliases = { + ls = "${cfg.package}/bin/pls"; + ll = + "${cfg.package}/bin/pls -d perms -d user -d group -d size -d mtime -d git"; + }; + +in { + meta.maintainers = [ hm.maintainers.kalhauge ]; + + options.programs.pls = { + enable = + mkEnableOption "pls, a modern replacement for ls"; + + package = mkPackageOption pkgs "pls" { }; + + enableAliases = mkEnableOption "recommended pls aliases"; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + programs.bash.shellAliases = mkIf cfg.enableAliases aliases; + + programs.fish.shellAliases = mkIf cfg.enableAliases aliases; + + programs.zsh.shellAliases = mkIf cfg.enableAliases aliases; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 40b82f681..da7f539ee 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -102,6 +102,7 @@ import nmt { ./modules/programs/pandoc ./modules/programs/pet ./modules/programs/pistol + ./modules/programs/pls ./modules/programs/powerline-go ./modules/programs/pubs ./modules/programs/qutebrowser diff --git a/tests/modules/programs/pls/bash.nix b/tests/modules/programs/pls/bash.nix new file mode 100644 index 000000000..d6fff5f4e --- /dev/null +++ b/tests/modules/programs/pls/bash.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs = { + bash.enable = true; + + pls = { + enable = true; + enableAliases = true; + package = config.lib.test.mkStubPackage { outPath = "@pls@"; }; + }; + }; + + test.stubs.pls = { }; + + nmt.script = '' + assertFileExists home-files/.bashrc + assertFileContains \ + home-files/.bashrc \ + "alias ls='@pls@/bin/pls'" + assertFileContains \ + home-files/.bashrc \ + "alias ll='@pls@/bin/pls -d perms -d user -d group -d size -d mtime -d git'" + ''; + }; +} diff --git a/tests/modules/programs/pls/default.nix b/tests/modules/programs/pls/default.nix new file mode 100644 index 000000000..fe80aad54 --- /dev/null +++ b/tests/modules/programs/pls/default.nix @@ -0,0 +1,5 @@ +{ + pls-bash = ./bash.nix; + pls-fish = ./fish.nix; + pls-zsh = ./zsh.nix; +} diff --git a/tests/modules/programs/pls/fish.nix b/tests/modules/programs/pls/fish.nix new file mode 100644 index 000000000..f4b94b73c --- /dev/null +++ b/tests/modules/programs/pls/fish.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs = { + fish.enable = true; + + pls = { + enable = true; + enableAliases = true; + package = config.lib.test.mkStubPackage { outPath = "@pls@"; }; + }; + }; + + # Needed to avoid error with dummy fish package. + xdg.dataFile."fish/home-manager_generated_completions".source = + mkForce (builtins.toFile "empty" ""); + + test.stubs = { + pls = { }; + fish = { }; + }; + + nmt.script = '' + assertFileExists home-files/.config/fish/config.fish + assertFileContains \ + home-files/.config/fish/config.fish \ + "alias ls '@pls@/bin/pls'" + assertFileContains \ + home-files/.config/fish/config.fish \ + "alias ll '@pls@/bin/pls -d perms -d user -d group -d size -d mtime -d git'" + ''; + }; +} diff --git a/tests/modules/programs/pls/zsh.nix b/tests/modules/programs/pls/zsh.nix new file mode 100644 index 000000000..f3bcbf2a8 --- /dev/null +++ b/tests/modules/programs/pls/zsh.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs = { + zsh.enable = true; + + pls = { + enable = true; + enableAliases = true; + package = config.lib.test.mkStubPackage { outPath = "@pls@"; }; + }; + }; + + test.stubs = { + pls = { }; + zsh = { }; + }; + + nmt.script = '' + assertFileExists home-files/.zshrc + assertFileContains \ + home-files/.zshrc \ + "alias ls='@pls@/bin/pls'" + assertFileContains \ + home-files/.zshrc \ + "alias ll='@pls@/bin/pls -d perms -d user -d group -d size -d mtime -d git'" + ''; + }; +}