{"id":13682180,"url":"https://github.com/jkachmar/dotnix","last_synced_at":"2025-04-30T07:30:47.453Z","repository":{"id":45682286,"uuid":"228095157","full_name":"jkachmar/dotnix","owner":"jkachmar","description":"Shackled within an elaborate prison of my own design.","archived":true,"fork":false,"pushed_at":"2023-11-14T18:55:40.000Z","size":490,"stargazers_count":40,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"trunk","last_synced_at":"2024-08-02T13:33:47.354Z","etag":null,"topics":["dotfiles","home-manager","macos","nix","nixos"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkachmar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-12-14T22:04:11.000Z","updated_at":"2024-08-01T11:41:17.000Z","dependencies_parsed_at":"2023-09-27T09:33:41.552Z","dependency_job_id":"b99d8899-7447-4495-8a7c-49c675543569","html_url":"https://github.com/jkachmar/dotnix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fdotnix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fdotnix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fdotnix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkachmar%2Fdotnix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkachmar","download_url":"https://codeload.github.com/jkachmar/dotnix/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224201897,"owners_count":17272661,"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","home-manager","macos","nix","nixos"],"created_at":"2024-08-02T13:01:41.860Z","updated_at":"2024-11-12T01:31:16.976Z","avatar_url":"https://github.com/jkachmar.png","language":"Nix","funding_links":[],"categories":["Nix"],"sub_categories":[],"readme":"# gone fishin'\n\nfresh start with over at https://github.com/jkachmar/termina \n\n# I Fucking Hate Dotfiles\n\n## Installation\n\n### Clone\n\n#### macOS\n\nClone this repository to `$HOME/.config/dotfiles`; this is a hardcoded path,\nhowever it should be the _only_ one that is expected by the configuration.\n\nAfter cloning, `cd` into the directory.\n\n#### NixOS\n\nThe system-level prerequisites of the NixOS configuration is significantly more\ninvolved than the macOS configuration.\n\nIn general it follows the same principles as [Graham Christensen] described in\nhis [Erase Your Darlings] blog post; in this case, `/persist` is being used as\nthe persistent directory.\n\nThis repository can be cloned anywhere, but in general I tend to place it in\n`$HOME/.config/dotfiles` on desktop machines and `/persist/etc/nixos` on servers.\n\nAfter cloning, `cd` into the directory.\n\n### Existing Profile\n\n#### macOS\n\nFrom the configuration directory, build the darwin activation utilities and\nthen invoke them directly for the desired profile.\n\nFor example, the following will build and activate the `crazy-diamond` profile:\n\n```bash\nnix build .#darwinConfigurations.crazy-diamond.system\n./result/sw/bin/darwin-rebuild --flake $(pwd)#crazy-diamond switch\n```\n\nAt the time of writing, `nix-darwin` hasn't been fully updated to work with\nFlakes so this will have to be repeated every time the configuration is to be\nupdated.\n\n##### TODO\n\n- [ ] package the above into a script available within the `nix develop` shell\n\n#### NixOS\n\nFrom the configuration directory, build the NixOS configuration and activate\nit.\n\nFor example, the following will build and activate the `star-platinum` profile:\n\n```bash\nnixos-rebuild switch \\\n  --use-remote-sudo \\\n  --flake '.#star-platinum'\n```\n\nThe initial activation will set the machine's host name, which means that\nsubsequent activations can be performed with `nixos-rebuild switch --use-remote-sudo`.\n\n**NOTE**: `--use-remote-sudo` is a \"workaround\" for how flakes repositories can interact\nwith `git-2.35.`.\n\ncf. https://github.com/NixOS/nixpkgs/issues/169193\n\n### New Profile\n\nTo install based off of a new profile:\n\n* create a new directory with the machine name at `machines/\u003cnew-machine-name\u003e`\n* perform the same steps as above to build and deploy the new machine's\nconfiguration\n\n### Post-Install\n\nOnce everything's been installed and is up and running, `direnv allow` will\nenable `nix-direnv` and most of the `nix-shell --run` nonsense below can be\nelided.\n\n## Maintenance\n\n### Updates\n\nSources are pinned and tracked using \"Nix Flakes\".\n\n#### TODO\n\n- [ ] add example commands showing how to update pinned flake sources.\n\n### [`nix-direnv`]\n\nThis project contains a `.envrc` file that works with the [`nix-direnv`]\nintegration for [`direnv`]. This _should_ mean that, upon entering this\ndirectory, a user is immediately dropped into the environment defined in this\nrepository's [`shell.nix`](./shell.nix) file.\n\nAdditionally, `nix-direnv` should also automatically register a [GC Root]\nsimilar to [`lorri`]*.\n\nBefore running `nix-collect-garbage -d`, `nix-direnv`'s cached evaluation can be\n\"manually refreshed\" by calling `touch .envrc` in this directory; this should\nensure that a GC Root is installed for an up-to-date version of `shell.nix`.\n\n*I have a slight preference for `nix-direnv` over `lorri`\ndue to some issues I've had in the past with `lorri`'s daemon.\n\n## Resources\n\n**TODO**: Link against some of the Nix configurations that I referenced when\nfiguring this out for myself.\n\n[Graham Christensen]: https://github.com/grahamc\n[Erase Your Darlings]: https://grahamc.com/blog/erase-your-darlings\n[`niv`]: https://www.github.com/nmattia/niv\n[`nix-direnv`]: https://github.com/nix-community/nix-direnv\n[`lorri`]: https://www.github.com/target/lorri\n[`direnv`]: https://www.github.com/direnv/direnv\n[GC Root]: https://nixos.org/nixos/nix-pills/garbage-collector.html#idm140737315973184\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkachmar%2Fdotnix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkachmar%2Fdotnix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkachmar%2Fdotnix/lists"}