{"id":40680737,"url":"https://github.com/olistrik/nixos-config","last_synced_at":"2026-01-21T10:16:50.251Z","repository":{"id":37732467,"uuid":"268780806","full_name":"olistrik/nixos-config","owner":"olistrik","description":"My NixOS configurations and packages","archived":false,"fork":false,"pushed_at":"2026-01-18T00:57:16.000Z","size":991,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-18T13:11:49.502Z","etag":null,"topics":["nix","nixos","nixos-config","nixos-configuration","nixos-flake","nixpkgs","snowfall-lib"],"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/olistrik.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-06-02T11:20:01.000Z","updated_at":"2026-01-18T00:57:21.000Z","dependencies_parsed_at":"2024-03-25T09:41:15.297Z","dependency_job_id":"d7ca9dbd-8018-4f0b-a7a7-0716f1f313bc","html_url":"https://github.com/olistrik/nixos-config","commit_stats":null,"previous_names":["olistrik/nixos-config"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/olistrik/nixos-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olistrik%2Fnixos-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olistrik%2Fnixos-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olistrik%2Fnixos-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olistrik%2Fnixos-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olistrik","download_url":"https://codeload.github.com/olistrik/nixos-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olistrik%2Fnixos-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28631936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["nix","nixos","nixos-config","nixos-configuration","nixos-flake","nixpkgs","snowfall-lib"],"created_at":"2026-01-21T10:16:49.540Z","updated_at":"2026-01-21T10:16:50.246Z","avatar_url":"https://github.com/olistrik.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# NixOS à la Oli\n\nThis repository describes my personal NixOS configuration, modules, and\npackages.\n\nI've experimented over the years with various methods, from bare flakeless\nNixOS configurations, to [flake-parts](https://flake.parts/). Ultimately I've\nsettled on [snowfall-lib](https://github.com/snowfallorg/lib) as it does a huge\namount of the legwork for me and while I don't always agree with the decisions\nof opinionated frameworks, it definitely takes away a lot of the thinking on my\npart and just lets me write the fun bits.\n\nI'm not going to explain how snowfall works in detail, if you've come to this\nrepository looking for inspiration and haven't heard of it, [the documentation\ncan be found here](https://snowfall.org/guides/lib/quickstart/). In short,\nsnowfall automatically produces my flake outputs through an opinionated folder\nstructure. \n\nSome quick gotchas to save you some time;\n\n- There's almost certainly stuff in the `lib` folder that I've written (or\nborrowed) that I am using frequently. If you see anything and are wondering\n\"wtf is `enabled`\" or \"I didn't realise I could do `mkOpt` instead of\n`mkOption`\" then there's a good chance it's from there. Check the top of the\nfile for `with lib.olistrik`.\n- The `modules/nixos` folder is exposed to all of my NixOS hosts automatically\nunder the namespace `olistrik`. I try to namespace everything.\n- My nixvim config has moved to\n[olistrik/nixvim-config](https://github.com/olistrik/nixvim-config). Sorry if\nyou came here looking for that. \n\n\n## How to use my Packages\n\nIf for some reason you'd like to use my packages, you're more than welcome to\ndo so. However, keep in mind all the risks that come with that. This is like my\nown little personal AUR. That said, I neither want to package nor distribute\nmalicious code, so if you notice that one of my packages is bad or out-of-date,\nplease let me know.\n\nOtherwise, using my packages is pretty straight forward. Just add my default\noverlay to your nixpkgs and your done. Here's an example of a devshell with my\nbase nixvim:\n\n```nix\n{\n  inputs.nixpkgs.url = \"github:nixos/nixpkgs/nixos-unstable\";\n  inputs.flake-utils.url = \"github:numtide/flake-utils\";\n\n  # add my repo as an input.\n  inputs.olistrik.url = \"github:olistrik/nixos-config\";\n\n  outputs = { flake-utils, nixpkgs, olistrik, ... }: \n    flake-utils.lib.eachDefaultSystem (\n        system: let\n            pkgs = import nixpkgs {\n                inherit system; \n                # add the default overlay to your nixpkgs.\n                overlays = [ olistrik.overlays.default ];\n            }; \n        in {\n            devShell = pkgs.mkShell {\n                # use it! \n                packages = with pkgs; [ olistrik.nixvim ];\n            };\n        };\n    );\n}\n```\n\nAll of my packages additionally expose individual overlays, and are also\nexported through the packages output for every standard architecture, however I\nonly use x86-64_linux so your mileage may vary on darwin or aarch64.\n\nThus there are numorous ways you can use them, including the classic `nix run \"github:olistrik/nixos-config#nixvim\"`.\n\n## My module organization\n\nI'll document this later. Honestly though, they're mine. You probably shouldn't\nuse them.\n\n## My Nixvim configuration \n\nHas moved to\n[olistrik/nixvim-config](https://github.com/olistrik/nixvim-config). Namely\nbecause it was becoming quite frustrating that small changes required\nrebuilding my entire system. Moving it hasn't really changed that, arguably it\nhas made it worse, as any changes I make there now require updating the\n`flake.lock` here in-order for them to persist system-wide.\n\n# Installation notes\n\nThis is mainly for me, you probably don't want to be installing my systems\nyourself. I currently have two systems configured using this repository; my\npersonal laptop and daily driver Thoth, and my home server Hestia which hosts\neverything from home automation applications to steam game servers.\n\n### Build Live USB\n\nThis flake exports an x86-64_install_iso image that is preconfigured with git,\nflake support, nixvim, and to accept my laptops SSH key.\n\nBuild it, burn it, and boot it _in UEFI mode_. \n\n### Format SSD or HDD\n\nDo what you want, luks, zfs, fat12. Get it all mounted to /mnt. I usually use \n[disko](https://github.com/nix-community/disko) for this, [Thoth](./systems/x86_64-linux/thoth/disko-configuration.nix) being a principle this.\n\nIn summary though:\n\n#### sdx1 \n\n512MB EFI, mounted to `/mnt/efi`. \n!! This is recommended by systemd, but requires `boot.loader.efi.efiSysMountPoint = \"/efi\"` !!\n\n#### optional: sdx2\n\nA ~32GB swap partion if I'm using ZFS, otherwise I skip this just use a swap file.\n\n#### sdxN\n\nI use the rest of the drive as a single `/` partition, I don't bother splitting \npartitions off for everything else.\n\n### Install\n\nFor any host other than my main, I don't bother cloning the repo anymore. I\njust use `rebuild --target \u003chost\u003e` from Thoth. Naturally though, that isn't\npossible when doing a clean install of Thoth, in that scenario I clone this\nrepo to `/persist/nixos` and install it using `./rebuild` directly.\n\n\nI haven't worked out yet how to keep the `hardware-config.nix` out of the repo\nand only on the host, given how flakes work I doubt it's possible or desirable.\nThus I must generate it on the target host and copy it back to Thoth.\n\n```\nnixos-generate-config\n\n# scp the hardware config back to Thoth, setup and push the new host.\n\nnixos-install --flake \"github:olistrik/nixos-config#\u003chostname\u003e\"\n\nreboot\n```\n\nIf the host needs secrets, it'll need a nixwarden access token which I usually\nplace in `/var/lib/nixwarden/nixwarden.key`.\n\nNixwarden is another yet another WIP in dire need of renovation and documentation.\n\n### Updating\n\nI only keep this repo on Thoth, any changes there with or without pushing I can\ninstall on all my tailscale connected hosts with:\n\n```\nrebuild switch --target hostname\n```\n\nTODO: \n\n- rebuild switch --all\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folistrik%2Fnixos-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folistrik%2Fnixos-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folistrik%2Fnixos-config/lists"}