No description
Find a file
2025-09-01 23:53:29 +08:00
.github/workflows setup rolling deploys to flakehub 2025-06-14 12:20:08 +08:00
.vscode chore(global): update configs as usual 2025-05-26 22:14:06 +08:00
hosts chore(nixpkgs): update security allowlist for broadcom 2025-08-30 02:42:17 +08:00
misc chore(shell): update starship config 2025-06-04 10:44:02 +08:00
scripts one more fix pls [skip ci] 2025-02-14 14:23:58 +08:00
shared chore(packages): update package list on both systemwide and home-manager 2025-09-01 19:32:40 +08:00
.gitignore chore(nix): generally speaking update nix configs as usual 2025-01-14 21:26:44 +08:00
.profile chore(home-manager): more config updates as usual 2025-05-08 22:18:00 +08:00
.wakatime-project Add minimal CI config and docs 2024-12-30 01:51:13 +08:00
bin Work on bringing Nix config customizations for Determinate Nix 2025-01-17 13:28:43 +08:00
flake.lock chore: update readme a bit + update flake lockfile [skip ci] 2025-09-01 23:53:29 +08:00
flake.nix feat(stellapent-cier): prep Broadcom configs for Bluetooth + WiFi drivers 2025-07-26 00:34:06 +08:00
LICENSE Update README and add license file 2024-12-30 12:41:02 +08:00
README.md chore: update readme a bit + update flake lockfile [skip ci] 2025-09-01 23:53:29 +08:00

@andreijiroh-dev/nixops-config

This is @ajhalili2006's NixOS + Home Manager configuration for his laptop and homelabs, alongside in tildes with Nix installed and in sync with the nixpkgs-specific branch of my dotfiles repository.

CI Status

Workflow Name and Type CI Platform Badge/Link
Nix Flake Builds (push) GitHub Actions Nix Flake Builds
Nix Flake Builds (schedule, every 06:30 UTC Saturday) GitHub Actions Nix Flake Builds

Mirrors

Canonically published at GitLab SaaS, with push mirroring enabled to GitHub. Along with the following mirrors:

Usage

Installing NixOS

It is recommended to install NixOS using either the Calamares-based graphical installer or manually through the nixos-install utility, especially when you have consider partitioning on your drive to ensure that you can roll back safely in case things go wrong.

After installation, copy the generated NixOS configuration files from /etc/nixos into a new directory named hosts/<host-name>. Note that on the rest of the README, the placeholder <host-name> is used to denote the hostname of a new or existing machine under Nix flake-based setup.

cp -rv /etc/nixos/ hosts/<host-name>/

On the flake.nix file, under the nixosConfigurations block, add the new host using the template below

<host-name> = nixpkgs.lib.nixosSystem {
  system = "x86_64-linux";
  modules = [
    ./hosts/<host-name>/configuration.nix

    # load Determinate Nix and the rest
    determinate.nixosModules.default
    home-manager.nixosModules.home-manager
    vscode-server.nixosModules.default
    nix-ld.nixosModules.nix-ld

    # one-liners?
    { programs.nix-ld.dev.enable = true; }
  ];
};

Then on your hosts/<host-name>/configuration.nix, add the needed imports as needed:

imports = [
  ./hardware-configuration.nix
  ../../shared/gnupg.nix
  ../../shared/meta-configs.nix
  ../../shared/server/ssh.nix
  ../../shared/server/tailscale.nix
  ../../shared/systemd.nix
  ../../shared/yubikey.nix
  # add more imports here
]

Adjust as needed before running a nixos-rebuild switch into the new configuration.

Updating configuration or upgrading NixOS system

EDITOR="nano" # or code if you do
$EDITOR <path/to/nixfile.nix>
git stage <path/to/nixfile.nix>
git commit --signoff

# update the flake.lock file manually
nix flake update

# on the another machine...
# change {hostname} to something like stellapent-cier
sudo nixos-rebuild --flake github:andreijiroh-dev/nixops-config#{hostname} <switch|boot|build>

From a local copy:

# update the flake.lock file manually
nix flake update

# change {hostname} to something like stellapent-cier
sudo nixos-rebuild --flake .#{hostname} <switch|boot|build>

As an external flake module

You can easily use this flake as an external module in your own flake-based NixOS configuration if you want to reuse some of my configurations.

{
  description = "My NixOS configuration";
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # use nixos-unstable instead if preferred
  inputs.andreijiroh-dev.url = "github:andreijiroh-dev/nixops-config";
  # needed if you use stable instead of unstable
  inputs.andreijiroh-dev.inputs.nixpkgs.follows = "nixpkgs";

  outputs = { self, andreijiroh-dev, nixpkgs }: {
    {
      nixosConfigurations.{hostname} = nixpkgs.lib.nixosSystem {
        # your customizations here
      };

      nixosConfigurations.your-mom = nixpkgs.lib.nixosSystem {
         system = "x86_64-linux";
         modules = [
          andreijiroh-dev.exportedConfigs.networking # or any other modules
         ];
      };
    };
}

Building a minimial ISO for recovery

Currently available as amd64 (x86-64) Linux ISO only for now, but you can copy the recoverykit-amd64 NixOS configuration and change system to any supported CPU architectures by NixOS.

# Build using the sources as remote
nix build github:andreijiroh-dev/nixops-config/main#nixosConfigurations.recoverykit-amd64.config.system.build.isoImage

# ...or via a local clone
nix build .#nixosConfigurations.recoverykit-amd64.config.system.build.isoImage

Available shared configs

These are accessible via exportedConfigs object after importing this flake on your flake.nix file.

  • base - Individual base components' configuration (systemd, networking, etc.)
    • sshKeys - My SSH public keys, declaratively managed. = hostsFile - Static list of host entries, used for merging with host-specific hosts file.
    • systemd - Systemd configurations and service units.
    • networking - Networking configurations, mostly for configuring DNS resolvers via systemd-resolved.
    • locale - Time and locale settings (e.g. timezone, i18n configs).
    • gnupg - GPG Agent settings and packages related to GPG and friends = metaConfigs - Nixpkgs and Nix settings, also contains the system.stateVersion setting.
  • meta - same as base, but oneliner import.

License

MPL-2.0