diff --git a/README.md b/README.md index ef7ed23e..f347f4a2 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ > maturing _well_ [for a while](https://github.com/divnix/devos/tree/17713c22d07c54525c728c62060a0428b76dee3b). # Introduction -DevOS grants a simple way to use, deploy and manage [NixOS][nixos] systems for -personal and productive use. A sane repository structure is provided, +DevOS grants a simple template to use, deploy and manage [NixOS][nixos] systems +for personal and productive use. A sane repository structure is provided, integrating several popular projects like [home-manager][home-manager], [devshell][devshell], and [more](./doc/integrations). @@ -21,14 +21,17 @@ a [flake centric][flake-doc] approach is taken for useful conveniences such as Skip the indeterminate nature of other systems, _and_ the perceived tedium of bootstrapping Nix. It's easier than you think! -### Status: Alpha -A lot of the implementation is less than perfect, and huge -[redesigns](https://github.com/divnix/devos/issues/152) _will_ happen. There -are unstable versions (0._x_._x_) to help users keep track of changes and -progress. +### Status: Beta +Although this project has already matured quite a bit, especially through +recent outfactoring of [`digga`][digga], a fair amount of api polishing is still +expected. There are unstable versions (0._x_._x_) to help users keep track +of changes and progress. ## Getting Started Check out the [guide](https://devos.divnix.com/start) to get up and running. +Also, have a look at [_flake.nix_][toc]. If anything is not immediately +discoverable from there through [`digga`][digga] library's [`mkFlake`][mk-flake], +please file a bug report. ## In the Wild The author maintains his own branch, so you can take inspiration, direction, or @@ -43,12 +46,6 @@ and its satellite projects, from which best practices can evolve. ___The future is declarative! 🎉___ -## Upstream -I'd love to see this in the nix-community should anyone believe its reached a -point of maturity to be generally useful, but I'm all for waiting until -1.0[#121](https://github.com/divnix/devos/issues/121) to save the cache work, -too. - ## Community Profiles There are two branches from which to choose: [core][core] and [community][community]. The community branch builds on core and includes @@ -60,6 +57,22 @@ without building anything. This is especially useful for the packages that are [overridden](./concepts/overrides.md) from master, as without the cache, rebuilds are quite frequent. +## Shoulders +This work does not reinvent the wheel. It stands on the [shoulders of the +following giants][giants]: + +### :onion: — like the layers of an onion +- [`divnix/digga`][digga] +- [`gytis-ivaskevicius/flake-utils-plus`][fup] +- [`numtide/flake-utils`][fu] + +### :family: — like family +- [`numtide/devshell`][devshell] +- [`serokell/deploy-rs`][deploy] +- [`NixOS/nixpkgs`][nixpkgs] + +:heart: + ## Inspiration & Art - [hlissner/dotfiles][dotfiles] - [nix-user-chroot](https://github.com/nix-community/nix-user-chroot) @@ -67,9 +80,29 @@ rebuilds are quite frequent. - [Awesome Nix](https://github.com/nix-community/awesome-nix) - [devshell](https://github.com/numtide/devshell) +## Divnix +The divnix org is an open space that spontaniously formed out of "the Nix". +It is really just a place where otherwise unrelated people a) get +together and b) stuff done. + +It's a place to stop "geeking out in isolation" (or within company boundaries), +experiment and learn together and iterate quickly on best practices. That's what it is. + +It might eventually become a non-profit if that's not too complicated or if those +goals are sufficiently upstreamed into "the Nix", dissolved. + # License DevOS is licensed under the [MIT License][mit]. +[mk-flake]: https://github.com/divnix/digga/tree/master/src/mkFlake +[nixpkgs]: https://github.com/NixOS/nixpkgs +[deploy]: https://github.com/serokell/deploy-rs +[toc]: https://github.com/divnix/devos/blob/core/flake.nix +[giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants +[digga]: https://github.com/divnix/digga +[fup]: https://github.com/gytis-ivaskevicius/flake-utils-plus +[fu]: https://github.com/numtide/flake-utils +[devshell]: https://github.com/numtide/devshell [nix]: https://nixos.org/manual/nix/stable [mit]: https://mit-license.org [nixos]: https://nixos.org/manual/nixos/stable @@ -79,5 +112,4 @@ DevOS is licensed under the [MIT License][mit]. [core]: https://github.com/divnix/devos [community]: https://github.com/divnix/devos/tree/community [dotfiles]: https://github.com/hlissner/dotfiles -[devshell]: https://github.com/numtide/devshell [please]: https://github.com/nrdxp/devos/tree/nrd diff --git a/default.nix b/default.nix index 5d437c7d..0e6bdee2 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,7 @@ let inherit (default.inputs.nixos) lib; - default = (import "${./lib}/compat").defaultNix; + default = (import ./lib/compat).defaultNix; ciSystems = [ "aarch64-linux" diff --git a/doc/concepts/hosts.md b/doc/concepts/hosts.md index 1fa90284..37130f39 100644 --- a/doc/concepts/hosts.md +++ b/doc/concepts/hosts.md @@ -33,15 +33,15 @@ that you intend to use on your machine. flake.nix: ```nix { - nixos.hosts = mkMerge [ - (devos.lib.importHosts ./hosts) - { + nixos = { + imports = [ (devos.lib.importHosts ./hosts) ]; + hosts = { librem = { channelName = "latest"; - modules = [ hardware.purism-librem-13v3 ]; + modules = [ nixos-hardware.nixosModules.purism-librem-13v3 ]; }; - } - ]; + }; + }; } ``` diff --git a/doc/start/index.md b/doc/start/index.md index 1cc252b8..fbfab099 100644 --- a/doc/start/index.md +++ b/doc/start/index.md @@ -31,6 +31,8 @@ In addition, the [binary cache](../integrations/cachix.md) is added for faster d > files before building the system. > - You can choose to simply clone the repo with git if you want to follow > upstream changes. +> - If the `nix-shell -p cachix --run "cachix use nrdxp"` line doesn't work +> you can try with sudo: `sudo nix-shell -p cachix --run "cachix use nrdxp"` ## Next Steps: - [Make installable ISO](./iso.md) diff --git a/doc/start/iso.md b/doc/start/iso.md index 5a0ecf3a..efa515a0 100644 --- a/doc/start/iso.md +++ b/doc/start/iso.md @@ -12,13 +12,13 @@ This works for any file matching `hosts/*.nix` excluding `default.nix`. ## ISO image nix store & cache -The iso image holds the store to the live environment and _also_ acts as a binay cache +The iso image holds the store to the live environment and _also_ acts as a binary cache to the installer. To considerably speed up things, the image already includes all flake `inputs` as well as the `devshell` closures. -While you _could_ provision any machine with a single stick, a bespoke iso maximises -those local cache hits. +While you _could_ provision any machine with a single stick, a custom-made iso for +the host you want to install DevOS to, maximises those local cache hits. -For hosts that don't differ too much, a common usb stick might be ok, whereas when -there are bigger differences, a bespoke usb stick will be considerably faster. +For hosts that don't differ too much, a single usb stick might be ok, whereas when +there are bigger differences, a custom-made usb stick will be considerably faster. diff --git a/flake.lock b/flake.lock index cb213802..783e74f4 100644 --- a/flake.lock +++ b/flake.lock @@ -113,11 +113,11 @@ "utils": "utils_2" }, "locked": { - "lastModified": 1621048725, - "narHash": "sha256-LVQOLO56xuBAlElxikU3Qvw1BMB3914HN+QePls0yl0=", + "lastModified": 1621354376, + "narHash": "sha256-b597Jj8B1Nq4NX/Gl/+bYGKqJxpSfUtr1Nmp9m1DND8=", "owner": "divnix", "repo": "digga", - "rev": "04c4bdd1d1449168307d6262631466d59b9ed3bd", + "rev": "5ef9b8cabbc10c9b4fe5534107224c7241c63b3d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 8e62d61f..b95b0eeb 100644 --- a/flake.nix +++ b/flake.nix @@ -103,7 +103,7 @@ deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; - #defaultTemplate = self.templates.flk; + defaultTemplate = self.templates.flk; templates.flk.path = ./.; templates.flk.description = "flk template"; diff --git a/profiles/suites.nix b/profiles/suites.nix deleted file mode 100644 index eadb20c6..00000000 --- a/profiles/suites.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ users, profiles, userProfiles, ... }: - -{ - system = with profiles; rec { - base = [ core users.nixos users.root ]; - }; - user = with userProfiles; rec { - base = [ direnv git ]; - }; -}