feat: renamed computers to hosts
This commit is contained in:
parent
f6af310a18
commit
b03c70b486
34 changed files with 5 additions and 6 deletions
16
hosts/shared/aliases.nix
Normal file
16
hosts/shared/aliases.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{pkgs, ...}: let
|
||||
ezaOptions = "--colour=always --icons=never --group-directories-first --octal-permissions";
|
||||
in {
|
||||
config = {
|
||||
environment = {
|
||||
shellAliases = builtins.mapAttrs (_: v: "${v} ${ezaOptions}") {
|
||||
l = "eza -alh";
|
||||
ls = "eza";
|
||||
ll = "eza -l";
|
||||
};
|
||||
systemPackages = [
|
||||
pkgs.eza
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
20
hosts/shared/default.nix
Normal file
20
hosts/shared/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./fish.nix
|
||||
./sddm.nix
|
||||
./git.nix
|
||||
./qutebrowser.nix
|
||||
./pipewire.nix
|
||||
./mpd.nix
|
||||
./fonts.nix
|
||||
./emacs.nix
|
||||
./ssh.nix
|
||||
./direnv.nix
|
||||
./xonsh.nix
|
||||
./aliases.nix
|
||||
./libvirt.nix
|
||||
./users.nix
|
||||
./support.nix
|
||||
./river.nix
|
||||
];
|
||||
}
|
23
hosts/shared/direnv.nix
Normal file
23
hosts/shared/direnv.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.direnv;
|
||||
in {
|
||||
options.alqueva.direnv = {
|
||||
enable = lib.mkEnableOption "direnv";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
silent = true;
|
||||
nix-direnv.enable = true;
|
||||
direnvrcExtra = ''
|
||||
echo "direnv version: ${config.programs.direnv.package.version}"
|
||||
echo "shell version: ${config.users.defaultUserShell.pname} ${config.users.defaultUserShell.version}"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
19
hosts/shared/emacs.nix
Normal file
19
hosts/shared/emacs.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.emacs;
|
||||
in {
|
||||
options.alqueva.emacs = {
|
||||
enable = lib.mkEnableOption "Emacs";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = [inputs.pankomacs.packages.${pkgs.system}.pankomacs];
|
||||
sessionVariables."EDITOR" = lib.mkDefault "emacs";
|
||||
};
|
||||
};
|
||||
}
|
37
hosts/shared/fish.nix
Normal file
37
hosts/shared/fish.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.fish;
|
||||
in {
|
||||
options.alqueva.fish = {
|
||||
enable = lib.mkEnableOption "fish";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
fish = {
|
||||
vendor = {
|
||||
functions.enable = true;
|
||||
config.enable = true;
|
||||
completions.enable = true;
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
starship = {
|
||||
enable = true;
|
||||
presets = ["no-nerd-font"];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs.fishPlugins)
|
||||
fzf-fish
|
||||
forgit
|
||||
autopair
|
||||
;
|
||||
};
|
||||
};
|
||||
}
|
80
hosts/shared/fonts.nix
Normal file
80
hosts/shared/fonts.nix
Normal file
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.fonts;
|
||||
inherit (lib) types mkOption;
|
||||
mkStringsOption = default: letterform:
|
||||
mkOption {
|
||||
type = types.listOf types.str;
|
||||
inherit default;
|
||||
description = "The default fonts for ${letterform}.";
|
||||
};
|
||||
mkPackagesOption = default: letterform:
|
||||
mkOption {
|
||||
type = types.listOf types.package;
|
||||
inherit default;
|
||||
description = "The packages you want to use for your ${letterform} fonts.";
|
||||
};
|
||||
in {
|
||||
options.alqueva.fonts = {
|
||||
enable = lib.mkEnableOption "" // {description = "Whether you want to use this fonts module.";};
|
||||
packages =
|
||||
{
|
||||
extra = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
description = "Extra font packages you want installed.";
|
||||
};
|
||||
}
|
||||
// builtins.mapAttrs (_n: v: mkPackagesOption v.default v.letterform) {
|
||||
sansSerif = {
|
||||
default = [pkgs.roboto];
|
||||
letterform = "sans-serif";
|
||||
};
|
||||
monospace = {
|
||||
default = [pkgs.roboto-mono];
|
||||
letterform = "monospace";
|
||||
};
|
||||
serif = {
|
||||
default = [pkgs.roboto-serif];
|
||||
letterform = "serif";
|
||||
};
|
||||
emoji = {
|
||||
default = [pkgs.noto-fonts-color-emoji];
|
||||
letterform = "emoji";
|
||||
};
|
||||
};
|
||||
names = builtins.mapAttrs (_n: v: mkStringsOption v.default v.letterform) {
|
||||
sansSerif = {
|
||||
default = ["Roboto"];
|
||||
letterform = "sans-serif";
|
||||
};
|
||||
monospace = {
|
||||
default = ["Roboto Mono"];
|
||||
letterform = "monospace";
|
||||
};
|
||||
serif = {
|
||||
default = ["Roboto Serif"];
|
||||
letterform = "serif";
|
||||
};
|
||||
emoji = {
|
||||
default = ["Noto Color Emoji"];
|
||||
letterform = "emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
fonts = {
|
||||
packages = builtins.concatLists (builtins.attrValues cfg.packages);
|
||||
fontconfig = {
|
||||
defaultFonts = {
|
||||
inherit (cfg.names) sansSerif monospace serif emoji;
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
118
hosts/shared/git.nix
Normal file
118
hosts/shared/git.nix
Normal file
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.git;
|
||||
in {
|
||||
options.alqueva.git = {
|
||||
enable = lib.mkEnableOption "git";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
config = {
|
||||
alias = {
|
||||
a = "add";
|
||||
aa = "add .";
|
||||
aliases = "! f(){ TOP=$(expr $(grep -n \"^\\\\\\\\[alias\" /etc/gitconfig | sed -e 's|:.*||') + 1) && for LINE_NUMBER in $(grep -n \"^\\\\\\\\[\" /etc/gitconfig | sed -e 's|:.*||'); do [ $TOP -lt $LINE_NUMBER ] && BOTTOM=$(expr $LINE_NUMBER - 2 ) && break; done; sed -n \"\${TOP},\${BOTTOM}p\" /etc/gitconfig; }; f | sed -e 's|^ ||'";
|
||||
ap = "add -p";
|
||||
b = "! git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's|refs/heads/||'";
|
||||
bD = "branch -D";
|
||||
ba = "branch -a";
|
||||
bc = "branch -c";
|
||||
bd = "branch -d";
|
||||
br = "branch -r";
|
||||
c = "! git commit --verbose; git push";
|
||||
ca = "! git c --amend";
|
||||
cf = "! git commit --verbose; git push --force";
|
||||
ch = "switch -C";
|
||||
change = "switch -C";
|
||||
cl = "clone";
|
||||
cm = "commit -m";
|
||||
co = "checkout "; # old/bad practice - switches branch and can modify worktree
|
||||
cp = "cherry-pick ; usually abusive; sometimes necessary";
|
||||
create = "! git bc";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
ds = "diff --stat";
|
||||
expire = "! git fsck --unreachable --dangling --no-reflogs; git reflog expire --expire=now --all; git gc --prune=now";
|
||||
f = "fetch";
|
||||
fe = "fetch";
|
||||
filelog = "log --patch";
|
||||
find = "! git ls-files | grep -i";
|
||||
fl = "log --patch";
|
||||
fp = "fetch --prune ; removes branches not in upstream";
|
||||
gr = "grep -Ii";
|
||||
grep = "grep -Ii";
|
||||
greproot = "! git grr";
|
||||
grr = "! f() { ROOT=$(git rev-parse --show-toplevel) && cd $ROOT && git grep --full-name -In $1 | xargs -I{} echo $ROOT/{}; }; f";
|
||||
invert = "revert";
|
||||
l = "log --oneline --graph --decorate --parents";
|
||||
lasttag = "describe --tags --abbrev=0";
|
||||
ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat";
|
||||
lref = "log --oneline --graph --decorate --parents --reflog";
|
||||
ls = "log --pretty=format:\"%C(yellow)%h\\\\ %ad%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --date=short";
|
||||
lt = "describe --tags --abbrev=0";
|
||||
mailmap = "! f(){ printf \\\"$(git config user.name) <$(git config user.email)> <\${1}>\\\" > mailmap; git filter-repo --force --mailmap mailmap; }; f";
|
||||
one = "log -1 ; no input displays HEAD";
|
||||
pd = "push -d";
|
||||
pf = "push --force";
|
||||
pl = "pull";
|
||||
pp = "pull --prune ; removes branches not in upstream";
|
||||
pr = "pull --rebase ; rebases commits onto upstream";
|
||||
ps = "push";
|
||||
pt = "! f(){ git push $1 tag $2; }; f";
|
||||
r = "rebase";
|
||||
ra = "rebase --skip";
|
||||
rc = "rebase --continue";
|
||||
re = "restore";
|
||||
ref = "reflog";
|
||||
ri = "rebase --interactive";
|
||||
rm = "rm -r";
|
||||
rmf = "! git rm --force";
|
||||
rq = "rebase --quit";
|
||||
rs = "rebase --abort";
|
||||
sh = "show";
|
||||
st = "status";
|
||||
sw = "switch ; new checkout - only switching branch w/o restoring worktree";
|
||||
sync = "! git fe upstream; git rebase upstream/main; git push";
|
||||
t = "tag";
|
||||
td = "tag --delete";
|
||||
un = "restore --staged --worktree";
|
||||
uncommit = "switch -C";
|
||||
undo = "restore --staged --worktree";
|
||||
undo-specific = "! f(){ git restore --source=\\\"$1\\\" $2; }; f";
|
||||
undo-stage = "restore";
|
||||
undo-unstaged = "restore";
|
||||
undo-work = "restore --staged --worktree";
|
||||
undo-wt = "restore --staged --worktree";
|
||||
unstage = "restore --staged";
|
||||
wa = "! f(){ git worktree add ../$1 $1; }; f";
|
||||
wc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone $1 $BRANCH; }; f";
|
||||
wcreate = "! git wc";
|
||||
wmv = "worktree move";
|
||||
wnew = "! f(){ git worktree add ../$1; cd ../$1; git push --set-upstream origin $1; }; f";
|
||||
wr = "worktree remove";
|
||||
wrm = "! git wr";
|
||||
wsc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone --depth=1 --single-branch $1 $BRANCH; }; f";
|
||||
wshallow = "! git wsc";
|
||||
};
|
||||
branch = {
|
||||
autosetuprebase = "always";
|
||||
};
|
||||
color = {
|
||||
branch = "auto";
|
||||
diff = "auto";
|
||||
status = "auto";
|
||||
};
|
||||
user = {
|
||||
email = "balkenix@outlook.com";
|
||||
name = "Artur Manuel";
|
||||
signingKey = "~/.ssh/id_ed25519.pub";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
22
hosts/shared/libvirt.nix
Normal file
22
hosts/shared/libvirt.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.libvirt;
|
||||
in {
|
||||
options.alqueva.libvirt = {
|
||||
enable = lib.mkEnableOption "libvirt";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
qemu.package = pkgs.qemu_kvm;
|
||||
};
|
||||
|
||||
programs.virt-manager.enable = true;
|
||||
networking.nftables.enable = true;
|
||||
};
|
||||
}
|
24
hosts/shared/mpd.nix
Normal file
24
hosts/shared/mpd.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
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 =
|
||||
[pkgs.mpd]
|
||||
++ lib.optional cfg.ncmpcpp pkgs.ncmpcpp;
|
||||
};
|
||||
}
|
26
hosts/shared/pipewire.nix
Normal file
26
hosts/shared/pipewire.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.pipewire;
|
||||
in {
|
||||
options.alqueva.pipewire = {
|
||||
enable = lib.mkEnableOption "PipeWire";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
jack.enable = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.pwvucontrol
|
||||
pkgs.helvum
|
||||
];
|
||||
};
|
||||
}
|
18
hosts/shared/qutebrowser.nix
Normal file
18
hosts/shared/qutebrowser.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.qutebrowser;
|
||||
in {
|
||||
options.alqueva.qutebrowser = {
|
||||
enable = lib.mkEnableOption "qutebrowser";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
pkgs.qutebrowser
|
||||
];
|
||||
};
|
||||
}
|
38
hosts/shared/river.nix
Normal file
38
hosts/shared/river.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.river;
|
||||
in {
|
||||
options.alqueva.river = {
|
||||
enable = lib.mkEnableOption "River";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
alqueva.support.wayland = true;
|
||||
|
||||
programs.river = {
|
||||
enable = true;
|
||||
xwayland.enable = false;
|
||||
extraPackages = [
|
||||
pkgs.wbg
|
||||
pkgs.kanshi
|
||||
];
|
||||
};
|
||||
|
||||
xdg.portal.wlr = {
|
||||
enable = true;
|
||||
settings = {
|
||||
screencast = {
|
||||
output_name = "HDMI-A-1";
|
||||
chooser_type = "simple";
|
||||
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
};
|
||||
}
|
25
hosts/shared/sddm.nix
Normal file
25
hosts/shared/sddm.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.sddm;
|
||||
in {
|
||||
options.alqueva.sddm = {
|
||||
enable = lib.mkEnableOption "sddm";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.displayManager.sddm = {
|
||||
wayland = {
|
||||
enable = true;
|
||||
compositor = "kwin";
|
||||
};
|
||||
enable = true;
|
||||
theme = "where_is_my_sddm_theme";
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.i-found-my-sddm-theme
|
||||
];
|
||||
};
|
||||
}
|
19
hosts/shared/ssh.nix
Normal file
19
hosts/shared/ssh.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.openssh;
|
||||
in {
|
||||
options.alqueva.openssh = {
|
||||
enable = lib.mkEnableOption "OpenSSH";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
ssh.enableAskPassword = true;
|
||||
seahorse.enable = true;
|
||||
};
|
||||
services.openssh.enable = true;
|
||||
};
|
||||
}
|
46
hosts/shared/support.nix
Normal file
46
hosts/shared/support.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.support;
|
||||
inherit (lib) mkEnableOption;
|
||||
in {
|
||||
options.alqueva.support = {
|
||||
wayland = mkEnableOption "wayland support";
|
||||
};
|
||||
config = lib.mkIf cfg.wayland {
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.common = {
|
||||
default = [
|
||||
"gtk"
|
||||
"kde"
|
||||
];
|
||||
};
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-kde
|
||||
];
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = builtins.attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
slurp
|
||||
grim
|
||||
wf-recorder
|
||||
fuzzel
|
||||
kitty
|
||||
wl-clipboard
|
||||
;
|
||||
};
|
||||
sessionVariables = {
|
||||
"NIXOS_OZONE_WL" = "1";
|
||||
"QT_QPA_PLATFORM" = "wayland";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
51
hosts/shared/users.nix
Normal file
51
hosts/shared/users.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) types mkOption;
|
||||
createTmpfilesEntries = entries: builtins.attrValues (builtins.mapAttrs (dest: path: "L+ %h/${dest} - - - - ${path}") entries);
|
||||
cfg = config.alqueva.users;
|
||||
in {
|
||||
options.alqueva.users = mkOption {
|
||||
description = "Users to have on the system.";
|
||||
default = {};
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = {
|
||||
tmpfiles = mkOption {
|
||||
description = "tmpfiles";
|
||||
type = types.attrsOf types.path;
|
||||
default = {};
|
||||
};
|
||||
packages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
description = "Packages installed to the the defined user.";
|
||||
};
|
||||
groups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "Groups to add the defined user to.";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
config = {
|
||||
users.users =
|
||||
builtins.mapAttrs (user: ucfg: {
|
||||
description = user;
|
||||
isNormalUser = true;
|
||||
extraGroups = ucfg.groups;
|
||||
inherit (ucfg) packages;
|
||||
shell = config.programs.xonsh.package;
|
||||
})
|
||||
cfg;
|
||||
|
||||
systemd.user.tmpfiles.users =
|
||||
builtins.mapAttrs (_: ucfg: {
|
||||
rules = createTmpfilesEntries ucfg.tmpfiles;
|
||||
})
|
||||
cfg;
|
||||
};
|
||||
}
|
50
hosts/shared/xonsh.nix
Normal file
50
hosts/shared/xonsh.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.alqueva.xonsh;
|
||||
inherit (pkgs) fetchFromGitHub;
|
||||
in {
|
||||
options.alqueva.xonsh = {
|
||||
enable = lib.mkEnableOption "xonsh";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs = {
|
||||
xonsh = {
|
||||
config =
|
||||
"from xonsh.xontribs import get_xontribs\n"
|
||||
+ lib.concatStringsSep "\n" (builtins.attrValues (builtins.mapAttrs (n: v: "aliases['${n}'] = '${v}'\n") config.environment.shellAliases))
|
||||
+ ''
|
||||
for xontrib in get_xontribs():
|
||||
xontrib load @(xontrib)
|
||||
|
||||
execx($(zoxide init xonsh --cmd j), 'exec', __xonsh__.ctx, filename='zoxide')
|
||||
'';
|
||||
package = pkgs.xonsh.override {
|
||||
extraPackages = ps: [
|
||||
(let
|
||||
name = "xontrib-fish-completer";
|
||||
version = "0.0.1";
|
||||
in
|
||||
ps.buildPythonPackage {
|
||||
inherit name version;
|
||||
src = fetchFromGitHub {
|
||||
owner = "xonsh";
|
||||
repo = name;
|
||||
rev = version;
|
||||
hash = "sha256-PhhdZ3iLPDEIG9uDeR5ctJ9zz2+YORHBhbsiLrJckyA=";
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.zoxide
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue