{"id":18382382,"url":"https://github.com/ulinja/saplib","last_synced_at":"2026-04-16T04:31:41.012Z","repository":{"id":174697864,"uuid":"366538356","full_name":"ulinja/saplib","owner":"ulinja","description":"A modern Arch Linux extension and scripting library.","archived":false,"fork":false,"pushed_at":"2021-06-22T17:48:20.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T23:41:59.390Z","etag":null,"topics":["archlinux","archlinuxinstallation","linux","linux-configuration","linux-desktop","linux-server","system-administration"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ulinja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-11T23:33:38.000Z","updated_at":"2021-06-22T17:48:23.000Z","dependencies_parsed_at":"2023-07-30T07:15:46.461Z","dependency_job_id":null,"html_url":"https://github.com/ulinja/saplib","commit_stats":null,"previous_names":["ulinja/saplib"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulinja%2Fsaplib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulinja%2Fsaplib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulinja%2Fsaplib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulinja%2Fsaplib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ulinja","download_url":"https://codeload.github.com/ulinja/saplib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248480235,"owners_count":21110935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux","archlinuxinstallation","linux","linux-configuration","linux-desktop","linux-server","system-administration"],"created_at":"2024-11-06T01:04:59.306Z","updated_at":"2026-04-16T04:31:35.981Z","avatar_url":"https://github.com/ulinja.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sapling\n\nSapling is an extended Arch Linux base installation.\nIt runs using its own multi-language library called [Saplib](#saplib), which\nprovides useful commandline functions and scripting libraries.\n\n## About\n\nMuch like \"vanilla\" Arch Linux, it is by default a *base system*, customizable\nto suit many different use cases: be it a headless server, low-power-footprint\nlaptop or a high end workstation.\n\nSapling is designed with commandline-usage in mind, albeit extending the traditional\nLinux experience. With carefully customized versions of tried-and-true utilities\nor modern reimplementations of them, it provides **system-wide** integration of,\namong others:\n\n- the `fish` shell (as the default interactive shell)\n- the `bat` pager utility\n- the `exa` file discovery utility\n- fast commandline navigation using `fzf`\n- a custom, full IDE-like flavor of the `neovim` text editor\n\n\u003e :grey_exclamation: *`fish` is the default login shell in Sapling, but `bash` and `zsh`\n\u003e are also fully supported and Saplib implements the same useful functions/aliases\n\u003e for all three shells.*\n\n## Installation\n\n\u003e :heavy_exclamation_mark: *Sapling sets default configurations for many **core system settings**,\n\u003e the root user and the above-mentioned applications on a system-wide scale.\n\u003e Although it should work on existing systems, it is intended for building your\n\u003e system around it. Installation should occur after bootstrapping your arch linux\n\u003e installation, and before creating any non-root users.*\n\nSimply run the Makefile as the root user:\n\n```bash\n    git clone https://github.com/ulinja/sapling.git\n    cd sapling\n    make install\n```\n\nYou must reboot the system for all changes to take effect (as Sapling sets some\ndefaults in different global environment files).\n\n## Saplib\n\nSaplib is a custom library for multiple scripting languages, with system\nadministration and shell scripting in mind.\nIt provides interactive shell aliases for `bash`, `zsh` and `fish`.\nLibrary functions for use in scripting are also provided for all the above.\n\nSapling sets global default configurations for:\n\n* the root shell, new user's shells\n* new user's home directory structure (`/etc/skel`). Customizable before installation.\n* default applications and shell behaviour\n* `bash`\n* `zsh`\n* `fish`\n* `neovim`\n\n### Dependencies\n\nAll dependencies which get installed alongside Saplib are listed at the top\nof the [Makefile](Makefile).\nNote that `texlive-most` is quite heavy in terms of disk space (2 GB), and\ncompletely optional: feel free to remove it from `NVIM_PACMAN_DEPS` in the\nMakefile prior to installation.\n\n## Updating\n\nClone/Pull the latest Sapling master and run `make update`.\n\n## Uninstallation\n\n:heavy_exclamation_mark: *An uninstallation script is not implemented and likely never will be.*\n\n### Additional Information / Hacking\n\n### BASH\n\nSaplib's bash scripts are stored in `/usr/local/lib/saplib/bash/src`.\n`aliases.sh` and `prompt.sh` are sourced directly in `/etc/bash.bashrc`, as they\nare only needed when bash is running interactively.\n\nAll other saplib bash scripts define functions for importing and using in bash\nscripts.\nA wrapper script is used to source them all at once. A global environment\nvariable pointing to the wrapper script is set in `/etc/environment`, called\n`$SAPLIB_BASH`. This allows calling `source $SAPLIB_BASH` in any shell scripts\nin which you want to make use of saplib's bash functions.\n\n### FISH\n\nSaplib's fish scripts are stored under `/usr/local/lib/saplib/fish/src` and\nglobally sourced by a symlink inside `/etc/fish/conf.d` pointing at the wrapper\nscript `/usr/local/lib/saplib/fish/saplib.fish`, which loads all of saplib's fish\nfunctions. See the [fish documentation](https://fishshell.com/docs/current/index.html#initialization-files) for more information.\n\nSaplib also comes with some 3rd Party fish plugins, licensed under LGPLv3.\n(Currently just [this one](https://github.com/laughedelic/pisces))\n\n### PYTHON\n\nSaplib python is not yet implemented.\nInstallation of the saplib python library will be handled via simple pip installation.\n\n### Roadmap\n\n- A python library\n- Desktop presets through Ansible playbooks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulinja%2Fsaplib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulinja%2Fsaplib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulinja%2Fsaplib/lists"}