{"id":27867761,"url":"https://github.com/ralish/psdotfiles","last_synced_at":"2025-05-04T22:53:28.471Z","repository":{"id":44756059,"uuid":"53766770","full_name":"ralish/PSDotFiles","owner":"ralish","description":"Bringing simple dotfiles management to Windows with PowerShell","archived":false,"fork":false,"pushed_at":"2024-10-04T06:30:57.000Z","size":424,"stargazers_count":99,"open_issues_count":8,"forks_count":7,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-12-04T03:34:45.846Z","etag":null,"topics":["dotfiles","dotfiles-manager","powershell"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ralish.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2016-03-13T04:05:57.000Z","updated_at":"2024-12-01T02:46:56.000Z","dependencies_parsed_at":"2024-05-27T23:18:23.065Z","dependency_job_id":"3c287800-3bf4-473c-89d6-d39ab9901ec8","html_url":"https://github.com/ralish/PSDotFiles","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FPSDotFiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FPSDotFiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FPSDotFiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralish%2FPSDotFiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ralish","download_url":"https://codeload.github.com/ralish/PSDotFiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252411818,"owners_count":21743604,"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":["dotfiles","dotfiles-manager","powershell"],"created_at":"2025-05-04T22:53:27.937Z","updated_at":"2025-05-04T22:53:28.454Z","avatar_url":"https://github.com/ralish.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"PSDotFiles\n==========\n\n[![pwsh ver](https://img.shields.io/powershellgallery/v/PSDotFiles)](https://www.powershellgallery.com/packages/PSDotFiles)\n[![pwsh dl](https://img.shields.io/powershellgallery/dt/PSDotFiles)](https://www.powershellgallery.com/packages/PSDotFiles)\n[![license](https://img.shields.io/github/license/ralish/PSDotFiles)](https://choosealicense.com/licenses/mit/)\n\nA simple *dotfiles* management framework for Windows built on PowerShell.\n\n- [Purpose](#purpose)\n- [Requirements](#requirements)\n- [Installing](#installing)\n- [Configuring](#configuring)\n- [Commands](#commands)\n- [Folder structure](#folder-structure)\n- [Troubleshooting](#troubleshooting)\n- [License](#license)\n\nPurpose\n-------\n\nPSDotFiles aims to provide a simple yet powerful and flexible framework for managing your dotfiles on Windows systems. The design is heavily influenced by [GNU Stow](https://www.gnu.org/software/stow/), which works by symlinking the contents of one or more folders into another folder. In this way, a collection of dotfiles can be easily divided into per-application folders (e.g. `git`, `sublime`, `vim`, etc...).\n\nPSDotFiles implements this basic design but with a PowerShell-centric approach using a simple set of cmdlets.\n\nRequirements\n------------\n\n- PowerShell 5.0 (or later)\n\nInstalling\n----------\n\n### PowerShellGet\n\nThe module is published to the [PowerShell Gallery](https://www.powershellgallery.com/packages/PSDotFiles):\n\n```posh\nInstall-Module -Name PSDotFiles\n```\n\n### ZIP File\n\nDownload the [ZIP file](https://github.com/ralish/PSDotFiles/archive/stable.zip) of the latest release and unpack it to one of the following locations:\n\n- Current user: `C:\\Users\\\u003cyour.account\u003e\\Documents\\WindowsPowerShell\\Modules\\PSDotFiles`\n- All users: `C:\\Program Files\\WindowsPowerShell\\Modules\\PSDotFiles`\n\n### Git Clone\n\nYou can also clone the repository into one of the above locations if you'd like the ability to easily update it via Git.\n\n### Did it work?\n\nYou can check that PowerShell is able to locate the module by running the following at a PowerShell prompt:\n\n```posh\nGet-Module PSDotFiles -ListAvailable\n```\n\nConfiguring\n-----------\n\nBefore you can use PSDotFiles you should set the `$DotFilesPath` variable to the location of your dotfiles folder. For example:\n\n```posh\n$DotFilesPath = \"C:\\Users\\\u003cyour.account\u003e\\dotfiles\"\n```\n\nSo that you don't have to enter this into every new PowerShell session it's a good idea to add this to your PowerShell profile:\n\n- All PowerShell hosts (including the ISE): `$HOME\\Documents\\WindowsPowerShell\\profile.ps1`\n- Only the **Microsoft.PowerShell** shell: `$HOME\\Documents\\WindowsPowerShell\\Microsoft.PowerShell_profile.ps1`\n\nIf you're unsure which to use, just choose the first.\n\nThere are some additional variables you can set in your profile which modify default behaviour:\n\n- `$DotFilesAllowNestedSymlinks` (default: `$false`)  \n  Allow directory symlinks to destinations outside of the source component path earlier in the path hierarchy.\n- `$DotFilesAutodetect` (default: `$false`)  \n  Perform automatic detection for components with no metadata file.\n- `$DotFilesGlobalIgnorePaths` (default: `@('.stow-local-ignore')`)  \n  Paths to ignore for all components in addition to any explicit `\u003cIgnorePath\u003e` elements in the metadata.\n- `$DotFilesSkipMetadataSchemaChecks` (default: `$false`)  \n  Skip validating metadata files against the metadata schema. Generally only useful in development.\n\nCommands\n--------\n\nThe module exports three commands through which all dotfiles management occurs:\n\n```posh\n# Enumerates available dotfiles components\nGet-DotFiles\n\n# Installs one or more dotfiles components\nInstall-DotFiles\n\n# Removes one or more dotfiles components\nRemove-DotFiles\n```\n\nAll commands have built-in help and examples which can be accessed with `Get-Help \u003ccommand\u003e`.\n\nOnly `Install-DotFiles` and `Remove-DotFiles` will modify your system by creating or removing the appropriate symlinks.\n\nBoth `Install-DotFiles` and `Remove-DotFiles` support PowerShell's standard `-WhatIf` and `-Confirm` parameters.\n\nFolder structure\n----------------\n\nPSDotFiles expects a dotfiles folder to be structured as multiple folders each containing the files and folders comprising a particular application's configuration. These top-level folders are referred to by PSDotFiles as **components**. The files and folders in each component's folder should be relative to a well-known top-level folder (e.g. your profile folder, which is the default target in PSDotFiles). The actual list of well-known folders are those in the [`Environment.SpecialFolder`](https://learn.microsoft.com/en-us/dotnet/api/system.environment.specialfolder) enumeration.\n\nA simple dotfiles folder structure might look like this:\n\n```fundamental\ndotfiles\n| --- clink\n   | --- clink_inputrc\n   | --- settings\n| --- conemu\n   | --- ConEmu.xml\n| --- git\n   | --- .gitattributes\n   | --- .gitconfig\n   | --- .gitignore\n| --- posh\n   | --- Modules\n      | --- MyModule\n         | --- MyModule.psm1\n   | --- profile.ps1\n| --- vim\n   | --- .vimrc\n```\n\nTroubleshooting\n---------------\n\nEncountering unexpected behaviour or other problems? You may wish to run the problematic command with the `-Verbose` parameter for more details. You can also add the `-Debug` parameter for even more details on the command processing.\n\nIf you think you've found a bug please consider [opening an issue](https://github.com/ralish/PSDotFiles/issues) so that I can look into it and hopefully get it fixed!\n\nLicense\n-------\n\nAll content is licensed under the terms of [The MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralish%2Fpsdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fralish%2Fpsdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralish%2Fpsdotfiles/lists"}