TODO TBD
| Folder | Function |
|---|---|
| . | TODO |
| common | TODO |
| common/lib | TODO |
| common/settings | TODO |
| home-manager | TODO |
| home-manager/configs | TODO |
| home-manager/configs/secrets | TODO |
| home-manager/configs/secrets/**/ | TODO |
| home-manager/configs/example_secrets | TODO |
| home-manager/modules | TODO |
| home-manager/modules/collections | TODO |
| home-manager/modules/submodule | TODO |
| nixos | TODO |
| nixos/modules | TODO |
| nixos/secrets | TODO |
| nixos/secrets/**/ | TODO |
| nixos/example_secrets | TODO |
<new-device> will be used in the following as placeholder for your new device's name.
Also ensure that it does not include underscores (_) as this seems to produce inconsistent hostnames and won't necessarily detect the correct flake configuration for subsequent nixos-rebuild switch executions.
git-crypt init -k <new-device>to create the device specific key- Recommended: export & backup this key via:
git-crypt export-key -k <new-device> <new-key-path>with<new-key-path>describing where to export the key to
- To lock the repo with all keys use
git-crypt lock -a - To lock the repo with a specific device key named i.e.
<my-device>usegit-crypt lock -k <my-device> - To unlock (decrypt) the repo simply use
git-crypt unlock <my-key-path>- Note that you might want to unlock the repository with multiple key files to have access to device specific secrets. Simply repeat the command for the all required keys.
flake.nix:- Add below
# Define systemssomething like this:The first system will try to use the git-crypt secrets whereas the second system will replace them with dummy secrets, in order to allow a first time installation without decrypting the repository.{ deviceName = <new-device>; userName = <username>; } { deviceName = <new-device>; userName = <username>; confNameSuffix = "no-sec"; forceNoSecrets = true; }
- Add below
.gitattributes:- To add support for device specific secrets with their own keys append similar to the other devices the following line:
**/secrets/**/<new-device>/** filter=git-crypt-<new-device> diff=git-crypt-<new-device>
- To add support for device specific secrets with their own keys append similar to the other devices the following line:
common/settings/<new-device.nix>which contains:- general device settings:
custom.useDummySecretscustom.guicustom.cpucustom.gpu- Note: I haven't tested my setup & modules with an nvidia gpu. Hence, it probably doesn't work.
custom.bluetooth
- all hardware specific setup. This is basically the
hardware.nixgenerated bynixos-generate-config. - More settings are available:
custom.enableVirtualizationcustom.grub.enablecustom.grub.useUEFIcustom.cpuFreqGovernorcustom.laptopPowerSavingcustom.adbcustom.audio.backendcustom.internationalization.timeZonecustom.internationalization.defaultLocalecustom.internationalization.defaultLcTimecustom.internationalization.defaultLcPapercustom.internationalization.defaultLcMeasurementcustom.internationalization.keyboardLayoutcustom.internationalization.consoleFontcustom.security.usbguard.enforceRulescustom.security.usbguard.fixedRulescustom.smartcardscustom.sshServer.enablecustom.sshServer.portscustom.sshServer.authorizedKeyscustom.swapfile.enablecustom.swapfile.sizecustom.swapfile.pathcustom.nano_conf.enablecustom.networking.hostnamecustom.networking.nfsSupportcustom.networking.wifiSupportcustom.networking.withNetworkManagercustom.networking.openvpn.client.enablecustom.networking.openvpn.client.autoConnect
- And even more settings to enable predefined program sets and adjusting their options:
custom.hm.modules.alacritty.enablecustom.hm.modules.alacritty.virtualboxWorkaroundcustom.hm.modules.bash.enablecustom.hm.modules.calendar.enablecustom.hm.modules.easyeffects.enablecustom.hm.modules.email.enablecustom.hm.modules.git.enablecustom.hm.modules.git.scripts.enablecustom.hm.modules.gtk.enablecustom.hm.modules.neovim.enablecustom.hm.modules.optimize_storage.enablecustom.hm.modules.qt.enablecustom.hm.modules.ssh.enablecustom.hm.modules.sway.laptopDisplaycustom.hm.modules.sway.disp1custom.hm.modules.sway.disp1_poscustom.hm.modules.sway.disp1_rescustom.hm.modules.sway.disp2custom.hm.modules.sway.disp2_poscustom.hm.modules.sway.disp2_rescustom.hm.modules.sway.extraConfigcustom.hm.modules.waybar.hwmonPathcustom.hm.modules.waybar.thermalZonecustom.hm.modules.waybar.gpu.tempCmdcustom.hm.modules.waybar.gpu.mhzFreqCmdcustom.hm.modules.waybar.gpu.usageCmdcustom.hm.modules.xdg.enablecustom.hm.modules.zsh.enablecustom.hm.collections.communication.enablecustom.hm.collections.development.enablecustom.hm.collections.diyStuff.enablecustom.hm.collections.gaming.enablecustom.hm.collections.gui_utilities.enablecustom.hm.collections.media.enablecustom.hm.collections.office.enablecustom.hm.collections.utilities.enable
- general device settings:
My config is a mashup of Pipshag's config and genofire's config and looks as follows:

nix build .#nixosConfigurations.nixos-iso-image.config.system.build.isoImage
ls result/iso/