Compare commits

...

2 Commits

Author SHA1 Message Date
Eli Ribble 3993b526a5 Convert from cloud-init networking to static networking
This is honestly pretty ugly. The issue is that I want two different
IPv6 addresses on this server. I get one address for free as part of my
hosting agreement. The other I have to pay $0.01 per month for. The
address is routable, but it's not provided via cloud-init like the
initial address.

I therefore took the data from /var/lib/cloud/instance/network-config.json
and translated it into this configuration manually. It's dangerous - I
don't know when any of this information may change.

However, it works, and both addresses are now bound to eth0.

Notice that I set the network configuration name to "09-wan". This is
because the previous configuration using cloud-init created a network
configuration at /etc/systemd/network/10-cloud-init that has to be
manually removed or superseded.
2025-01-22 00:40:43 -07:00
Eli Ribble 99f0311a38 Fix error around --impure
I was seeing a stack trace with this at the bottom:

       error: cannot look up '<home-manager/nixos>' in pure evaluation mode (use '--impure' to override)

After reading a bit at https://nixos-and-flakes.thiscute.world/nixos-with-flakes/start-using-home-manager
I was able to craft this shape which uses home-manager in a flake and
doesn't have the same problem.
2025-01-21 23:31:00 -07:00
4 changed files with 71 additions and 18 deletions

View File

@ -8,8 +8,6 @@
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
# Include the home-manager configuration
<home-manager/nixos>
inputs.sovr.nixosModules.default
];
@ -31,15 +29,6 @@
inputs.sovr.packages."${pkgs.system}".sovr-server
];
home-manager.useGlobalPkgs = true;
home-manager.users.eliribble = {
home.file.".config/nvim/after/ftplugin/html.vim".source = ./home/eliribble/config/nvim/after/ftplugin/html.vim;
home.file.".config/nvim/after/ftplugin/go.vim".source = ./home/eliribble/config/nvim/after/ftplugin/go.vim;
home.file.".config/tmux/tmux.conf".source = ./home/eliribble/config/tmux/tmux.conf;
home.homeDirectory = "/home/eliribble";
home.stateVersion = "24.11";
home.username = "eliribble";
};
i18n.defaultLocale = "en_US.UTF-8";
networking = {
@ -74,7 +63,7 @@
services.cloud-init = {
enable = true;
network.enable = true;
network.enable = false;
};
services.openssh = {
enable = true;
@ -88,7 +77,29 @@
sessionSecret = "secret";
};
systemd.network.enable = true;
systemd.network = {
enable = true;
networks."09-wan" = {
address = [
"194.135.104.85/24"
"2605:e440::2:1d5/64"
"2605:e440::2:3e/64"
];
dns = [
"8.8.8.8"
"8.8.4.4"
"2001:4860:4860::8888"
"2001:4860::8844"
];
linkConfig.RequiredForOnline = "routable";
matchConfig.Name = "eth0";
routes = [
{ Gateway = "194.135.104.1"; }
{ Gateway = "2605:e440::1"; }
];
};
};
# Set your time zone.
time.timeZone = "America/Phoenix";

View File

@ -1,5 +1,26 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736373539,
"narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "bd65bc3cde04c16755955630b344bc9e35272c56",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1735264675,
@ -34,6 +55,7 @@
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"sovr": "sovr"
}
@ -43,11 +65,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1735827455,
"narHash": "sha256-BpqQu/opMGrr6xUbbFQy2bkEbUSQhbxN4X8M8DRun5I=",
"lastModified": 1735922336,
"narHash": "sha256-pccBDqwpLTT24mwQTfLxDciSMg95FPhVy683FvUpkj4=",
"ref": "refs/heads/main",
"rev": "950e618c387282e13e4ec865ae37d0e168b4469a",
"revCount": 60,
"rev": "85fc0509c232e4073896de480a4dec94bb97547c",
"revCount": 64,
"type": "git",
"url": "file:///home/eliribble/src/sovr.cloud"
},

View File

@ -3,11 +3,15 @@
inputs = {
# NixOS official package source, using the nixos-24.11 branch here
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
sovr.url = "git+file:///home/eliribble/src/sovr.cloud";
};
outputs = { self, nixpkgs, sovr, ... }@inputs: {
outputs = { self, home-manager, nixpkgs, sovr, ... }@inputs: {
nixosConfigurations.sovr = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
system = "x86_64-linux";
@ -15,6 +19,12 @@
# Import the previous configuration.nix we used,
# so the old configuration file still takes effect
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.eliribble = import ./home.nix;
}
];
};
};

10
sovr/etc/nixos/home.nix Normal file
View File

@ -0,0 +1,10 @@
{ config, pkgs, ... }:
{
home.file.".config/nvim/after/ftplugin/html.vim".source = ./home/eliribble/config/nvim/after/ftplugin/html.vim;
home.file.".config/nvim/after/ftplugin/go.vim".source = ./home/eliribble/config/nvim/after/ftplugin/go.vim;
home.file.".config/tmux/tmux.conf".source = ./home/eliribble/config/tmux/tmux.conf;
home.homeDirectory = "/home/eliribble";
home.stateVersion = "24.11";
home.username = "eliribble";
}