Attempting to migrate off digga...
This commit is contained in:
		
							parent
							
								
									0051488eb1
								
							
						
					
					
						commit
						f5a0ad9ba9
					
				
							
								
								
									
										114
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								CHANGELOG.md
									
									
									
									
									
								
							|  | @ -1,114 +0,0 @@ | ||||||
| # Changelog |  | ||||||
| 
 |  | ||||||
| ## [v0.10.0](https://github.com/divnix/devos/tree/v0.10.0) (2021-05-24) |  | ||||||
| 
 |  | ||||||
| **Implemented enhancements:** |  | ||||||
| 
 |  | ||||||
| - Providing an interface to nixpkgs.config [\#237](https://github.com/divnix/devos/issues/237) |  | ||||||
| - Making the user available in profiles [\#230](https://github.com/divnix/devos/issues/230) |  | ||||||
| - copy evaluation store paths to iso [\#195](https://github.com/divnix/devos/issues/195) |  | ||||||
| - Extract custom system builds from devosSystem out of lib [\#170](https://github.com/divnix/devos/issues/170) |  | ||||||
| - Allow setting of channel host-wide [\#117](https://github.com/divnix/devos/issues/117) |  | ||||||
| - alacritty: CSIu support [\#51](https://github.com/divnix/devos/issues/51) |  | ||||||
| 
 |  | ||||||
| **Fixed bugs:** |  | ||||||
| 
 |  | ||||||
| - Cachix timeouts + how to disable nrdxp cachix \(if needed\) [\#294](https://github.com/divnix/devos/issues/294) |  | ||||||
| - default.nix flake-compat is broken [\#285](https://github.com/divnix/devos/issues/285) |  | ||||||
| - All suites return "attribute missing" [\#282](https://github.com/divnix/devos/issues/282) |  | ||||||
| - nix is built two times [\#203](https://github.com/divnix/devos/issues/203) |  | ||||||
| - fix lib docs [\#166](https://github.com/divnix/devos/issues/166) |  | ||||||
| 
 |  | ||||||
| **Closed issues:** |  | ||||||
| 
 |  | ||||||
| - eliminate userFlakeNixOS [\#257](https://github.com/divnix/devos/issues/257) |  | ||||||
| - devos-as-library [\#214](https://github.com/divnix/devos/issues/214) |  | ||||||
| 
 |  | ||||||
| **Merged pull requests:** |  | ||||||
| 
 |  | ||||||
| - Update evalArgs to match the new planned API [\#239](https://github.com/divnix/devos/pull/239) |  | ||||||
| 
 |  | ||||||
| ## [v0.9.0](https://github.com/divnix/devos/tree/v0.9.0) (2021-04-19) |  | ||||||
| 
 |  | ||||||
| **Implemented enhancements:** |  | ||||||
| 
 |  | ||||||
| - pin inputs into iso live registry [\#190](https://github.com/divnix/devos/issues/190) |  | ||||||
| - Pass 'self' to lib [\#169](https://github.com/divnix/devos/issues/169) |  | ||||||
| - doc: quickstart "ISO. What next?" [\#167](https://github.com/divnix/devos/issues/167) |  | ||||||
| - Integrate Android AOSP putting mobile under control [\#149](https://github.com/divnix/devos/issues/149) |  | ||||||
| - Inoculate host identity on first use [\#132](https://github.com/divnix/devos/issues/132) |  | ||||||
| - kubenix support [\#130](https://github.com/divnix/devos/issues/130) |  | ||||||
| - Improve Home Manager support: profiles/suites, modules, extern, flake outputs [\#119](https://github.com/divnix/devos/issues/119) |  | ||||||
| - Local CA \(between hosts\) [\#104](https://github.com/divnix/devos/issues/104) |  | ||||||
| - Q5: git annex for machine state [\#68](https://github.com/divnix/devos/issues/68) |  | ||||||
| - name space ./pkgs overlays [\#60](https://github.com/divnix/devos/issues/60) |  | ||||||
| - remap global keys easily [\#57](https://github.com/divnix/devos/issues/57) |  | ||||||
| - make pass state part of this repo's structure [\#56](https://github.com/divnix/devos/issues/56) |  | ||||||
| - Incorporate ./shells [\#38](https://github.com/divnix/devos/issues/38) |  | ||||||
| - Encrypt with \(r\)age [\#37](https://github.com/divnix/devos/issues/37) |  | ||||||
| 
 |  | ||||||
| **Fixed bugs:** |  | ||||||
| 
 |  | ||||||
| - `pathsToImportedAttrs` does not accept directories [\#221](https://github.com/divnix/devos/issues/221) |  | ||||||
| - Cachix caches aren't added to the configuration [\#208](https://github.com/divnix/devos/issues/208) |  | ||||||
| - Issues with current changelog workflow [\#205](https://github.com/divnix/devos/issues/205) |  | ||||||
| - iso: systemd service startup [\#194](https://github.com/divnix/devos/issues/194) |  | ||||||
| - Help adding easy-hls-nix to devos [\#174](https://github.com/divnix/devos/issues/174) |  | ||||||
| - `flk update` fails because of obsolete flag [\#159](https://github.com/divnix/devos/issues/159) |  | ||||||
| - Expected that not all packages are exported? [\#151](https://github.com/divnix/devos/issues/151) |  | ||||||
| - Segmentation fault when generating iso [\#150](https://github.com/divnix/devos/issues/150) |  | ||||||
| 
 |  | ||||||
| **Documentation:** |  | ||||||
| 
 |  | ||||||
| - doc: split iso [\#193](https://github.com/divnix/devos/issues/193) |  | ||||||
| - lib: can depend on pkgs \(a la nixpkgs\#pkgs/pkgs-lib\) [\#147](https://github.com/divnix/devos/pull/147) |  | ||||||
| 
 |  | ||||||
| **Closed issues:** |  | ||||||
| 
 |  | ||||||
| - FRRouting router implementation [\#154](https://github.com/divnix/devos/issues/154) |  | ||||||
| - ARM aarch64 Support [\#72](https://github.com/divnix/devos/issues/72) |  | ||||||
| 
 |  | ||||||
| ## [v0.8.0](https://github.com/divnix/devos/tree/v0.8.0) (2021-03-02) |  | ||||||
| 
 |  | ||||||
| **Implemented enhancements:** |  | ||||||
| 
 |  | ||||||
| - semi automatic update for /pkgs [\#118](https://github.com/divnix/devos/issues/118) |  | ||||||
| - Home-manager external modules from flakes [\#106](https://github.com/divnix/devos/issues/106) |  | ||||||
| 
 |  | ||||||
| **Fixed bugs:** |  | ||||||
| 
 |  | ||||||
| - My emacsGcc overlay is not working  [\#146](https://github.com/divnix/devos/issues/146) |  | ||||||
| - local flake registry freezes branches [\#142](https://github.com/divnix/devos/issues/142) |  | ||||||
| - nixos-option no longer works after collect garbage [\#138](https://github.com/divnix/devos/issues/138) |  | ||||||
| - Profiles imports are brittle, causing failure if imported twice [\#136](https://github.com/divnix/devos/issues/136) |  | ||||||
| 
 |  | ||||||
| ## [0.7.0](https://github.com/divnix/devos/tree/0.7.0) (2021-02-20) |  | ||||||
| 
 |  | ||||||
| **Implemented enhancements:** |  | ||||||
| 
 |  | ||||||
| - add zoxide [\#53](https://github.com/divnix/devos/issues/53) |  | ||||||
| - Multiarch support? [\#17](https://github.com/divnix/devos/issues/17) |  | ||||||
| - initial multiArch support [\#18](https://github.com/divnix/devos/pull/18) |  | ||||||
| 
 |  | ||||||
| **Fixed bugs:** |  | ||||||
| 
 |  | ||||||
| - Missing shebang from flk.sh [\#131](https://github.com/divnix/devos/issues/131) |  | ||||||
| - Rename Meta Issue [\#128](https://github.com/divnix/devos/issues/128) |  | ||||||
| - specialisations break the `system` argument [\#46](https://github.com/divnix/devos/issues/46) |  | ||||||
| - Revert "Add extraArgs to lib.nixosSystem call to add system args." [\#47](https://github.com/divnix/devos/pull/47) |  | ||||||
| 
 |  | ||||||
| **Documentation:** |  | ||||||
| 
 |  | ||||||
| - update home-manager urls [\#62](https://github.com/divnix/devos/pull/62) |  | ||||||
| 
 |  | ||||||
| **Closed issues:** |  | ||||||
| 
 |  | ||||||
| - add github action for cachix build ci [\#59](https://github.com/divnix/devos/issues/59) |  | ||||||
| 
 |  | ||||||
| ## [12052020](https://github.com/divnix/devos/tree/12052020) (2020-12-06) |  | ||||||
| 
 |  | ||||||
| ## [07092020](https://github.com/divnix/devos/tree/07092020) (2020-07-09) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* |  | ||||||
							
								
								
									
										18
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								COPYING
									
									
									
									
									
								
							|  | @ -1,18 +0,0 @@ | ||||||
| Permission is hereby granted, free of charge, to any person obtaining |  | ||||||
| a copy of this software and associated documentation files (the |  | ||||||
| "Software"), to deal in the Software without restriction, including |  | ||||||
| without limitation the rights to use, copy, modify, merge, publish, |  | ||||||
| distribute, sublicense, and/or sell copies of the Software, and to |  | ||||||
| permit persons to whom the Software is furnished to do so, subject to |  | ||||||
| the following conditions: |  | ||||||
| 
 |  | ||||||
| The above copyright notice and this permission notice shall be |  | ||||||
| included in all copies or substantial portions of the Software. |  | ||||||
| 
 |  | ||||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |  | ||||||
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |  | ||||||
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |  | ||||||
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |  | ||||||
							
								
								
									
										93
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								README.md
									
									
									
									
									
								
							|  | @ -1,93 +0,0 @@ | ||||||
| [](https://nixos.org) |  | ||||||
| [][mit] |  | ||||||
| 
 |  | ||||||
| > #### ⚠ Advisory ⚠ |  | ||||||
| > Do you remember how you got here? Where were you going? What were you leaving behind? |  | ||||||
| > Are you sure you want to go down this rabbit hole, Alice? |  | ||||||
| 
 |  | ||||||
| ## Getting Started |  | ||||||
| This is my personal deployment hub. I configure all my personal servers from this repo. Good luck if you're looking to graft this.    |  | ||||||
| You'll probably want to run some `install.sh` that will configure the base NixOS system. Some of them aren't in a good state.    |  | ||||||
| From there you can either install the host you want with `sudo nixos-rebuild switch --flake .#<host>` or enter the cockpit with `nix develop` and deploy servers remotely through `deploy` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Personal dotfiles |  | ||||||
| <img src="./screenshots/fakebusy.png" width="100%" /> |  | ||||||
| 
 |  | ||||||
| <p align="center"> |  | ||||||
| <span><img src="./screenshots/desktop.png" height="178" /></span> |  | ||||||
| <span><img src="./screenshots/rofi.png" height="178" /></span> |  | ||||||
| <span><img src="./screenshots/firefox.png" height="178" /></span> |  | ||||||
| </p> |  | ||||||
| 
 |  | ||||||
| ------ |  | ||||||
| 
 |  | ||||||
| |                |                                                          | |  | ||||||
| |----------------|----------------------------------------------------------| |  | ||||||
| | **Shell:**     | bash / elvish                                            | |  | ||||||
| | **DM:**        | lightdm + lightdm-mini-greeter                           | |  | ||||||
| | **WM:**        | bspwm + polybar                                          | |  | ||||||
| | **Editor:**    | nvim                                                     | |  | ||||||
| | **Terminal:**  | kitty                                                    | |  | ||||||
| | **Launcher:**  | rofi                                                     | |  | ||||||
| | **Browser:**   | firefox                                                  | |  | ||||||
| | **GTK Theme:** | [Ant Dracula](https://github.com/EliverLara/Ant-Dracula) | |  | ||||||
| 
 |  | ||||||
| ----- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### Status: Beta |  | ||||||
| The volcanic rock still shifts below this structure. It has not solidified and cannot yet be considered `home` |  | ||||||
| You should not expect landmarks here.  |  | ||||||
| Learn to adopt Chaos. |  | ||||||
| 
 |  | ||||||
| ## Shoulders |  | ||||||
| Summoning is powerful magic, and cannot be created in isolation. 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] |  | ||||||
| - [`numtide/devshell`][devshell] |  | ||||||
| - [`serokell/deploy-rs`][deploy] |  | ||||||
| - [`berberman/nvfetcher`][nvfetcher] |  | ||||||
| - [`NixOS/nixpkgs`][nixpkgs] |  | ||||||
| - Agenix |  | ||||||
| - direnv |  | ||||||
| 
 |  | ||||||
| :heart: |  | ||||||
| 
 |  | ||||||
| ### But Why? |  | ||||||
| The future is more uncertain than ever. Make dependable what you can, in whatever way you know how. |  | ||||||
| Stop doing it by yourself, unless we learn to work with one another will we be able to grow long term solutions.    |  | ||||||
| 
 |  | ||||||
| Managing servers by hand sucks, k8s doesn't allow me to transitively deploy all my configuration to multiple personal machines, and ansible wasn't good enough.    |  | ||||||
| 
 |  | ||||||
| You probably don't want to use nixOS, I'm a masocist |  | ||||||
| 
 |  | ||||||
| ### Grafts |  | ||||||
| https://github.com/hlissner/dotfiles |  | ||||||
| 
 |  | ||||||
| # License |  | ||||||
| DevOS is licensed under the [MIT License][mit]. |  | ||||||
| 
 |  | ||||||
| [community]: https://github.com/divnix/devos/tree/community |  | ||||||
| [core]: https://github.com/divnix/devos |  | ||||||
| [deploy]: https://github.com/serokell/deploy-rs |  | ||||||
| [devshell]: https://github.com/numtide/devshell |  | ||||||
| [digga]: https://github.com/divnix/digga |  | ||||||
| [dotfiles]: https://github.com/hlissner/dotfiles |  | ||||||
| [flake-doc]: https://github.com/NixOS/nix/blob/master/src/nix/flake.md |  | ||||||
| [flakes]: https://nixos.wiki/wiki/Flakes |  | ||||||
| [fu]: https://github.com/numtide/flake-utils |  | ||||||
| [fup]: https://github.com/gytis-ivaskevicius/flake-utils-plus |  | ||||||
| [giants]: https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants |  | ||||||
| [home-manager]: https://nix-community.github.io/home-manager |  | ||||||
| [mit]: https://mit-license.org |  | ||||||
| [mk-flake]: https://github.com/divnix/digga/tree/master/src/mkFlake |  | ||||||
| [nix]: https://nixos.org/manual/nix/stable |  | ||||||
| [nixos]: https://nixos.org/manual/nixos/stable |  | ||||||
| [nixpkgs]: https://github.com/NixOS/nixpkgs |  | ||||||
| [nvfetcher]: https://github.com/berberman/nvfetcher |  | ||||||
| 
 |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| status = [ "check" ] |  | ||||||
| 
 |  | ||||||
| required_approvals = 1 |  | ||||||
| 
 |  | ||||||
| up_to_date_approvals = true |  | ||||||
							
								
								
									
										31
									
								
								default.nix
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								default.nix
									
									
									
									
									
								
							|  | @ -1,31 +0,0 @@ | ||||||
| let |  | ||||||
|   inherit (default.inputs.nixos) lib; |  | ||||||
| 
 |  | ||||||
|   default = (import ./lib/compat).defaultNix; |  | ||||||
| 
 |  | ||||||
|   ciSystems = [ |  | ||||||
|     "aarch64-linux" |  | ||||||
|     "i686-linux" |  | ||||||
|     "x86_64-linux" |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   filterSystems = lib.filterAttrs |  | ||||||
|     (system: _: lib.elem system ciSystems); |  | ||||||
| 
 |  | ||||||
|   recurseIntoAttrsRecursive = lib.mapAttrs (_: v: |  | ||||||
|     if lib.isAttrs v |  | ||||||
|     then recurseIntoAttrsRecursive (lib.recurseIntoAttrs v) |  | ||||||
|     else v |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   systemOutputs = lib.filterAttrs |  | ||||||
|     (name: set: lib.isAttrs set |  | ||||||
|       && lib.any |  | ||||||
|       (system: set ? ${system} && name != "legacyPackages") |  | ||||||
|       ciSystems |  | ||||||
|     ) |  | ||||||
|     default.outputs; |  | ||||||
| 
 |  | ||||||
|   ciDrvs = lib.mapAttrs (_: system: filterSystems system) systemOutputs; |  | ||||||
| in |  | ||||||
| (recurseIntoAttrsRecursive ciDrvs) // { shell = import ./shell.nix; } |  | ||||||
							
								
								
									
										1
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								doc/.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -1 +0,0 @@ | ||||||
| book |  | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| # Pull Requests |  | ||||||
| 
 |  | ||||||
| ## TL;DR; |  | ||||||
| - **Target Branch**: `main` |  | ||||||
| - **Merge Policy**: [`bors`][bors] is alwyas right (→ `bors try`) |  | ||||||
| - **Docs**: every changeset is expected to contain doc updates |  | ||||||
| - **Commit Msg**: be a poet! Comprehensive and explanatory commit messages  |  | ||||||
|   should cover the motivation and use case in an easily understandable manner |  | ||||||
|   even when read after a few months. |  | ||||||
| - **Test Driven Development**: please default to test driven development where possible. |  | ||||||
| 
 |  | ||||||
| ### Within the Devshell (`nix develop`) |  | ||||||
| - **Hooks**: please `git commit` within the devshell |  | ||||||
| - **Fail Early**: please run from within the devshell on your local machine: |  | ||||||
|   - `nix flake check` |  | ||||||
| 
 |  | ||||||
| [bors]: https://bors.tech |  | ||||||
| 
 |  | ||||||
|  | @ -1,28 +0,0 @@ | ||||||
| # Summary |  | ||||||
| 
 |  | ||||||
| - [Introduction](../README.md) |  | ||||||
| - [Quick Start](./start/index.md) |  | ||||||
|   - [ISO](./start/iso.md) |  | ||||||
|   - [Bootstrapping](./start/bootstrapping.md) |  | ||||||
|   - [From NixOS](./start/from-nixos.md) |  | ||||||
| - [Key Concepts](./concepts/index.md) |  | ||||||
|   - [Hosts](./concepts/hosts.md) |  | ||||||
|   - [Overrides](./concepts/overrides.md) |  | ||||||
|   - [Profiles](./concepts/profiles.md) |  | ||||||
|   - [Suites](./concepts/suites.md) |  | ||||||
|   - [Users](./concepts/users.md) |  | ||||||
| - [Outputs](./outputs/index.md) |  | ||||||
|   - [Modules](./outputs/modules.md) |  | ||||||
|   - [Overlays](./outputs/overlays.md) |  | ||||||
|   - [Packages](./outputs/pkgs.md) |  | ||||||
| - [Concerns]() |  | ||||||
|   - [Secrets](./secrets.md) |  | ||||||
|   - [Tests](./tests.md) |  | ||||||
| - [Helper Script – `bud`](./bud/index.md) |  | ||||||
|   - [get](./bud/get.md) |  | ||||||
| - [Integrations](./integrations/index.md) |  | ||||||
|   - [Cachix](./integrations/cachix.md) |  | ||||||
|   - [Deploy RS](./integrations/deploy.md) |  | ||||||
|   - [NvFetcher](./integrations/nvfetcher.md) |  | ||||||
|   - [Hercules CI](./integrations/hercules.md) |  | ||||||
| - [Contributing](./CONTRIBUTING.md) |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| [book] |  | ||||||
| authors = ["Timothy DeHerrera"] |  | ||||||
| language = "en" |  | ||||||
| multilingual = false |  | ||||||
| src = "." |  | ||||||
| title = "devos docs" |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| # get |  | ||||||
| The `get` subcommand is useful for getting a bare copy of devos without the |  | ||||||
| git history. |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| ```sh |  | ||||||
| bud get DEST-DIR |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| If DEST-DIR is ommitted, it defaults to _./devos_. |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| # [`bud`][bud] command |  | ||||||
| The template incudes a convenient script for managing your system called [`bud`][bud]. |  | ||||||
| 
 |  | ||||||
| It is a portable and highly composable system control tool that work anywhere on your host |  | ||||||
| or in the flake's devshell.  |  | ||||||
| 
 |  | ||||||
| Although it comes with some predefined standard helpers, |  | ||||||
| it is very extensible and you are encouraged to write your own script snippets |  | ||||||
| to ease your workflows. An example is the bud module for a `get` command that |  | ||||||
| comes included with `devos`. |  | ||||||
| 
 |  | ||||||
| While writing scripts you can convenientely access smart environment variables |  | ||||||
| that can tell the current architecture, user or host name, among others, regardless |  | ||||||
| wether you invoke `bud` within the devshell or as the system-wide installed `bud`. |  | ||||||
| 
 |  | ||||||
| For details, please review the [bud repo][bud]. |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| ```sh |  | ||||||
| bud help |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [bud]: https://github.com/divnix/bud |  | ||||||
|  | @ -1,62 +0,0 @@ | ||||||
| # Hosts |  | ||||||
| 
 |  | ||||||
| Nix flakes contain an output called `nixosConfigurations` declaring an |  | ||||||
| attribute set of valid NixOS systems. To simplify the management and creation |  | ||||||
| of these hosts, devos automatically imports every _.nix_ file inside this |  | ||||||
| directory to the mentioned attribute set, applying the projects defaults to |  | ||||||
| each. The only hard requirement is that the file contain a valid NixOS module. |  | ||||||
| 
 |  | ||||||
| As an example, a file `hosts/system.nix` or `hosts/system/default.nix` will |  | ||||||
| be available via the flake output `nixosConfigurations.system`. You can have |  | ||||||
| as many hosts as you want and all of them will be automatically imported based |  | ||||||
| on their name. |  | ||||||
| 
 |  | ||||||
| For each host, the configuration automatically sets the `networking.hostName` |  | ||||||
| attribute to the folder name or name of the file minus the _.nix_ extension. This |  | ||||||
| is for convenience, since `nixos-rebuild` automatically searches for a configuration |  | ||||||
| matching the current systems hostname if one is not specified explicitly. |  | ||||||
| 
 |  | ||||||
| You can set channels, systems, and add extra modules to each host by editing the |  | ||||||
| `nixos.hosts` argument in flake.nix. This is the perfect place to import |  | ||||||
| host specific modules from external sources, such as the |  | ||||||
| [nixos-hardware][nixos-hardware] repository. |  | ||||||
| 
 |  | ||||||
| It is recommended that the host modules only contain configuration information |  | ||||||
| specific to a particular piece of hardware. Anything reusable across machines |  | ||||||
| is best saved for [profile modules](./profiles.md). |  | ||||||
| 
 |  | ||||||
| This is a good place to import sets of profiles, called [suites](./suites.md), |  | ||||||
| that you intend to use on your machine. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Example |  | ||||||
| 
 |  | ||||||
| flake.nix: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   nixos = { |  | ||||||
|     imports = [ (devos.lib.importHosts ./hosts) ]; |  | ||||||
|     hosts = { |  | ||||||
|       librem = { |  | ||||||
|         channelName = "latest"; |  | ||||||
|         modules = [ nixos-hardware.nixosModules.purism-librem-13v3 ]; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| hosts/librem.nix: |  | ||||||
| ```nix |  | ||||||
| { suites, ... }: |  | ||||||
| { |  | ||||||
|   imports = suites.laptop; |  | ||||||
| 
 |  | ||||||
|   boot.loader.systemd-boot.enable = true; |  | ||||||
|   boot.loader.efi.canTouchEfiVariables = true; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/" = { device = "/dev/disk/by-label/nixos"; }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| [nixos-hardware]: https://github.com/NixOS/nixos-hardware |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| # Key Concepts |  | ||||||
| 
 |  | ||||||
| Key concepts are derived from [digga][digga]. Please refer to its |  | ||||||
| [docs][digga-docs] for more details. |  | ||||||
| 
 |  | ||||||
| This section is dedicated to helping you develop a more hands on |  | ||||||
| understanding of them them. |  | ||||||
| 
 |  | ||||||
| [digga-docs]: https://digga.divnix.com |  | ||||||
| [digga]: https://github.com/divnix/digga |  | ||||||
|  | @ -1,42 +0,0 @@ | ||||||
| # Overrides |  | ||||||
| Each NixOS host follows one channel. But many times it is useful to get packages |  | ||||||
| or modules from different channels. |  | ||||||
| 
 |  | ||||||
| ## Packages |  | ||||||
| You can make use of `overlays/overrides.nix` to override specific packages in the |  | ||||||
| default channel to be pulled from other channels. That file is simply an example |  | ||||||
| of how any overlay can get `channels` as their first argument. |  | ||||||
| 
 |  | ||||||
| You can add overlays to any channel to override packages from other channels. |  | ||||||
| 
 |  | ||||||
| Pulling the manix package from the `latest` channel: |  | ||||||
| ```nix |  | ||||||
| channels: final: prev: { |  | ||||||
|   __dontExport = true; |  | ||||||
|   inherit (pkgs.latest) manix; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| It is recommended to set the `__dontExport` property for override specific |  | ||||||
| overlays. `overlays/overrides.nix` is the best place to consolidate all package |  | ||||||
| overrides and the property is already set for you. |  | ||||||
| 
 |  | ||||||
| ## Modules |  | ||||||
| 
 |  | ||||||
| You can also pull modules from other channels. All modules have access to the  |  | ||||||
| `modulesPath` for each channel as `<channelName>ModulesPath`. And you can use |  | ||||||
| `disabledModules` to remove modules from the current channel. |  | ||||||
| 
 |  | ||||||
| To pull zsh module from the `latest` channel this code can be placed in any module, whether its your host file, a profile, or a module in ./modules etc: |  | ||||||
| ```nix |  | ||||||
| { latestModulesPath }: |  | ||||||
| { |  | ||||||
|   imports = [ "${latestModulesPath}/programs/zsh/zsh.nix" ]; |  | ||||||
|   disabledModules = [ "programs/zsh/zsh.nix" ]; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > Sometimes a modules name will change from one branch to another. |  | ||||||
| 
 |  | ||||||
| [nixpkgs-modules]: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules |  | ||||||
|  | @ -1,67 +0,0 @@ | ||||||
| # Profiles |  | ||||||
| 
 |  | ||||||
| Profiles are a convenient shorthand for the [_definition_][definition] of |  | ||||||
| [options][options] in contrast to their [_declaration_][declaration]. They're |  | ||||||
| built into the NixOS module system for a reason: to elegantly provide a clear |  | ||||||
| separation of concerns. |  | ||||||
| 
 |  | ||||||
| ## Creation |  | ||||||
| Profiles are created with the `rakeLeaves` function which recursively collects |  | ||||||
| `.nix` files from within a folder. The recursion stops at folders with a `default.nix`  |  | ||||||
| in them. You end up with an attribute set with leaves(paths to profiles) or |  | ||||||
| nodes(attrsets leading to more nodes or leaves). |  | ||||||
| 
 |  | ||||||
| A profile is used for quick modularization of [interelated bits](./profiles.md#subprofiles). |  | ||||||
| 
 |  | ||||||
| > ##### _Notes:_ |  | ||||||
| > * For _declaring_ module options, there's the [modules](../outputs/modules.md) directory. |  | ||||||
| > * This directory takes inspiration from |  | ||||||
| >   [upstream](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/profiles) |  | ||||||
| >   . |  | ||||||
| 
 |  | ||||||
| ### Nested profiles |  | ||||||
| Profiles can be nested in attribute sets due to the recursive nature of `rakeLeaves`. |  | ||||||
| This can be useful to have a set of profiles created for a specific purpose. It is |  | ||||||
| sometimes useful to have a `common` profile that has high level concerns related |  | ||||||
| to all its sister profiles. |  | ||||||
| 
 |  | ||||||
| ### Example |  | ||||||
| 
 |  | ||||||
| profiles/develop/common.nix: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   imports = [ ./zsh ]; |  | ||||||
|   # some generic development concerns ... |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| profiles/develop/zsh.nix: |  | ||||||
| ```nix |  | ||||||
| {  ... }: |  | ||||||
| { |  | ||||||
|   programs.zsh.enable = true; |  | ||||||
|   # zsh specific options ... |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| The examples above will end up with a profiles set like this: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   develop = { |  | ||||||
|     common = ./profiles/develop/common.nix; |  | ||||||
|     zsh = ./profiles/develop/zsh.nix; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Conclusion |  | ||||||
| Profiles are the most important concept in DevOS. They allow us to keep our |  | ||||||
| Nix expressions self contained and modular. This way we can maximize reuse |  | ||||||
| across hosts while minimizing boilerplate. Remember, anything machine |  | ||||||
| specific belongs in your [host](hosts.md) files instead. |  | ||||||
| 
 |  | ||||||
| [definition]: https://nixos.org/manual/nixos/stable/index.html#sec-option-definitions |  | ||||||
| [declaration]: https://nixos.org/manual/nixos/stable/index.html#sec-option-declarations |  | ||||||
| [options]: https://nixos.org/manual/nixos/stable/index.html#sec-writing-modules |  | ||||||
| [spec]: https://github.com/divnix/devos/tree/core/lib/devos/mkProfileAttrs.nix |  | ||||||
| [config]: https://nixos.wiki/wiki/Module#structure |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| # Suites |  | ||||||
| Suites provide a mechanism for users to easily combine and name collecitons of |  | ||||||
| profiles. |  | ||||||
| 
 |  | ||||||
| `suites` are defined in the `importables` argument in either the `home` or `nixos` |  | ||||||
| namespace. They are a special case of an `importable` which get passed as a special |  | ||||||
| argument (one that can be use in an `imports` line) to your hosts. All lists defined |  | ||||||
| in `suites` are flattened and type-checked as paths. |  | ||||||
| 
 |  | ||||||
| ## Definition |  | ||||||
| ```nix |  | ||||||
| rec { |  | ||||||
|   workstation = [ profiles.develop profiles.graphical users.nixos ]; |  | ||||||
|   mobileWS = workstation ++ [ profiles.laptop ]; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| `hosts/my-laptop.nix`: |  | ||||||
| ```nix |  | ||||||
| { suites, ... }: |  | ||||||
| { |  | ||||||
|   imports = suites.mobileWS; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  | @ -1,77 +0,0 @@ | ||||||
| > ##### _Note:_ |  | ||||||
| > This  section and its semantics need a conceptiual rework. |  | ||||||
| > Since recently [portable home configurations][portableuser] |  | ||||||
| > that are not bound to any specific host are a thing. |  | ||||||
| 
 |  | ||||||
| # Users |  | ||||||
| 
 |  | ||||||
| Users are a special case of [profiles](profiles.md) that define system |  | ||||||
| users and [home-manager][home-manager] configurations. For your convenience, |  | ||||||
| home manager is wired in by default so all you have to worry about is declaring |  | ||||||
| your users. For a fully fleshed out example, check out the developers personal |  | ||||||
| [branch](https://github.com/divnix/devos/tree/nrd/users/nrd/default.nix). |  | ||||||
| 
 |  | ||||||
| ## Basic Usage |  | ||||||
| `users/myuser/default.nix`: |  | ||||||
| ```nix |  | ||||||
| { ... }: |  | ||||||
| { |  | ||||||
|   users.users.myuser = { |  | ||||||
|     isNormalUser = true; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   home-manager.users.myuser = { |  | ||||||
|     programs.mpv.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Home Manager |  | ||||||
| Home Manager support follows the same principles as regular nixos configurations, |  | ||||||
| it even gets its own namespace in your `flake.nix` as `home`. |  | ||||||
| 
 |  | ||||||
| All modules defined in [user modules][modules-list] will be imported to |  | ||||||
| Home Manager. |  | ||||||
| User profiles can be collected in a similar fashion as system ones into a `suites` |  | ||||||
| argument that gets passed to your home-manager users. |  | ||||||
| 
 |  | ||||||
| ### Example |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   home-manager.users.nixos = { suites, ... }: { |  | ||||||
|     imports = suites.base; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## External Usage |  | ||||||
| You can easily use the defined home-manager configurations outside of NixOS |  | ||||||
| using the `homeConfigurations` flake output. The [flk](../flk/index.md) helper |  | ||||||
| script makes this even easier. |  | ||||||
| 
 |  | ||||||
| This is great for keeping your environment consistent across Unix systems, |  | ||||||
| including OSX. |  | ||||||
| 
 |  | ||||||
| ### From within the projects devshell: |  | ||||||
| ```sh |  | ||||||
| # builds the nixos user defined in the NixOS host |  | ||||||
| flk home NixOS nixos |  | ||||||
| 
 |  | ||||||
| # build and activate |  | ||||||
| flk home NixOS nixos switch |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Manually from outside the project: |  | ||||||
| ```sh |  | ||||||
| # build |  | ||||||
| nix build "github:divnix/devos#homeConfigurations.nixos@NixOS.home.activationPackage" |  | ||||||
| 
 |  | ||||||
| # activate |  | ||||||
| ./result/activate && unlink result |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| [home-manager]: https://nix-community.github.io/home-manager |  | ||||||
| [modules-list]: https://github.com/divnix/devos/tree/core/users/modules/module-list.nix |  | ||||||
| [portableuser]: https://digga.divnix.com/api-reference-home.html#homeusers |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| # Cachix |  | ||||||
| The system will automatically pull a cachix.nix at the root if one exists. |  | ||||||
| This is usually created automatically by a `sudo cachix use`. If you're more |  | ||||||
| inclined to keep the root clean, you can drop any generated files in the |  | ||||||
| `cachix` directory into the `profiles/cachix` directory without further |  | ||||||
| modification. |  | ||||||
| 
 |  | ||||||
| For example, to add your own cache, assuming the template lives in /etc/nixos, |  | ||||||
| by simply running `sudo cachix use yourcache`. Then, optionally, move |  | ||||||
| `cachix/yourcache.nix` to `profiles/cachix/yourcache.nix` |  | ||||||
| 
 |  | ||||||
| These caches are only added to the system after a `nixos-rebuild switch`, so it |  | ||||||
| is recommended to call `cachix use nrdxp` before the initial deployment, as it |  | ||||||
| will save a lot of build time. |  | ||||||
| 
 |  | ||||||
| In the future, users will be able to skip this step once the ability to define |  | ||||||
| the nix.conf within the flake is fully fleshed out upstream. |  | ||||||
|  | @ -1,49 +0,0 @@ | ||||||
| # deploy-rs |  | ||||||
| [Deploy-rs][d-rs] is a tool for managing NixOS remote machines. It was |  | ||||||
| chosen for devos after the author experienced some frustrations with the |  | ||||||
| stateful nature of nixops' db. It was also designed from scratch to support |  | ||||||
| flake based deployments, and so is an excellent tool for the job. |  | ||||||
| 
 |  | ||||||
| By default, all the [hosts](../concepts/hosts.md) are also available as deploy-rs nodes, |  | ||||||
| configured with the hostname set to `networking.hostName`; overridable via |  | ||||||
| the command line. |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| 
 |  | ||||||
| Just add your ssh key to the host: |  | ||||||
| ```nix |  | ||||||
| { ... }: |  | ||||||
| { |  | ||||||
|   users.users.${sshUser}.openssh.authorizedKeys.keyFiles = [ |  | ||||||
|     ../secrets/path/to/key.pub |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| And the private key to your user: |  | ||||||
| ```nix |  | ||||||
| { ... }: |  | ||||||
| { |  | ||||||
|   home-manager.users.${sshUser}.programs.ssh = { |  | ||||||
|     enable = true; |  | ||||||
| 
 |  | ||||||
|     matchBlocks = { |  | ||||||
|       ${host} = { |  | ||||||
|         host = hostName; |  | ||||||
|         identityFile = ../secrets/path/to/key; |  | ||||||
|         extraOptions = { AddKeysToAgent = "yes"; }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| And run the deployment: |  | ||||||
| ```sh |  | ||||||
| deploy "flk#hostName" --hostname host.example.com |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > Your user will need **passwordless** sudo access |  | ||||||
| 
 |  | ||||||
| [d-rs]: https://github.com/serokell/deploy-rs |  | ||||||
|  | @ -1,36 +0,0 @@ | ||||||
| # Hercules CI |  | ||||||
| If you start adding your own packages and configurations, you'll probably have |  | ||||||
| at least a few binary artifacts. With hercules we can build every package in |  | ||||||
| our configuration automatically, on every commit. Additionally, we can have it |  | ||||||
| upload all our build artifacts to a binary cache like [cachix][cachix]. |  | ||||||
| 
 |  | ||||||
| This will work whether your copy is a fork, or a bare template, as long as your |  | ||||||
| repo is hosted on GitHub. |  | ||||||
| 
 |  | ||||||
| ## Setup |  | ||||||
| Just head over to [hercules-ci.com](https://hercules-ci.com) to make an account. |  | ||||||
| 
 |  | ||||||
| Then follow the docs to set up an [agent][agent], if you want to deploy to a |  | ||||||
| binary cache (and of course you do), be sure _not_ to skip the |  | ||||||
| [binary-caches.json][cache]. |  | ||||||
| 
 |  | ||||||
| ## Ready to Use |  | ||||||
| The repo is already set up with the proper _default.nix_ file, building all |  | ||||||
| declared packages, checks, profiles and shells. So you can see if something |  | ||||||
| breaks, and never build the same package twice! |  | ||||||
| 
 |  | ||||||
| If you want to get fancy, you could even have hercules |  | ||||||
| [deploy your configuration](https://docs.hercules-ci.com/hercules-ci-effects/guide/deploy-a-nixos-machine/)! |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > Hercules doesn't have access to anything encrypted in the |  | ||||||
| > [secrets folder](../../secrets), so none of your secrets will accidentally get |  | ||||||
| > pushed to a cache by mistake. |  | ||||||
| > |  | ||||||
| > You could pull all your secrets via your user, and then exclude it from |  | ||||||
| > [allUsers](https://github.com/nrdxp/devos/blob/nrd/suites/default.nix#L17) |  | ||||||
| > to keep checks passing. |  | ||||||
| 
 |  | ||||||
| [agent]: https://docs.hercules-ci.com/hercules-ci/getting-started/#github |  | ||||||
| [cache]: https://docs.hercules-ci.com/hercules-ci/getting-started/deploy/nixos/#_3_configure_a_binary_cache |  | ||||||
| [cachix]: https://cachix.org |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| # Integrations |  | ||||||
| This section explores some of the optional tools included with devos to provide |  | ||||||
| a solution to common concerns such as ci and remote deployment. An effort is |  | ||||||
| made to choose tools that treat nix, and where possible flakes, as first class |  | ||||||
| citizens. |  | ||||||
|  | @ -1,43 +0,0 @@ | ||||||
| # nvfetcher |  | ||||||
| [NvFetcher][nvf] is a workflow companion for updating nix sources. |  | ||||||
| 
 |  | ||||||
| You can specify an origin source and an update configuration, and |  | ||||||
| nvfetcher can for example track updates to a specific branch and |  | ||||||
| automatically update your nix sources configuration on each run |  | ||||||
| to the tip of that branch. |  | ||||||
| 
 |  | ||||||
| All package source declaration is done in [sources.toml][sources.toml]. |  | ||||||
| 
 |  | ||||||
| From within the devshell of this repo, run `nvfetcher`, a wrapped |  | ||||||
| version of `nvfetcher` that knows where to find and place its files |  | ||||||
| and commit the results. |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| 
 |  | ||||||
| Statically fetching (not tracking) a particular tag from a github repo: |  | ||||||
| ```toml |  | ||||||
| [manix] |  | ||||||
| src.manual = "v0.6.3" |  | ||||||
| fetch.github = "mlvzk/manix" |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Tracking the latest github _release_ from a github repo: |  | ||||||
| ```toml |  | ||||||
| [manix] |  | ||||||
| src.github = "mlvzk/manix" # responsible for tracking |  | ||||||
| fetch.github = "mlvzk/manix" # responsible for fetching |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Tracking the latest commit of a git repository and fetch from a git repo: |  | ||||||
| ```toml |  | ||||||
| [manix] |  | ||||||
| src.git = "https://github.com/mlvzk/manix.git" # responsible for tracking |  | ||||||
| fetch.git = "https://github.com/mlvzk/manix.git" # responsible for fetching |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > Please refer to the [NvFetcher Readme][nvf-readme] for more options. |  | ||||||
| 
 |  | ||||||
| [nvf]: https://github.com/berberman/nvfetcher |  | ||||||
| [nvf-readme]: https://github.com/berberman/nvfetcher#readme |  | ||||||
| [sources.toml]: https://github.com/divnix/devos/tree/core/pkgs/sources.toml |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| # Layout |  | ||||||
| Each of the following sections is a directory whose contents are output to the |  | ||||||
| outside world via the flake's outputs. Check each chapter for details. |  | ||||||
|  | @ -1,79 +0,0 @@ | ||||||
| # Modules |  | ||||||
| The modules directory is a replica of nixpkg's NixOS [modules][nixpkgs-modules] |  | ||||||
| , and follows the same semantics. This allows for trivial upstreaming into |  | ||||||
| nixpkgs proper once your module is sufficiently stable. |  | ||||||
| 
 |  | ||||||
| All modules linked in _module-list.nix_ are automatically exported via |  | ||||||
| `nixosModules.<file-basename>`, and imported into all [hosts](../concepts/hosts.md). |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > This is reserved for declaring brand new module options. If you just want to |  | ||||||
| > declare a coherent configuration of already existing and related NixOS options |  | ||||||
| > , use [profiles](../concepts/profiles.md) instead. |  | ||||||
| 
 |  | ||||||
| ## Semantics |  | ||||||
| In case you've never written a module for nixpkgs before, here is a brief |  | ||||||
| outline of the process. |  | ||||||
| 
 |  | ||||||
| ### Declaration |  | ||||||
| modules/services/service-category/my-service.nix: |  | ||||||
| ```nix |  | ||||||
| { config, lib, ... }: |  | ||||||
| let |  | ||||||
|   cfg = config.services.myService; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.services.myService = { |  | ||||||
|     enable = lib.mkEnableOption "Description of my new service."; |  | ||||||
| 
 |  | ||||||
|     # additional options ... |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = lib.mkIf cfg.enable { |  | ||||||
|     # implementation ... |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Import |  | ||||||
| modules/module-list.nix: |  | ||||||
| ```nix |  | ||||||
| [ |  | ||||||
|   ./services/service-category/my-service.nix |  | ||||||
| ] |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| 
 |  | ||||||
| ### Internal |  | ||||||
| profiles/profile-category/my-profile.nix: |  | ||||||
| ```nix |  | ||||||
| { ... }: |  | ||||||
| { |  | ||||||
|   services.MyService.enable = true; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### External |  | ||||||
| flake.nix: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   # inputs omitted |  | ||||||
| 
 |  | ||||||
|   outputs = { self, devos, nixpkgs, ... }: { |  | ||||||
|     nixosConfigurations.myConfig = nixpkgs.lib.nixosSystem { |  | ||||||
|       system = "..."; |  | ||||||
| 
 |  | ||||||
|       modules = [ |  | ||||||
|         devos.nixosModules.my-service |  | ||||||
|         ({ ... }: { |  | ||||||
|           services.MyService.enable = true; |  | ||||||
|         }) |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| [nixpkgs-modules]: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| # Overlays |  | ||||||
| Writing overlays is a common occurence when using a NixOS system. Therefore, |  | ||||||
| we want to keep the process as simple and straightforward as possible. |  | ||||||
| 
 |  | ||||||
| Any _.nix_ files declared in this directory will be assumed to be a valid |  | ||||||
| overlay, and will be automatically imported into all [hosts](../concepts/hosts.md), and |  | ||||||
| exported via `overlays.<channel>/<pkgName>` _as well as_ |  | ||||||
| `packages.<system>.<pkgName>` (for valid systems), so all you have to do is |  | ||||||
| write it. |  | ||||||
| 
 |  | ||||||
| ## Example |  | ||||||
| overlays/kakoune.nix: |  | ||||||
| ```nix |  | ||||||
| final: prev: { |  | ||||||
|   kakoune = prev.kakoune.override { |  | ||||||
|     configure.plugins = with final.kakounePlugins; [ |  | ||||||
|       (kak-fzf.override { fzf = final.skim; }) |  | ||||||
|       kak-auto-pairs |  | ||||||
|       kak-buffers |  | ||||||
|       kak-powerline |  | ||||||
|       kak-vertical-selection |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  | @ -1,109 +0,0 @@ | ||||||
| # Packages |  | ||||||
| Similar to [modules](./modules.md), the pkgs directory mirrors the upstream |  | ||||||
| [nixpkgs/pkgs][pkgs], and for the same reason; if you ever want to upstream |  | ||||||
| your package, it's as simple as dropping it into the nixpkgs/pkgs directory. |  | ||||||
| 
 |  | ||||||
| The only minor difference is that, instead of adding the `callPackage` call to |  | ||||||
| `all-packages.nix`, you just add it the the _default.nix_ in this directory, |  | ||||||
| which is defined as a simple overlay. |  | ||||||
| 
 |  | ||||||
| All the packages are exported via `packages.<system>.<pkg-name>`, for all |  | ||||||
| the supported systems listed in the package's `meta.platforms` attribute. |  | ||||||
| 
 |  | ||||||
| And, as usual, every package in the overlay is also available to any NixOS |  | ||||||
| [host](../concepts/hosts.md). |  | ||||||
| 
 |  | ||||||
| Another convenient difference is that it is possible to use  |  | ||||||
| [nvfetcher](https://github.com/berberman/nvfetcher) to keep packages up to  |  | ||||||
| date. |  | ||||||
| This is best understood by the simple example below. |  | ||||||
| 
 |  | ||||||
| ## Example |  | ||||||
| It is possible to specify sources separately to keep them up to date semi  |  | ||||||
| automatically. |  | ||||||
| The basic rules are specified in pkgs/sources.toml: |  | ||||||
| ```toml |  | ||||||
| # nvfetcher.toml |  | ||||||
| [libinih] |  | ||||||
| src.github = "benhoyt/inih" |  | ||||||
| fetch.github = "benhoyt/inih" |  | ||||||
| ``` |  | ||||||
| After changes to this file as well as to update the packages specified in there run  |  | ||||||
| nvfetcher (for more details see [nvfetcher](https://github.com/berberman/nvfetcher)). |  | ||||||
| 
 |  | ||||||
| The pkgs overlay is managed in |  | ||||||
| pkgs/default.nix: |  | ||||||
| ```nix |  | ||||||
| final: prev: { |  | ||||||
|   # keep sources first, this makes sources available to the pkgs |  | ||||||
|   sources = prev.callPackage (import ./_sources/generated.nix) { }; |  | ||||||
| 
 |  | ||||||
|   # then, call packages with `final.callPackage` |  | ||||||
|   libinih = prev.callPackage ./development/libraries/libinih { }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Lastly the example package is in |  | ||||||
| pkgs/development/libraries/libinih/default.nix: |  | ||||||
| ```nix |  | ||||||
| { stdenv, meson, ninja, lib, sources, ... }: |  | ||||||
| stdenv.mkDerivation { |  | ||||||
|   pname = "libinih"; |  | ||||||
| 
 |  | ||||||
|   # version will resolve to the latest available on gitub |  | ||||||
|   inherit (sources.libinih) version src; |  | ||||||
| 
 |  | ||||||
|   buildInputs = [ meson ninja ]; |  | ||||||
| 
 |  | ||||||
|   # ... |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Migration from flake based approach |  | ||||||
| Previous to nvfetcher it was possible to manage sources via a pkgs/flake.nix, the main changes from there are that sources where in the attribute "srcs" (now "sources") and the contents of the sources where slightly different. |  | ||||||
| In order to switch to the new system, rewrite pkgs/flake.nix to a pkgs/sources.toml file using the documentation of nvfetcher, |  | ||||||
| add the line that calls the sources at the beginning of pkgs/default.nix, and  |  | ||||||
| accomodate the small changes in the packages as can be seen from the example. |  | ||||||
| 
 |  | ||||||
| The example package looked like: |  | ||||||
| 
 |  | ||||||
| pkgs/flake.nix: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   description = "Package sources"; |  | ||||||
| 
 |  | ||||||
|   inputs = { |  | ||||||
|     libinih.url = "github:benhoyt/inih/r53"; |  | ||||||
|     libinih.flake = false; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| pkgs/default.nix: |  | ||||||
| ```nix |  | ||||||
| final: prev: { |  | ||||||
|   # then, call packages with `final.callPackage` |  | ||||||
|   libinih = prev.callPackage ./development/libraries/libinih { }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| pkgs/development/libraries/libinih/default.nix: |  | ||||||
| ```nix |  | ||||||
| { stdenv, meson, ninja, lib, srcs, ... }: |  | ||||||
| let inherit (srcs) libinih; in |  | ||||||
| stdenv.mkDerivation { |  | ||||||
|   pname = "libinih"; |  | ||||||
| 
 |  | ||||||
|   # version will resolve to 53, as specified in the flake.nix file |  | ||||||
|   inherit (libinih) version; |  | ||||||
| 
 |  | ||||||
|   src = libinih; |  | ||||||
| 
 |  | ||||||
|   buildInputs = [ meson ninja ]; |  | ||||||
| 
 |  | ||||||
|   # ... |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| [pkgs]: https://github.com/NixOS/nixpkgs/tree/master/pkgs |  | ||||||
							
								
								
									
										110
									
								
								doc/secrets.md
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								doc/secrets.md
									
									
									
									
									
								
							|  | @ -1,110 +0,0 @@ | ||||||
| # Secrets |  | ||||||
| Secrets are managed using [git-crypt][git-crypt] and [agenix][agenix] |  | ||||||
| so you can keep your flake in a public repository like GitHub without |  | ||||||
| exposing your password or other sensitive data. |  | ||||||
| 
 |  | ||||||
| By default, everything in the secrets folder is automatically encrypted. Just |  | ||||||
| be sure to run `git-crypt init` before putting anything in here. |  | ||||||
| 
 |  | ||||||
| ## Agenix |  | ||||||
| Currently, there is [no mechanism][secrets-issue] in nix itself to deploy secrets |  | ||||||
| within the nix store because it is world-readable. |  | ||||||
| 
 |  | ||||||
| Most NixOS modules have the ability to set options to files in the system, outside |  | ||||||
| the nix store, that contain sensitive information. You can use [agenix][agenix] |  | ||||||
| to easily setup those secret files declaratively. |  | ||||||
| 
 |  | ||||||
| [agenix][agenix] encrypts secrets and stores them as .age files in your repository. |  | ||||||
| Age files are encrypted with multiple ssh public keys, so any host or user with a |  | ||||||
| matching ssh private key can read the data. The [age module][age module] will add those |  | ||||||
| encrypted files to the nix store and decrypt them on activation to `/run/secrets`. |  | ||||||
| 
 |  | ||||||
| ### Setup |  | ||||||
| All hosts must have openssh enabled, this is done by default in the core profile. |  | ||||||
| 
 |  | ||||||
| You need to populate your `secrets/secrets.nix` with the proper ssh public keys. |  | ||||||
| Be extra careful to make sure you only add public keys, you should never share a |  | ||||||
| private key!! |  | ||||||
| 
 |  | ||||||
| secrets/secrets.nix: |  | ||||||
| ```nix |  | ||||||
| let |  | ||||||
|   system = "<system ssh key>"; |  | ||||||
|   user = "<user ssh key>"; |  | ||||||
|   allKeys = [ system user ]; |  | ||||||
| in |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| On most systems, you can get your systems ssh public key from `/etc/ssh/ssh_host_ed25519_key.pub`. If |  | ||||||
| this file doesn't exist you likely need to enable openssh and rebuild your system. |  | ||||||
| 
 |  | ||||||
| Your users ssh public key is probably stored in `~/.ssh/id_ed25519.pub` or |  | ||||||
| `~/.ssh/id_rsa.pub`. If you haven't generated a ssh key yet, be sure do so: |  | ||||||
| ```sh |  | ||||||
| ssh-keygen -t ed25519 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > The underlying tool used by agenix, rage, doesn't work well with password protected |  | ||||||
| > ssh keys. So if you have lots of secrets you might have to type in your password many |  | ||||||
| > times. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### Secrets |  | ||||||
| You will need the `agenix` command to create secrets. DevOS conveniently provides that |  | ||||||
| in the devShell, so just run `nix develop` whenever you want to edit secrets. Make sure |  | ||||||
| to always run `agenix` while in the `secrets/` folder, so it can pick up your `secrets.nix`. |  | ||||||
| 
 |  | ||||||
| To create secrets, simply add lines to your `secrets/secrets.nix`: |  | ||||||
| ``` |  | ||||||
| let |  | ||||||
|   ... |  | ||||||
|   allKeys = [ system user ]; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   "secret.age".publicKeys = allKeys; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| That would tell agenix to create a `secret.age` file that is encrypted with the `system` |  | ||||||
| and `user` ssh public key. |  | ||||||
| 
 |  | ||||||
| Then go into the `secrets` folder and run: |  | ||||||
| ```sh |  | ||||||
| agenix -e secret.age |  | ||||||
| ``` |  | ||||||
| This will create the `secret.age`, if it doesn't already exist, and allow you to edit it. |  | ||||||
| 
 |  | ||||||
| If you ever change the `publicKeys` entry of any secret make sure to rekey the secrets: |  | ||||||
| ```sh |  | ||||||
| agenix --rekey |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Usage |  | ||||||
| Once you have your secret file encrypted and ready to use, you can utilize the [age module][age module] |  | ||||||
| to ensure that your secrets end up in `/run/secrets`. |  | ||||||
| 
 |  | ||||||
| In any profile that uses a NixOS module that requires a secret you can enable a particular secret like so: |  | ||||||
| 
 |  | ||||||
| ```nix |  | ||||||
| { self, ... }: |  | ||||||
| { |  | ||||||
|   age.secrets.mysecret.file = "${self}/secrets/mysecret.age"; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Then you can just pass the path `/run/secrets/mysecret` to the module. |  | ||||||
| 
 |  | ||||||
| You can make use of the many options provided by the age module to customize where and how |  | ||||||
| secrets get decrypted. You can learn about them by looking at the |  | ||||||
| [age module][age module]. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > You can take a look at the [agenix repository][agenix] for more information |  | ||||||
| > about the tool. |  | ||||||
| 
 |  | ||||||
| [git-crypt]: https://github.com/AGWA/git-crypt |  | ||||||
| [agenix]: https://github.com/ryantm/agenix |  | ||||||
| [age module]: https://github.com/ryantm/agenix/blob/master/modules/age.nix |  | ||||||
| [secrets-issue]: https://github.com/NixOS/nix/issues/8 |  | ||||||
|  | @ -1,102 +0,0 @@ | ||||||
| # Bootstrapping |  | ||||||
| 
 |  | ||||||
| This will help you boostrap a bare host with the help of the |  | ||||||
| [bespoke iso](./iso.md) live installer. |  | ||||||
| 
 |  | ||||||
| _Note: nothing prevents you from remotely executing the boostrapping |  | ||||||
| process. See below._ |  | ||||||
| 
 |  | ||||||
| Once your target host has booted into the live iso, you need to partion |  | ||||||
| and format your disk according to the [official manual][manual]. |  | ||||||
| 
 |  | ||||||
| ## Mount partitions |  | ||||||
| 
 |  | ||||||
| Then properly mount the formatted partitions at `/mnt`, so that you can |  | ||||||
| install your system to those new partitions. |  | ||||||
| 
 |  | ||||||
| Mount `nixos` partition to `/mnt` and — for UEFI — `boot` |  | ||||||
| partition to `/mnt/boot`: |  | ||||||
| 
 |  | ||||||
| ```console |  | ||||||
| $ mount /dev/disk/by-label/nixos /mnt |  | ||||||
| $ mkdir -p /mnt/boot && mount /dev/disk/by-label/boot /mnt/boot # UEFI only |  | ||||||
| $ swapon /dev/disk/by-label/swap |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Add some extra space to the store. In the iso, it's running on a tmpfs |  | ||||||
| off your RAM: |  | ||||||
| ```console |  | ||||||
| $ mkdir -p /mnt/tmpstore/{work,store} |  | ||||||
| $ mount -t overlay overlay -olowerdir=/nix/store,upperdir=/mnt/tmpstore/store,workdir=/mnt/tmpstore/work /nix/store |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Install |  | ||||||
| 
 |  | ||||||
| Install off of a copy of devos from the time the iso was built: |  | ||||||
| 
 |  | ||||||
| ```console |  | ||||||
| $ cd /iso/devos |  | ||||||
| $ nixos-install --flake .#NixOS |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Notes of interest |  | ||||||
| 
 |  | ||||||
| ### Remote access to the live installer |  | ||||||
| 
 |  | ||||||
| The iso live installer comes preconfigured with a network configuration |  | ||||||
| which announces it's hostname via [MulticastDNS][mDNS] as `hostname.local`, |  | ||||||
| that is `bootstrap.local` in the [iso example](./iso). |  | ||||||
| 
 |  | ||||||
| In the rare case that [MulticastDNS][mDNS] is not availabe or turned off |  | ||||||
| in your network, there is a static link-local IPv6 address configured to |  | ||||||
| `fe80::47`(mnemonic from the letter's position in the english alphabet: |  | ||||||
| `n=14 i=9 x=24; 47 = n+i+x`). |  | ||||||
| 
 |  | ||||||
| Provided that you have added your public key to the authorized keys of the |  | ||||||
| `root` user _(hint: [`deploy-rs`](../integrations/deploy.md) needs passwordless |  | ||||||
| sudo access)_: |  | ||||||
| 
 |  | ||||||
| ```nix |  | ||||||
| { ... }: |  | ||||||
| { |  | ||||||
|   users.users.root.openssh.authorizedKeys.keyFiles = [ |  | ||||||
|     ../secrets/path/to/key.pub |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| You can then ssh into the live installer through one of the |  | ||||||
| following options: |  | ||||||
| 
 |  | ||||||
| ```console |  | ||||||
| ssh root@bootstrap.local |  | ||||||
| 
 |  | ||||||
| ssh root@fe80::47%eno1  # where eno1 is your network interface on which you are linked to the target |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| _Note: the [static link-local IPv6 address][staticLLA] and [MulticastDNS][mDNS] is only |  | ||||||
| configured on the live installer. If you wish to enable [MulticastDNS][mDNS] |  | ||||||
| for your environment, you ought to configure that in a regular [profile](../concepts/profiles.md)._ |  | ||||||
| 
 |  | ||||||
| ### EUI-64 LLA & Host Identity |  | ||||||
| 
 |  | ||||||
| The iso's IPv6 Link Local Address (LLA) is configured with a static 64-bit Extended |  | ||||||
| Unique Identifiers (EUI-64) that is derived from the host interface's Message |  | ||||||
| Authentication Code (MAC) address. |  | ||||||
| 
 |  | ||||||
| After a little while (a few seconds), you can remotely discover this unique and host |  | ||||||
| specific address over [NDP][NDP] for example with: |  | ||||||
| 
 |  | ||||||
| ```console |  | ||||||
| ip -6 neigh show # also shows fe80::47 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ***This LLA is stable for the host, unless you need to swap that particular network card.*** |  | ||||||
| Under this reservation, though, you may use this EUI-64 to wire up a specific |  | ||||||
| (cryptographic) host identity. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [manual]: https://nixos.org/manual/nixos/stable/index.html#sec-installation-partitioning |  | ||||||
| [mDNS]: https://en.wikipedia.org/wiki/Multicast_DNS |  | ||||||
| [NDP]: https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol |  | ||||||
| [staticLLA]: https://tools.ietf.org/html/rfc7404 |  | ||||||
|  | @ -1,54 +0,0 @@ | ||||||
| # From NixOS |  | ||||||
| 
 |  | ||||||
| ## Generate Configuration |  | ||||||
| Assuming you're happy with your existing partition layout, you can generate a |  | ||||||
| basic NixOS configuration for your system using: |  | ||||||
| ```sh |  | ||||||
| flk up |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| This will make a new file `hosts/up-$(hostname).nix`, which you can edit to |  | ||||||
| your liking. |  | ||||||
| 
 |  | ||||||
| You must then add a host to `nixos.hosts` in flake.nix: |  | ||||||
| ```nix |  | ||||||
| { |  | ||||||
|   nixos.hosts = { |  | ||||||
|     modules = hosts/NixOS.nix; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Make sure your `i18n.defaultLocale` and `time.timeZone` are set properly for |  | ||||||
| your region. Keep in mind that `networking.hostName` will be automatically |  | ||||||
| set to the name of your host; |  | ||||||
| 
 |  | ||||||
| Now might be a good time to read the docs on [suites](../concepts/suites.md) and |  | ||||||
| [profiles](../concepts/profiles.md) and add or create any that you need. |  | ||||||
| 
 |  | ||||||
| > ##### _Note:_ |  | ||||||
| > While the `up` sub-command is provided as a convenience to quickly set up and |  | ||||||
| > install a "fresh" NixOS system on current hardware, committing these files is |  | ||||||
| > discouraged. |  | ||||||
| > |  | ||||||
| > They are placed in the git staging area automatically because they would be |  | ||||||
| > invisible to the flake otherwise, but it is best to move what you need from |  | ||||||
| > them directly into a host module of your own making, and commit that instead. |  | ||||||
| # Installation |  | ||||||
| 
 |  | ||||||
| Once you're ready to deploy `hosts/my-host.nix`: |  | ||||||
| ```sh |  | ||||||
| flk my-host switch |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| This calls `nixos-rebuild` with sudo to build and install your configuration. |  | ||||||
| 
 |  | ||||||
| > ##### _Notes:_ |  | ||||||
| > - Instead of `switch`, you can pass `build`, `test`, `boot`, etc just as with |  | ||||||
| >   `nixos-rebuild`. |  | ||||||
| > |  | ||||||
| > - It is convenient to have the template living at `/etc/nixos` so you can |  | ||||||
| >   simply `sudo nixos-rebuild switch` from anywhere on the system, but it is |  | ||||||
| >   not required. |  | ||||||
| 
 |  | ||||||
|  | @ -1,41 +0,0 @@ | ||||||
| # Quick Start |  | ||||||
| The only dependency is nix, so make sure you have it [installed][install-nix]. |  | ||||||
| 
 |  | ||||||
| ## Get the Template |  | ||||||
| Here is a snippet that will get you the template without the git history: |  | ||||||
| ```sh |  | ||||||
| nix-shell -p cachix --run "cachix use nrdxp" |  | ||||||
| 
 |  | ||||||
| nix-shell https://github.com/divnix/devos/archive/core.tar.gz -A shell \ |  | ||||||
|   --run "flk get core" |  | ||||||
| 
 |  | ||||||
| cd flk |  | ||||||
| 
 |  | ||||||
| nix-shell |  | ||||||
| 
 |  | ||||||
| git init |  | ||||||
| git add . |  | ||||||
| git commit -m init |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| This will place you in a new folder named `flk` with git initialized, and a |  | ||||||
| nix-shell that provides all the dependencies, including the unstable nix |  | ||||||
| version required. |  | ||||||
| 
 |  | ||||||
| In addition, the [binary cache](../integrations/cachix.md) is added for faster deployment. |  | ||||||
| 
 |  | ||||||
| > ##### _Notes:_ |  | ||||||
| > - Flakes ignore files that have not been added to git, so be sure to stage new |  | ||||||
| >   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) |  | ||||||
| - [Bootstrap Host](./bootstrapping.md) |  | ||||||
| - [Already on NixOS](./from-nixos.md) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| [install-nix]: https://nixos.org/manual/nix/stable/#sect-multi-user-installation |  | ||||||
|  | @ -1,22 +0,0 @@ | ||||||
| # ISO |  | ||||||
| 
 |  | ||||||
| Making and writing an installable iso for `hosts/bootstrap.nix` is as simple as: |  | ||||||
| ```sh |  | ||||||
| bud build bootstrap bootstrapIso |  | ||||||
| sudo -E $(which bud) burn |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| This works for any host. |  | ||||||
| 
 |  | ||||||
| ## ISO image nix store & 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 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 single usb stick might be ok, whereas when |  | ||||||
| there are bigger differences, a custom-made usb stick will be considerably faster. |  | ||||||
| 
 |  | ||||||
							
								
								
									
										33
									
								
								doc/tests.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								doc/tests.md
									
									
									
									
									
								
							|  | @ -1,33 +0,0 @@ | ||||||
| # Testing |  | ||||||
| 
 |  | ||||||
| Testing is always an important aspect of any software development project, and |  | ||||||
| NixOS offers some incredibly powerful tools to write tests for your |  | ||||||
| configuration, and, optionally, run them in |  | ||||||
| [CI](./integrations/hercules.md). |  | ||||||
| 
 |  | ||||||
| ## Unit Tests |  | ||||||
| Unit tests can be created from regular derivations, and they can do |  | ||||||
| almost anything you can imagine. By convention, it is best to test your |  | ||||||
| packages during their [check phase][check]. All packages and their tests will |  | ||||||
| be built during CI. |  | ||||||
| 
 |  | ||||||
| ## Integration Tests |  | ||||||
| All your profiles defined in suites will be tested in a NixOS VM. |  | ||||||
| 
 |  | ||||||
| You can write integration tests for one or more NixOS VMs that can, |  | ||||||
| optionally, be networked together, and yes, it's as awesome as it sounds! |  | ||||||
| 
 |  | ||||||
| Be sure to use the `mkTest` function from digga, `digga.lib.pkgs-lib.mkTest` |  | ||||||
| which wraps the official [testing-python][testing-python] function to ensure |  | ||||||
| that the system is setup exactly as it is for a bare DevOS system. There are |  | ||||||
| already great resources for learning how to use these tests effectively, |  | ||||||
| including the official [docs][test-doc], a fantastic [blog post][test-blog], |  | ||||||
| and the examples in [nixpkgs][nixos-tests]. |  | ||||||
| 
 |  | ||||||
| [test-doc]: https://nixos.org/manual/nixos/stable/index.html#sec-nixos-tests |  | ||||||
| [test-blog]: https://www.haskellforall.com/2020/11/how-to-use-nixos-for-lightweight.html |  | ||||||
| [default]: https://github.com/divnix/devos/tree/core/tests/default.nix |  | ||||||
| [run-test]: https://github.com/NixOS/nixpkgs/blob/6571462647d7316aff8b8597ecdf5922547bf365/lib/debug.nix#L154-L166 |  | ||||||
| [nixos-tests]: https://github.com/NixOS/nixpkgs/tree/master/nixos/tests |  | ||||||
| [testing-python]: https://github.com/NixOS/nixpkgs/tree/master/nixos/lib/testing-python.nix |  | ||||||
| [check]: https://nixos.org/manual/nixpkgs/stable/#ssec-check-phase |  | ||||||
							
								
								
									
										6
									
								
								doc/theme/highlight.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								doc/theme/highlight.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										555
									
								
								flake.lock
									
									
									
									
									
								
							
							
						
						
									
										555
									
								
								flake.lock
									
									
									
									
									
								
							|  | @ -3,15 +3,15 @@ | ||||||
|     "agenix": { |     "agenix": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1662241716, |         "lastModified": 1665870395, | ||||||
|         "narHash": "sha256-urqPvSvvGUhkwzTDxUI8N1nsdMysbAfjmBNZaTYBZRU=", |         "narHash": "sha256-Tsbqb27LDNxOoPLh0gw2hIb6L/6Ow/6lIBvqcHzEKBI=", | ||||||
|         "owner": "ryantm", |         "owner": "ryantm", | ||||||
|         "repo": "agenix", |         "repo": "agenix", | ||||||
|         "rev": "c96da5835b76d3d8e8d99a0fec6fe32f8539ee2e", |         "rev": "a630400067c6d03c9b3e0455347dc8559db14288", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-utils": "flake-utils", |         "flake-utils": "flake-utils", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ], |         ], | ||||||
|         "poonam": [ |         "poonam": [ | ||||||
|           "poonam" |           "poonam" | ||||||
|  | @ -45,53 +45,20 @@ | ||||||
|         "url": "ssh://gitea@git.sealight.xyz/aynish/basant" |         "url": "ssh://gitea@git.sealight.xyz/aynish/basant" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "blank": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1625557891, |  | ||||||
|         "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", |  | ||||||
|         "owner": "divnix", |  | ||||||
|         "repo": "blank", |  | ||||||
|         "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "divnix", |  | ||||||
|         "repo": "blank", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "darwin": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": "nixpkgs" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1651916036, |  | ||||||
|         "narHash": "sha256-UuD9keUGm4IuVEV6wdSYbuRm7CwfXE63hVkzKDjVsh4=", |  | ||||||
|         "owner": "LnL7", |  | ||||||
|         "repo": "nix-darwin", |  | ||||||
|         "rev": "2f2bdf658d2b79bada78dc914af99c53cad37cba", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "LnL7", |  | ||||||
|         "repo": "nix-darwin", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "deploy": { |     "deploy": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-compat": "flake-compat", |         "flake-compat": "flake-compat", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ], |         ], | ||||||
|         "utils": "utils" |         "utils": "utils" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1659725433, |         "lastModified": 1668797197, | ||||||
|         "narHash": "sha256-1ZxuK67TL29YLw88vQ18Y2Y6iYg8Jb7I6/HVzmNB6nM=", |         "narHash": "sha256-0w6iD3GSSQbIeSFVDzAAQZB+hDq670ZTms3d9XI+BtM=", | ||||||
|         "owner": "serokell", |         "owner": "serokell", | ||||||
|         "repo": "deploy-rs", |         "repo": "deploy-rs", | ||||||
|         "rev": "41f15759dd8b638e7b4f299730d94d5aa46ab7eb", |         "rev": "2a3c5f70eee04a465aa534d8bd4fcc9bb3c4a8ce", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -100,61 +67,6 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "devshell": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": "flake-utils_2", |  | ||||||
|         "nixpkgs": "nixpkgs_2" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1655976588, |  | ||||||
|         "narHash": "sha256-VreHyH6ITkf/1EX/8h15UqhddJnUleb0HgbC3gMkAEQ=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "devshell", |  | ||||||
|         "rev": "899ca4629020592a13a46783587f6e674179d1db", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "devshell", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "digga": { |  | ||||||
|       "inputs": { |  | ||||||
|         "blank": "blank", |  | ||||||
|         "darwin": "darwin", |  | ||||||
|         "deploy": [ |  | ||||||
|           "deploy" |  | ||||||
|         ], |  | ||||||
|         "devshell": "devshell", |  | ||||||
|         "flake-compat": "flake-compat_2", |  | ||||||
|         "flake-utils-plus": "flake-utils-plus", |  | ||||||
|         "home-manager": [ |  | ||||||
|           "home" |  | ||||||
|         ], |  | ||||||
|         "latest": "latest", |  | ||||||
|         "nixlib": [ |  | ||||||
|           "nixos" |  | ||||||
|         ], |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixos" |  | ||||||
|         ], |  | ||||||
|         "nixpkgs-unstable": "nixpkgs-unstable" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1659622306, |  | ||||||
|         "narHash": "sha256-Kpfm2PNs+kZU0W7qcugoPATLG8I2P7FJFGTgsf1LJiU=", |  | ||||||
|         "owner": "divnix", |  | ||||||
|         "repo": "digga", |  | ||||||
|         "rev": "d1193743a535d7fbbc7f3eda4e51295b10bd4d2c", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "divnix", |  | ||||||
|         "repo": "digga", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "dirt-samples-src": { |     "dirt-samples-src": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|  | @ -174,20 +86,20 @@ | ||||||
|     }, |     }, | ||||||
|     "eww": { |     "eww": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-compat": "flake-compat_3", |         "flake-compat": "flake-compat_2", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ], |         ], | ||||||
|         "rust-overlay": [ |         "rust-overlay": [ | ||||||
|           "rust-overlay" |           "rust-overlay" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1663061357, |         "lastModified": 1669643151, | ||||||
|         "narHash": "sha256-zMJslerxTcSQ+A8fI4gFcJioRGs+T55343zOtsnEJ3k=", |         "narHash": "sha256-39/l57QusriyNr426kXNqtub0ciZna+t20VKPYUAgsM=", | ||||||
|         "owner": "elkowar", |         "owner": "elkowar", | ||||||
|         "repo": "eww", |         "repo": "eww", | ||||||
|         "rev": "52e9603dd8c79cbc267a4733389c1f7e7625b352", |         "rev": "ec4c2d1a4f12e9c3664e9f53ad99007b4a10a16a", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -228,54 +140,6 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "flake-compat_3": { |  | ||||||
|       "flake": false, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1650374568, |  | ||||||
|         "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "rev": "b4a34015c698c7793d592d66adbab377907a2be8", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-compat_4": { |  | ||||||
|       "flake": false, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1650374568, |  | ||||||
|         "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "rev": "b4a34015c698c7793d592d66adbab377907a2be8", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-compat_5": { |  | ||||||
|       "flake": false, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1648199409, |  | ||||||
|         "narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=", |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "rev": "64a525ee38886ab9028e6f61790de0832aa3ef03", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "edolstra", |  | ||||||
|         "repo": "flake-compat", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils": { |     "flake-utils": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1638122382, |         "lastModified": 1638122382, | ||||||
|  | @ -291,56 +155,7 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "flake-utils-plus": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": "flake-utils_3" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1654029967, |  | ||||||
|         "narHash": "sha256-my3GQ3mQIw/1f6GPV1IhUZrcYQSWh0YJAMPNBjhXJDw=", |  | ||||||
|         "owner": "gytis-ivaskevicius", |  | ||||||
|         "repo": "flake-utils-plus", |  | ||||||
|         "rev": "6271cf3842ff9c8a9af9e3508c547f86bc77d199", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "gytis-ivaskevicius", |  | ||||||
|         "ref": "refs/pull/120/head", |  | ||||||
|         "repo": "flake-utils-plus", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_2": { |     "flake-utils_2": { | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1642700792, |  | ||||||
|         "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_3": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1644229661, |  | ||||||
|         "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_4": { |  | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1652372896, |         "lastModified": 1652372896, | ||||||
|         "narHash": "sha256-lURGussfF3mGrFPQT3zgW7+RC0pBhbHzco0C7I+ilow=", |         "narHash": "sha256-lURGussfF3mGrFPQT3zgW7+RC0pBhbHzco0C7I+ilow=", | ||||||
|  | @ -355,7 +170,7 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "flake-utils_5": { |     "flake-utils_3": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1659877975, |         "lastModified": 1659877975, | ||||||
|         "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", |         "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", | ||||||
|  | @ -370,42 +185,12 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "flake-utils_6": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1649676176, |  | ||||||
|         "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "flake-utils_7": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1656928814, |  | ||||||
|         "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "numtide", |  | ||||||
|         "repo": "flake-utils", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "grasp": { |     "grasp": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-utils": "flake-utils_4", |         "flake-utils": "flake-utils_2", | ||||||
|         "grasp": "grasp_2", |         "grasp": "grasp_2", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|  | @ -439,217 +224,59 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "home": { |     "hardware": { | ||||||
|  |       "locked": { | ||||||
|  |         "lastModified": 1670174919, | ||||||
|  |         "narHash": "sha256-XdQr3BUnrvVLRFunLWrZORhwYHDG0+9jUUe0Jv1pths=", | ||||||
|  |         "owner": "nixos", | ||||||
|  |         "repo": "nixos-hardware", | ||||||
|  |         "rev": "9d87bc030a0bf3f00e953dbf095a7d8e852dab6b", | ||||||
|  |         "type": "github" | ||||||
|  |       }, | ||||||
|  |       "original": { | ||||||
|  |         "owner": "nixos", | ||||||
|  |         "repo": "nixos-hardware", | ||||||
|  |         "type": "github" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "home-manager": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ], |         ], | ||||||
|         "utils": "utils_2" |         "utils": "utils_2" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1670156115, |         "lastModified": 1669978198, | ||||||
|         "narHash": "sha256-L2FKLedprp3AkQ+GS+2Br7CYWeCmLCjt3zUd87p0lNQ=", |         "narHash": "sha256-U8sZFwIIDFm9w/Kx58sYrIsWpuQUKmkcQmdBkuQ+gkE=", | ||||||
|         "owner": "nix-community", |         "owner": "nix-community", | ||||||
|         "repo": "home-manager", |         "repo": "home-manager", | ||||||
|         "rev": "e704ef9ec7a8ccf8711bb11ff68da06f1917a26d", |         "rev": "71fa4cdf9cd89a3e0d452439b6a2f7f01d6292e9", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|         "owner": "nix-community", |         "owner": "nix-community", | ||||||
|         "ref": "release-22.11", |  | ||||||
|         "repo": "home-manager", |         "repo": "home-manager", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "latest": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1657265485, |  | ||||||
|         "narHash": "sha256-PUQ9C7mfi0/BnaAUX2R/PIkoNCb/Jtx9EpnhMBNrO/o=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "b39924fc7764c08ae3b51beef9a3518c414cdb7d", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "nixos-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "latest_2": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1665081174, |  | ||||||
|         "narHash": "sha256-6hsmzdhdy8Kbvl5e0xZNE83pW3fKQvNiobJkM6KQrgA=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "598f83ebeb2235435189cf84d844b8b73e858e0f", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "nixos-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "naersk": { |  | ||||||
|       "inputs": { |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixos" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1662220400, |  | ||||||
|         "narHash": "sha256-9o2OGQqu4xyLZP9K6kNe1pTHnyPz0Wr3raGYnr9AIgY=", |  | ||||||
|         "owner": "nmattia", |  | ||||||
|         "repo": "naersk", |  | ||||||
|         "rev": "6944160c19cb591eb85bbf9b2f2768a935623ed3", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nmattia", |  | ||||||
|         "repo": "naersk", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "neovim-flake": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-utils": "flake-utils_5", |  | ||||||
|         "nixpkgs": "nixpkgs_3" |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "dir": "contrib", |  | ||||||
|         "lastModified": 1663315670, |  | ||||||
|         "narHash": "sha256-RGoY9o0dN6BhOcjhJxw6XYSxUIDu+tAJl4vp7d9EBSM=", |  | ||||||
|         "owner": "neovim", |  | ||||||
|         "repo": "neovim", |  | ||||||
|         "rev": "0b7a3c173c929085f54a178c9fa852481d5f021e", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "dir": "contrib", |  | ||||||
|         "owner": "neovim", |  | ||||||
|         "repo": "neovim", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "neovim-nightly": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-compat": "flake-compat_4", |  | ||||||
|         "neovim-flake": "neovim-flake", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixos" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1663316300, |  | ||||||
|         "narHash": "sha256-QvFH3kiYJP+KTenixYDIp9bx3xyD36UQse3L4qfC6e4=", |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "neovim-nightly-overlay", |  | ||||||
|         "rev": "dd84dca0ba386b7e49bae4255279d3c4cde9625c", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "neovim-nightly-overlay", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixos": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1670157845, |  | ||||||
|         "narHash": "sha256-epO16PPDkhYicQWQkSYZxU3tJAML/rF0FESR6BMTpYw=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "267a3d939c3aa4cea15d3b1ccac59f5e29c05bb3", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "release-22.11", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixos-hardware": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1663229557, |  | ||||||
|         "narHash": "sha256-1uU4nsDLXKG0AHc/VCsNBAEPkTA/07juYhcEWRb1O1E=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixos-hardware", |  | ||||||
|         "rev": "a0df6cd6e199df4a78c833c273781ea92fa62cfb", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixos-hardware", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1663419078, |         "lastModified": 1669834992, | ||||||
|         "narHash": "sha256-cxEeMnaTGMTeDAvXnZmqcF50qoyJOsQENhYxSnW9ZMs=", |         "narHash": "sha256-YnhZGHgb4C3Q7DSGisO/stc50jFb9F/MzHeKS4giotg=", | ||||||
|         "owner": "NixOS", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "0cfb3c002b61807ca0bab3efe514476bdf2e5478", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "id": "nixpkgs", |  | ||||||
|         "type": "indirect" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs-unstable": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1657292830, |  | ||||||
|         "narHash": "sha256-ldfVSTveWceDCmW6gf3B4kR6vwmz/XS80y5wsLLHFJU=", |  | ||||||
|         "owner": "nixos", |         "owner": "nixos", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "334ec8b503c3981e37a04b817a70e8d026ea9e84", |         "rev": "596a8e828c5dfa504f91918d0fa4152db3ab5502", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|         "owner": "nixos", |         "owner": "nixos", | ||||||
|         "ref": "nixpkgs-unstable", |         "ref": "nixos-22.11", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "nixpkgs_2": { |     "nixpkgs_2": { | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1663419078, |  | ||||||
|         "narHash": "sha256-cxEeMnaTGMTeDAvXnZmqcF50qoyJOsQENhYxSnW9ZMs=", |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "0cfb3c002b61807ca0bab3efe514476bdf2e5478", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "NixOS", |  | ||||||
|         "ref": "nixpkgs-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs_3": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1663357389, |  | ||||||
|         "narHash": "sha256-oYA2nVRSi6yhCBqS5Vz465Hw+3BQOVFEhfbfy//3vTs=", |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "rev": "da6a05816e7fa5226c3f61e285ef8d9dfc868f3c", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nixos", |  | ||||||
|         "ref": "nixos-unstable", |  | ||||||
|         "repo": "nixpkgs", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nixpkgs_4": { |  | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1662446902, |         "lastModified": 1662446902, | ||||||
|         "narHash": "sha256-Dmsd3jSG2ldZUlhFaIwunqgMf14EEK7ylXpw+OPDLxE=", |         "narHash": "sha256-Dmsd3jSG2ldZUlhFaIwunqgMf14EEK7ylXpw+OPDLxE=", | ||||||
|  | @ -664,46 +291,9 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "nur": { |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1663680695, |  | ||||||
|         "narHash": "sha256-sVdmg21MzIS0e+mCyIEInivIodJNYKVicZ3WJr907XI=", |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "NUR", |  | ||||||
|         "rev": "a22f443201174496ce6edb237a2e9596591cd542", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "nix-community", |  | ||||||
|         "repo": "NUR", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "nvfetcher": { |  | ||||||
|       "inputs": { |  | ||||||
|         "flake-compat": "flake-compat_5", |  | ||||||
|         "flake-utils": "flake-utils_6", |  | ||||||
|         "nixpkgs": [ |  | ||||||
|           "nixos" |  | ||||||
|         ] |  | ||||||
|       }, |  | ||||||
|       "locked": { |  | ||||||
|         "lastModified": 1654975372, |  | ||||||
|         "narHash": "sha256-wkNZ16akgKViuZzE/IM+bux4uaJ04KIwUeexH8gBjgw=", |  | ||||||
|         "owner": "berberman", |  | ||||||
|         "repo": "nvfetcher", |  | ||||||
|         "rev": "d4b237c10f14f72f8266b0f658faad822e491e55", |  | ||||||
|         "type": "github" |  | ||||||
|       }, |  | ||||||
|       "original": { |  | ||||||
|         "owner": "berberman", |  | ||||||
|         "repo": "nvfetcher", |  | ||||||
|         "type": "github" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "poonam": { |     "poonam": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "nixpkgs": "nixpkgs_4", |         "nixpkgs": "nixpkgs_2", | ||||||
|         "vimwiki-cli": "vimwiki-cli" |         "vimwiki-cli": "vimwiki-cli" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|  | @ -726,35 +316,30 @@ | ||||||
|         "agenix": "agenix", |         "agenix": "agenix", | ||||||
|         "basant": "basant", |         "basant": "basant", | ||||||
|         "deploy": "deploy", |         "deploy": "deploy", | ||||||
|         "digga": "digga", |  | ||||||
|         "eww": "eww", |         "eww": "eww", | ||||||
|         "grasp": "grasp", |         "grasp": "grasp", | ||||||
|         "home": "home", |         "hardware": "hardware", | ||||||
|         "latest": "latest_2", |         "home-manager": "home-manager", | ||||||
|         "naersk": "naersk", |         "nixpkgs": "nixpkgs", | ||||||
|         "neovim-nightly": "neovim-nightly", |  | ||||||
|         "nixos": "nixos", |  | ||||||
|         "nixos-hardware": "nixos-hardware", |  | ||||||
|         "nur": "nur", |  | ||||||
|         "nvfetcher": "nvfetcher", |  | ||||||
|         "poonam": "poonam", |         "poonam": "poonam", | ||||||
|         "rust-overlay": "rust-overlay", |         "rust-overlay": "rust-overlay", | ||||||
|         "tidalcycles": "tidalcycles" |         "tidalcycles": "tidalcycles", | ||||||
|  |         "unstable": "unstable" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "rust-overlay": { |     "rust-overlay": { | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "flake-utils": "flake-utils_7", |         "flake-utils": "flake-utils_3", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "nixos" |           "nixpkgs" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1663383457, |         "lastModified": 1670207212, | ||||||
|         "narHash": "sha256-WoHXGHVmOv883HyH2Rvqh3XJE0Dk2YSZfLJyedSMr4U=", |         "narHash": "sha256-uuKbbv0L+QoXiqO7METP9BihY0F7hJqGdKn7xDVfyFw=", | ||||||
|         "owner": "oxalica", |         "owner": "oxalica", | ||||||
|         "repo": "rust-overlay", |         "repo": "rust-overlay", | ||||||
|         "rev": "e4c6adaa5f9293911de5ad50eaf32dbe36819de3", |         "rev": "18823e511bc85ed27bfabe33cccecb389f9aa92d", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -801,7 +386,7 @@ | ||||||
|       "inputs": { |       "inputs": { | ||||||
|         "dirt-samples-src": "dirt-samples-src", |         "dirt-samples-src": "dirt-samples-src", | ||||||
|         "nixpkgs": [ |         "nixpkgs": [ | ||||||
|           "latest" |           "unstable" | ||||||
|         ], |         ], | ||||||
|         "superdirt-src": "superdirt-src", |         "superdirt-src": "superdirt-src", | ||||||
|         "tidal-src": "tidal-src", |         "tidal-src": "tidal-src", | ||||||
|  | @ -810,11 +395,11 @@ | ||||||
|         "vowel-src": "vowel-src" |         "vowel-src": "vowel-src" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1661670241, |         "lastModified": 1664760044, | ||||||
|         "narHash": "sha256-+5C83z+Sd8ugvMshrXqpca4vv3tQ2D4tYEJ3QY6JVsg=", |         "narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=", | ||||||
|         "owner": "mitchmindtree", |         "owner": "mitchmindtree", | ||||||
|         "repo": "tidalcycles.nix", |         "repo": "tidalcycles.nix", | ||||||
|         "rev": "fefe3d586511e1cfaac79bb83ec0b278bb1b6bad", |         "rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -823,6 +408,22 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "unstable": { | ||||||
|  |       "locked": { | ||||||
|  |         "lastModified": 1670064435, | ||||||
|  |         "narHash": "sha256-+ELoY30UN+Pl3Yn7RWRPabykwebsVK/kYE9JsIsUMxQ=", | ||||||
|  |         "owner": "nixos", | ||||||
|  |         "repo": "nixpkgs", | ||||||
|  |         "rev": "61a8a98e6d557e6dd7ed0cdb54c3a3e3bbc5e25c", | ||||||
|  |         "type": "github" | ||||||
|  |       }, | ||||||
|  |       "original": { | ||||||
|  |         "owner": "nixos", | ||||||
|  |         "ref": "nixos-unstable", | ||||||
|  |         "repo": "nixpkgs", | ||||||
|  |         "type": "github" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "utils": { |     "utils": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1648297722, |         "lastModified": 1648297722, | ||||||
|  | @ -871,16 +472,16 @@ | ||||||
|     "vim-tidal-src": { |     "vim-tidal-src": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1661670183, |         "lastModified": 1664252474, | ||||||
|         "narHash": "sha256-HU075U97COak/Xqw+4ifVkEEIgWzGvwRoR3q9LGKl8s=", |         "narHash": "sha256-hleiK2Q7xYndpB+tIbyyXIM2sk4NunUh9DPgMqmf/Wc=", | ||||||
|         "owner": "mitchmindtree", |         "owner": "tidalcycles", | ||||||
|         "repo": "vim-tidal", |         "repo": "vim-tidal", | ||||||
|         "rev": "5c1e70ee3d2b4655b8ccba11422866c496610ca8", |         "rev": "b07f5c12986fb837e055d7fcf0acf3b7e248148f", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|         "owner": "mitchmindtree", |         "owner": "tidalcycles", | ||||||
|         "ref": "mitchmindtree", |         "ref": "master", | ||||||
|         "repo": "vim-tidal", |         "repo": "vim-tidal", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|  |  | ||||||
							
								
								
									
										274
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										274
									
								
								flake.nix
									
									
									
									
									
								
							|  | @ -1,190 +1,198 @@ | ||||||
| { | { | ||||||
|   description = "A highly structured configuration database."; |   description = "Your new nix config"; | ||||||
|  | 
 | ||||||
|  |   inputs = { | ||||||
|  |     # Nixpkgs | ||||||
|  |     nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; | ||||||
|  |     unstable.url = "github:nixos/nixpkgs/nixos-unstable"; | ||||||
|  | 
 | ||||||
|  |     # Home manager | ||||||
|  |     home-manager.url = "github:nix-community/home-manager"; | ||||||
|  |     home-manager.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|  |     hardware.url = "github:nixos/nixos-hardware"; | ||||||
| 
 | 
 | ||||||
|   inputs = |  | ||||||
|     { |  | ||||||
|       # Nix |  | ||||||
|       nixos.url = "github:nixos/nixpkgs/release-22.11"; |  | ||||||
|       latest.url = "github:nixos/nixpkgs/nixos-unstable"; |  | ||||||
|       # Community |  | ||||||
|       home.url = "github:nix-community/home-manager/release-22.11"; |  | ||||||
|       home.inputs.nixpkgs.follows = "nixos"; |  | ||||||
|       nixos-hardware.url = "github:nixos/nixos-hardware"; |  | ||||||
|       # Lib |  | ||||||
|       digga.url = "github:divnix/digga"; |  | ||||||
|       digga.inputs.nixpkgs.follows = "nixos"; |  | ||||||
|       digga.inputs.nixlib.follows = "nixos"; |  | ||||||
|       digga.inputs.home-manager.follows = "home"; |  | ||||||
|       digga.inputs.deploy.follows = "deploy"; |  | ||||||
|       nvfetcher.url = "github:berberman/nvfetcher"; |  | ||||||
|       nvfetcher.inputs.nixpkgs.follows = "nixos"; |  | ||||||
|       naersk.url = "github:nmattia/naersk"; |  | ||||||
|       naersk.inputs.nixpkgs.follows = "nixos"; |  | ||||||
|       nur.url = "github:nix-community/NUR"; |  | ||||||
|     # Tools |     # Tools | ||||||
|     agenix.url = "github:ryantm/agenix"; |     agenix.url = "github:ryantm/agenix"; | ||||||
|       agenix.inputs.nixpkgs.follows = "nixos"; |     agenix.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     deploy.url = "github:serokell/deploy-rs"; |     deploy.url = "github:serokell/deploy-rs"; | ||||||
|       deploy.inputs.nixpkgs.follows = "nixos"; |     deploy.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     # Packages |     # Packages | ||||||
|     poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main"; |     poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main"; | ||||||
|     basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main"; |     basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main"; | ||||||
|       basant.inputs.nixpkgs.follows = "nixos"; |     basant.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     basant.inputs.poonam.follows = "poonam"; |     basant.inputs.poonam.follows = "poonam"; | ||||||
|     rust-overlay = { |     rust-overlay = { | ||||||
|       url = "github:oxalica/rust-overlay"; |       url = "github:oxalica/rust-overlay"; | ||||||
|         inputs.nixpkgs.follows = "nixos"; |       inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     }; |     }; | ||||||
|     eww = { |     eww = { | ||||||
|       url = "github:elkowar/eww"; |       url = "github:elkowar/eww"; | ||||||
|         inputs.nixpkgs.follows = "nixos"; |       inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|       inputs.rust-overlay.follows = "rust-overlay"; |       inputs.rust-overlay.follows = "rust-overlay"; | ||||||
|     }; |     }; | ||||||
|     # eww follows rust nightly |     # eww follows rust nightly | ||||||
|       # eww.inputs.nixpkgs.follows = "latest"; |     # eww.inputs.nixpkgs.follows = "unstable"; | ||||||
|     grasp.url = "git+ssh://gitea@git.sealight.xyz/aynish/grasp.git?ref=main"; |     grasp.url = "git+ssh://gitea@git.sealight.xyz/aynish/grasp.git?ref=main"; | ||||||
|       grasp.inputs.nixpkgs.follows = "nixos"; |     grasp.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     tidalcycles.url = "github:mitchmindtree/tidalcycles.nix"; |     tidalcycles.url = "github:mitchmindtree/tidalcycles.nix"; | ||||||
|       tidalcycles.inputs.nixpkgs.follows = "latest"; |     tidalcycles.inputs.nixpkgs.follows = "unstable"; | ||||||
|       neovim-nightly.url = "github:nix-community/neovim-nightly-overlay"; |  | ||||||
|       neovim-nightly.inputs.nixpkgs.follows = "nixos"; |  | ||||||
|     # TODO hundred rabbits software |     # TODO hundred rabbits software | ||||||
|     # TODO not quite useful yet, since it needs secrets |     # TODO not quite useful yet, since it needs secrets | ||||||
|     # dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main"; |     # dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main"; | ||||||
|       # dhyan.inputs.nixpkgs.follows = "nixos"; |     # dhyan.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     # TODO needs secrets |     # TODO needs secrets | ||||||
|     # muneem.url = "git+ssh://gitea@git.sealight.xyz/aynish/muneem?ref=main"; |     # muneem.url = "git+ssh://gitea@git.sealight.xyz/aynish/muneem?ref=main"; | ||||||
|       # muneem.inputs.nixpkgs.follows = "nixos"; |     # muneem.inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   outputs = |   outputs = | ||||||
|     { self |     { self | ||||||
|     , digga |     , nixpkgs | ||||||
|     , nixos |     , unstable | ||||||
|     , home |     , home-manager | ||||||
|     , nixos-hardware |  | ||||||
|     , nur |  | ||||||
|     , agenix |  | ||||||
|     , nvfetcher |  | ||||||
|     , deploy |     , deploy | ||||||
|  |     , agenix | ||||||
|     , basant |     , basant | ||||||
|     , grasp |     , grasp | ||||||
|     , tidalcycles |     , tidalcycles | ||||||
|     , neovim-nightly |  | ||||||
|     , rust-overlay |     , rust-overlay | ||||||
|     , eww |     , eww | ||||||
|     , ... |     , ... | ||||||
|     } @ inputs: |     }@inputs: | ||||||
|     digga.lib.mkFlake |     let | ||||||
|       { |       inherit (self) outputs; | ||||||
|         inherit self inputs; |       forAllSystems = nixpkgs.lib.genAttrs [ | ||||||
|         supportedSystems = [ |         "aarch64-linux" | ||||||
|  |         "i686-linux" | ||||||
|         "x86_64-linux" |         "x86_64-linux" | ||||||
|  |         "aarch64-darwin" | ||||||
|  |         "x86_64-darwin" | ||||||
|       ]; |       ]; | ||||||
| 
 |       nixpkgsFor = forAllSystems (system: import nixpkgs { | ||||||
|         channelsConfig = { allowUnfree = true; }; |         inherit system; | ||||||
| 
 |         allowUnfree = true; | ||||||
|         channels = { |  | ||||||
|           nixos = { |  | ||||||
|             imports = [ (digga.lib.importOverlays ./overlays) ]; |  | ||||||
|         overlays = [ |         overlays = [ | ||||||
|               nur.overlay |  | ||||||
|               agenix.overlay |  | ||||||
|               nvfetcher.overlay |  | ||||||
|               deploy.overlay |  | ||||||
|               ./pkgs/default.nix |  | ||||||
|               tidalcycles.overlays.default |  | ||||||
|               # neovim-nightly.overlay |  | ||||||
|           rust-overlay.overlays.default |           rust-overlay.overlays.default | ||||||
|               eww.overlays.default |           deploy.overlay | ||||||
|  |           tidalcycles.overlays.default | ||||||
|  |           agenix.overlay | ||||||
|  |           # unstable.overlay | ||||||
|  |           # self.overlays | ||||||
|         ]; |         ]; | ||||||
|           }; |  | ||||||
|           latest = { }; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         lib = import ./lib { lib = digga.lib // nixos.lib; }; |  | ||||||
| 
 |  | ||||||
|         sharedOverlays = [ |  | ||||||
|           (final: prev: { |  | ||||||
|             __dontExport = true; |  | ||||||
|             lib = prev.lib.extend (lfinal: lprev: { |  | ||||||
|               our = self.lib; |  | ||||||
|       }); |       }); | ||||||
|           }) |     in | ||||||
|         ]; |     { | ||||||
|  |       # Your custom packages | ||||||
|  |       # Acessible through 'nix build', 'nix shell', etc | ||||||
|  |       packages = forAllSystems (system: | ||||||
|  |         let pkgs = nixpkgsFor.${system}; | ||||||
|  |         in import ./pkgs { pkgs = pkgs; } | ||||||
|  |       ); | ||||||
|  |       # Devshell for bootstrapping | ||||||
|  |       # Acessible through 'nix develop' or 'nix-shell' (legacy) | ||||||
|  |       devShells = forAllSystems (system: | ||||||
|  |         let pkgs = nixpkgsFor.${system}; | ||||||
|  |         in import ./shell.nix { pkgs = pkgs; } | ||||||
|  |       ); | ||||||
| 
 | 
 | ||||||
|         nixos = { |       # Your custom packages and modifications, exported as overlays | ||||||
|           hostDefaults = { |       overlays = import ./overlays; | ||||||
|  |       # Reusable nixos modules you might want to export | ||||||
|  |       # These are usually stuff you would upstream into nixpkgs | ||||||
|  |       nixosModules = import ./modules/nixos; | ||||||
|  |       # Reusable home-manager modules you might want to export | ||||||
|  |       # These are usually stuff you would upstream into home-manager | ||||||
|  |       homeManagerModules = import ./modules/home-manager; | ||||||
|  | 
 | ||||||
|  |       # NixOS configuration entrypoint | ||||||
|  |       nixosConfigurations = { | ||||||
|  |         curve = nixpkgs.lib.nixosSystem rec { | ||||||
|  |           specialArgs = { inherit self inputs outputs; }; | ||||||
|           system = "x86_64-linux"; |           system = "x86_64-linux"; | ||||||
|             channelName = "nixos"; |           pkgs = nixpkgsFor.${system}; | ||||||
|             imports = [ (digga.lib.importExportableModules ./modules) ]; |  | ||||||
|           modules = [ |           modules = [ | ||||||
|               { lib.our = self.lib; } |             ./hosts/curve | ||||||
|               digga.nixosModules.nixConfig |             home-manager.nixosModules.home-manager | ||||||
|               home.nixosModules.home-manager |             self.nixosModules.wallabag | ||||||
|  |             self.nixosModules.gonic | ||||||
|  |             self.nixosModules.backup | ||||||
|  |             self.nixosModules.wireguard | ||||||
|             agenix.nixosModules.age |             agenix.nixosModules.age | ||||||
|  |             { | ||||||
|  |               home-manager.useGlobalPkgs = true; | ||||||
|  |               home-manager.useUserPackages = true; | ||||||
|  |               # home-manager.users.anish = import ./home/gui; | ||||||
|  |             } | ||||||
|           ]; |           ]; | ||||||
|         }; |         }; | ||||||
|  |         # helix = pkgs.lib.nixosSystem { | ||||||
|  |         #   specialArgs = { inherit inputs outputs; }; | ||||||
|  |         #   modules = [ | ||||||
|  |         #     ./hosts/helix | ||||||
|  |         #     home-manager.nixosModules.home-manager | ||||||
|  |         #     { | ||||||
|  |         #       home-manager.useGlobalPkgs = true; | ||||||
|  |         #       home-manager.useUserPackages = true; | ||||||
|  |         #       home-manager.users.anish = import ./home/core; | ||||||
|  |         #     } | ||||||
|  |         #   ]; | ||||||
|  |         # }; | ||||||
|  |         # lituus = pkgs.lib.nixosSystem { | ||||||
|  |         #   specialArgs = { inherit inputs outputs; }; | ||||||
|  |         #   modules = [ | ||||||
|  |         #     ./hosts/lituus | ||||||
|  |         #     home-manager.nixosModules.home-manager | ||||||
|  |         #     { | ||||||
|  |         #       home-manager.useGlobalPkgs = true; | ||||||
|  |         #       home-manager.useUserPackages = true; | ||||||
|  |         #       home-manager.users.anish = import ./home/core; | ||||||
|  |         #     } | ||||||
|  |         #   ]; | ||||||
|  |         # }; | ||||||
|  |         # cube = pkgs.lib.nixosSystem { | ||||||
|  |         #   specialArgs = { inherit inputs outputs; }; | ||||||
|  |         #   modules = [ | ||||||
|  |         #     ./hosts/cube | ||||||
|  |         #     home-manager.nixosModules.home-manager | ||||||
|  |         #     { | ||||||
|  |         #       home-manager.useGlobalPkgs = true; | ||||||
|  |         #       home-manager.useUserPackages = true; | ||||||
|  |         #       home-manager.users.anish = import ./home/core; | ||||||
|  |         #     } | ||||||
|  |         #   ]; | ||||||
|  |         # }; | ||||||
|  |         # box = pkgs.lib.nixosSystem { | ||||||
|  |         #   specialArgs = { inherit inputs outputs; }; | ||||||
|  |         #   modules = [ | ||||||
|  |         #     ./hosts/box | ||||||
|  |         #     home-manager.nixosModules.home-manager | ||||||
|  |         #     { | ||||||
|  |         #       home-manager.useGlobalPkgs = true; | ||||||
|  |         #       home-manager.useUserPackages = true; | ||||||
|  |         #       home-manager.users.anish = import ./home/core; | ||||||
|  |         #     } | ||||||
|  |         #   ]; | ||||||
|  |         # }; | ||||||
|  |       }; | ||||||
| 
 | 
 | ||||||
|           imports = [ (digga.lib.importHosts ./hosts) ]; |       # Standalone home-manager configuration entrypoint | ||||||
|           hosts = { |       # Available through 'home-manager --flake .#your-username@your-hostname' | ||||||
|             /* set host specific properties here */ |       homeConfigurations = { | ||||||
|             curve = { |         "anish@work" = home-manager.lib.homeManagerConfiguration { | ||||||
|  |           pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance | ||||||
|  |           extraSpecialArgs = { inherit inputs outputs; }; | ||||||
|           modules = [ |           modules = [ | ||||||
|               ]; # nixos-hardware.nixosModules.lenovo-thinkpad |             ./home/core.nix | ||||||
|               # Yubikey |  | ||||||
|             }; |  | ||||||
|             cube = { |  | ||||||
|               modules = [ basant.nixosModule ]; |  | ||||||
|             }; |  | ||||||
|             box = { |  | ||||||
|               modules = [ |  | ||||||
|                 grasp.nixosModule |  | ||||||
|           ]; |           ]; | ||||||
|         }; |         }; | ||||||
|             # helix = { }; |  | ||||||
|             # work = { }; |  | ||||||
|           }; |  | ||||||
|           importables = rec { |  | ||||||
|             profiles = digga.lib.rakeLeaves ./profiles // { |  | ||||||
|               users = digga.lib.rakeLeaves ./users; |  | ||||||
|             }; |  | ||||||
|             suites = with profiles; rec { |  | ||||||
|               base = [ core users.root users.anish ]; |  | ||||||
|               sealight = [ base server metrics gitea rss-bridge mount-mossnet freshrss ]; |  | ||||||
|               lituus = [ base server metrics sealight-website matrix wireguard-server ]; |  | ||||||
|               mossnet = [ base server taskd shaarli dns monitoring nfs gonic headphones radicale seafile syncthing dhyan calibre wallabag finance ]; # hpi sync.music muneem  |  | ||||||
|               cube = [ base site server ]; |  | ||||||
|               graphical = [ base bluetooth music sync.kitaab sync.website sync.cal wifi desktop mimetypes ]; |  | ||||||
|               curve = [ graphical secrets syncthing ]; |  | ||||||
|               work = [ base ]; |  | ||||||
|       }; |       }; | ||||||
|  |       deploy.nodes = { | ||||||
|  |         box.profiles.system = { | ||||||
|  |           user = "root"; | ||||||
|  |           path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.box; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|         home = { |       checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy.lib; | ||||||
|           imports = [ (digga.lib.importExportableModules ./users/modules) ]; |  | ||||||
|           # exportedModules = [ ]; |  | ||||||
|           # modules = [ ]; |  | ||||||
|           importables = rec { |  | ||||||
|             profiles = digga.lib.rakeLeaves ./users/profiles; |  | ||||||
|             suites = with profiles; rec { |  | ||||||
|               hmBase = [ direnv git nvim cli task ]; |  | ||||||
|               gui = [ hmBase firefox desktop email cal ]; |  | ||||||
|               work = [ hmBase firefox ]; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|           users = { |  | ||||||
|             nixos = { suites, ... }: { imports = suites.hmBase; }; |  | ||||||
|             # anish = { suites, ... }: { imports = suites.gui; }; |  | ||||||
|             anishlakhwara = { suites, ... }: { imports = suites.work; }; |  | ||||||
|           }; # digga.lib.importers.rakeLeaves ./users/hm; |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         devshell = ./shell; |  | ||||||
| 
 |  | ||||||
|         homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; |  | ||||||
| 
 |  | ||||||
|         deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; |  | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,26 +0,0 @@ | ||||||
| # Do not modify this file!  It was generated by ‘nixos-generate-config’ |  | ||||||
| # and may be overwritten by future invocations.  Please make changes |  | ||||||
| # to /etc/nixos/configuration.nix instead. |  | ||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = |  | ||||||
|     [ |  | ||||||
|       <nixpkgs/nixos/modules/profiles/qemu-guest.nix> |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|   boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ]; |  | ||||||
|   boot.initrd.kernelModules = [ ]; |  | ||||||
|   boot.kernelModules = [ ]; |  | ||||||
|   boot.extraModulePackages = [ ]; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/" = |  | ||||||
|     { |  | ||||||
|       device = "/dev/disk/by-uuid/3b8b2c4b-835e-4822-8ac8-0effdc8270d6"; |  | ||||||
|       fsType = "btrfs"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   swapDevices = [ ]; |  | ||||||
| 
 |  | ||||||
|   nix.maxJobs = lib.mkDefault 1; |  | ||||||
| } |  | ||||||
							
								
								
									
										10
									
								
								home/core/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								home/core/default.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | ||||||
|  | { pkgs, ... }: | ||||||
|  | { | ||||||
|  |   import = [ | ||||||
|  |     ../profiles/nvim | ||||||
|  |     ../profiles/cli | ||||||
|  |     ../profiles/direnv | ||||||
|  |     ../profiles/git | ||||||
|  |     ../profiles/task | ||||||
|  |   ]; | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								home/gui/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								home/gui/default.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | ||||||
|  | { pkgs, ... }: | ||||||
|  | { | ||||||
|  |   import = [ | ||||||
|  |     ../core | ||||||
|  |     ../profiles/firefox | ||||||
|  |     ../profiles/desktop | ||||||
|  |     ../profiles/email | ||||||
|  |     ../profiles/cal | ||||||
|  |   ]; | ||||||
|  | } | ||||||
							
								
								
									
										62
									
								
								home/home.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								home/home.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | ||||||
|  | # This is your home-manager configuration file | ||||||
|  | # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) | ||||||
|  | 
 | ||||||
|  | { inputs, outputs, lib, config, pkgs, ... }: { | ||||||
|  |   # You can import other home-manager modules here | ||||||
|  |   imports = [ | ||||||
|  |     # If you want to use modules your own flake exports (from modules/home-manager): | ||||||
|  |     # outputs.homeManagerModules.example | ||||||
|  | 
 | ||||||
|  |     # Or modules exported from other flakes (such as nix-colors): | ||||||
|  |     # inputs.nix-colors.homeManagerModules.default | ||||||
|  | 
 | ||||||
|  |     # You can also split up your configuration and import pieces of it here: | ||||||
|  |     # ./nvim.nix | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nixpkgs = { | ||||||
|  |     # You can add overlays here | ||||||
|  |     overlays = [ | ||||||
|  |       # If you want to use overlays your own flake exports (from overlays dir): | ||||||
|  |       # outputs.overlays.modifications | ||||||
|  |       # outputs.overlays.additions | ||||||
|  | 
 | ||||||
|  |       # Or overlays exported from other flakes: | ||||||
|  |       # neovim-nightly-overlay.overlays.default | ||||||
|  | 
 | ||||||
|  |       # Or define it inline, for example: | ||||||
|  |       # (final: prev: { | ||||||
|  |       #   hi = final.hello.overrideAttrs (oldAttrs: { | ||||||
|  |       #     patches = [ ./change-hello-to-hi.patch ]; | ||||||
|  |       #   }); | ||||||
|  |       # }) | ||||||
|  |     ]; | ||||||
|  |     # Configure your nixpkgs instance | ||||||
|  |     config = { | ||||||
|  |       # Disable if you don't want unfree packages | ||||||
|  |       allowUnfree = true; | ||||||
|  |       # Workaround for https://github.com/nix-community/home-manager/issues/2942 | ||||||
|  |       allowUnfreePredicate = (_: true); | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # TODO: Set your username | ||||||
|  |   home = { | ||||||
|  |     username = "anish"; | ||||||
|  |     homeDirectory = "/home/anish/"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Add stuff for your user as you see fit: | ||||||
|  |   # programs.neovim.enable = true; | ||||||
|  |   # home.packages = with pkgs; [ steam ]; | ||||||
|  | 
 | ||||||
|  |   # Enable home-manager and git | ||||||
|  |   programs.home-manager.enable = true; | ||||||
|  |   # programs.git.enable = true; | ||||||
|  | 
 | ||||||
|  |   # Nicely reload system units when changing configs | ||||||
|  |   # systemd.user.startServices = "sd-switch"; | ||||||
|  | 
 | ||||||
|  |   # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion | ||||||
|  |   home.stateVersion = "22.05"; | ||||||
|  | } | ||||||
| Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 2.8 MiB | 
|  | @ -1,12 +1,25 @@ | ||||||
| { self, pkgs, profiles, suites, ... }: | { self, pkgs, ... }: | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./configuration.nix |     ./configuration.nix | ||||||
|   ] ++ suites.mossnet; |     ../users/anish | ||||||
| 
 |     ../profiles/core | ||||||
|   home-manager.users.anish = { self, suites, ... }: { |     ../profiles/server | ||||||
|     imports = [ ] ++ suites.hmBase; |     ../profiles/taskd | ||||||
|   }; |     ../profiles/shaarli | ||||||
|  |     ../profiles/dns | ||||||
|  |     ../profiles/monitoring | ||||||
|  |     ../profiles/nfs | ||||||
|  |     ../profiles/gonic | ||||||
|  |     ../profiles/headphones | ||||||
|  |     ../profiles/radicale | ||||||
|  |     ../profiles/seafile | ||||||
|  |     ../profiles/syncthing | ||||||
|  |     ../profiles/dhyan | ||||||
|  |     ../profiles/calibre | ||||||
|  |     ../profiles/wallabag | ||||||
|  |     ../profiles/finance | ||||||
|  |   ]; | ||||||
| 
 | 
 | ||||||
|   # For some reason this doesn't work in the profile, but does over here?? |   # For some reason this doesn't work in the profile, but does over here?? | ||||||
|   # Something weird in the way I'm importing nixpkgs in the profile or something |   # Something weird in the way I'm importing nixpkgs in the profile or something | ||||||
|  |  | ||||||
|  | @ -2,9 +2,8 @@ | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./configuration.nix |     ./configuration.nix | ||||||
|   ] ++ suites.cube; |     ../profiles/core | ||||||
| 
 |     ../profiles/server | ||||||
|   home-manager.users.anish = { self, suites, ... }: { |     ../profiles/site | ||||||
|     imports = [ ] ++ suites.hmBase; |   ]; | ||||||
|   }; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { profiles, suites, ... }: |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     profiles.core |  | ||||||
|     profiles.users.anish |  | ||||||
|     profiles.hardware.curve # how else to deal with hardware? |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   bud.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Speed up boot by removing dependency on network  |  | ||||||
|   systemd = { |  | ||||||
|     targets.network-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"] |  | ||||||
|     services.NetworkManager-wait-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,12 +1,25 @@ | ||||||
| { self, pkgs, profiles, suites, ... }: | { self, pkgs, ... }: | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./configuration.nix |     ./configuration.nix | ||||||
|     profiles.mossnet-hosts |     ../users/anish | ||||||
|   ] ++ suites.curve; |     ../profiles/core | ||||||
|  |     ../profiles/bluetooth | ||||||
|  |     ../profiles/music | ||||||
|  |     ../profiles/sync/kitaab | ||||||
|  |     ../profiles/sync/website | ||||||
|  |     ../profiles/sync/cal | ||||||
|  |     ../profiles/wifi | ||||||
|  |     ../profiles/desktop | ||||||
|  |     ../profiles/mimetypes | ||||||
|  |     ../profiles/syncthing | ||||||
|  |     ../profiles/mossnet-hosts | ||||||
|  |   ]; | ||||||
| 
 | 
 | ||||||
|   home-manager.users.anish = { suites, ... }: { |   # Speed up boot by removing dependency on network  | ||||||
|     imports = suites.gui; |   systemd = { | ||||||
|  |     targets.network-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"] | ||||||
|  |     services.NetworkManager-wait-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   programs.gnupg.agent.pinentryFlavor = "gnome3"; |   programs.gnupg.agent.pinentryFlavor = "gnome3"; | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue