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 = imports =
[ # Include the results of the hardware scan. [ # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
# Include the home-manager configuration
<home-manager/nixos>
inputs.sovr.nixosModules.default inputs.sovr.nixosModules.default
]; ];
@ -31,15 +29,6 @@
inputs.sovr.packages."${pkgs.system}".sovr-server 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"; i18n.defaultLocale = "en_US.UTF-8";
networking = { networking = {
@ -74,7 +63,7 @@
services.cloud-init = { services.cloud-init = {
enable = true; enable = true;
network.enable = true; network.enable = false;
}; };
services.openssh = { services.openssh = {
enable = true; enable = true;
@ -88,7 +77,29 @@
sessionSecret = "secret"; 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. # Set your time zone.
time.timeZone = "America/Phoenix"; time.timeZone = "America/Phoenix";

View File

@ -1,5 +1,26 @@
{ {
"nodes": { "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": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1735264675, "lastModified": 1735264675,
@ -34,6 +55,7 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"sovr": "sovr" "sovr": "sovr"
} }
@ -43,11 +65,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1735827455, "lastModified": 1735922336,
"narHash": "sha256-BpqQu/opMGrr6xUbbFQy2bkEbUSQhbxN4X8M8DRun5I=", "narHash": "sha256-pccBDqwpLTT24mwQTfLxDciSMg95FPhVy683FvUpkj4=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "950e618c387282e13e4ec865ae37d0e168b4469a", "rev": "85fc0509c232e4073896de480a4dec94bb97547c",
"revCount": 60, "revCount": 64,
"type": "git", "type": "git",
"url": "file:///home/eliribble/src/sovr.cloud" "url": "file:///home/eliribble/src/sovr.cloud"
}, },

View File

@ -3,11 +3,15 @@
inputs = { inputs = {
# NixOS official package source, using the nixos-24.11 branch here # 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"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
sovr.url = "git+file:///home/eliribble/src/sovr.cloud"; 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 { nixosConfigurations.sovr = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
system = "x86_64-linux"; system = "x86_64-linux";
@ -15,6 +19,12 @@
# Import the previous configuration.nix we used, # Import the previous configuration.nix we used,
# so the old configuration file still takes effect # so the old configuration file still takes effect
./configuration.nix ./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";
}