commit 68de03afc27f38fc9dff55bd18fd0a2b1e904aab
parent 64d9284d610ec57ee58c5d3b3159443f926ac8f6
Author: breadcat <breadcat@users.noreply.github.com>
Date: Sun, 3 Aug 2025 15:49:24 +0100
More artemis work
Import common includes
Diffstat:
2 files changed, 47 insertions(+), 139 deletions(-)
diff --git a/machines/artemis-hardware.nix b/machines/artemis-hardware.nix
@@ -1,6 +1,3 @@
-# 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, modulesPath, ... }:
{
@@ -26,12 +23,14 @@
swapDevices = [ ];
- # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
- # (the default) this is the recommended approach. When using systemd-networkd it's
- # still possible to use this option, but it's recommended to use it in conjunction
- # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+ nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
+
+ # Bootloader
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ # Networking, use DHCP
networking.useDHCP = lib.mkDefault true;
- # networking.interfaces.enp0s6.useDHCP = lib.mkDefault true;
+ # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
- nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}
diff --git a/machines/artemis.nix b/machines/artemis.nix
@@ -1,141 +1,50 @@
-# Edit this configuration file to define what should be installed on
-# your system. Help is available in the configuration.nix(5) man page, on
-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
-
-{ config, lib, pkgs, ... }:
-
+# Server
{
+ config,
+ pkgs,
+ machine,
+ username,
+ email,
+ fullname,
+ domain,
+ sshkey,
+ ...
+}: let
+ home-manager = builtins.fetchTarball https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz; # Stable
+ # home-manager = builtins.fetchTarball https://github.com/nix-community/home-manager/archive/master.tar.gz; # Unstable
+in {
+ # Core OS imports
imports =
- [ # Include the results of the hardware scan.
- ./hardware-configuration.nix
+ [
+ ./${machine}-hardware.nix # Include the results of the hardware scan.
+ (import "${home-manager}/nixos") # Home-Manager
+ ../common/flakes.nix
+ ../common/garbage.nix
+ ../common/locale.nix
+ ../common/packages.nix
+ (import ../common/restic.nix {inherit pkgs username;})
+ (import ../common/ssh.nix {inherit username sshkey;})
+ (import ../common/syncthing.nix {inherit config pkgs username;})
+ (import ../common/user.nix {inherit config pkgs username fullname;})
+ ../scripts/stagit-generate.nix
];
- # Use the systemd-boot EFI boot loader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
-
- services.openssh = {
- enable = true;
- ports = [ 22 ];
- settings = {
- PasswordAuthentication = true;
- PermitRootLogin = "prohibit-password";
- };
- };
-
- users.users.peter = {
- isNormalUser = true;
- extraGroups = [ "wheel" ];
- shell = pkgs.fish;
- home = "/home/peter";
+ # Home-Manager
+ home-manager.backupFileExtension = "hm-bak";
+ home-manager.users.${username} = {pkgs, ...}: {
+ imports = [
+ ../home/fish.nix
+ (import ../home/git.nix {inherit fullname email;})
+ ../home/htop.nix
+ ../home/neovim.nix
+ (import ../home/rbw.nix {inherit pkgs domain email;})
+ (import ../home/ssh.nix {inherit domain username;})
+ ];
+ home.stateVersion = "25.05";
};
- programs.fish.enable = true;
- environment.systemPackages = with pkgs; [ neovim git ];
networking.hostName = "artemis"; # Define your hostname.
- # Pick only one of the below networking options.
- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
- # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
-
- # Set your time zone.
- # time.timeZone = "Europe/Amsterdam";
-
- # Configure network proxy if necessary
- # networking.proxy.default = "http://user:password@proxy:port/";
- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
-
- # Select internationalisation properties.
- # i18n.defaultLocale = "en_US.UTF-8";
- # console = {
- # font = "Lat2-Terminus16";
- # keyMap = "us";
- # useXkbConfig = true; # use xkb.options in tty.
- # };
-
- # Enable the X11 windowing system.
- # services.xserver.enable = true;
-
-
-
- # Configure keymap in X11
- # services.xserver.xkb.layout = "us";
- # services.xserver.xkb.options = "eurosign:e,caps:escape";
-
- # Enable CUPS to print documents.
- # services.printing.enable = true;
-
- # Enable sound.
- # services.pulseaudio.enable = true;
- # OR
- # services.pipewire = {
- # enable = true;
- # pulse.enable = true;
- # };
-
- # Enable touchpad support (enabled default in most desktopManager).
- # services.libinput.enable = true;
-
- # Define a user account. Don't forget to set a password with ‘passwd’.
- # users.users.alice = {
- # isNormalUser = true;
- # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
- # packages = with pkgs; [
- # tree
- # ];
- # };
-
- # programs.firefox.enable = true;
-
- # List packages installed in system profile.
- # You can use https://search.nixos.org/ to find more packages (and options).
- # environment.systemPackages = with pkgs; [
- # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
- # wget
- # ];
-
- # Some programs need SUID wrappers, can be configured further or are
- # started in user sessions.
- # programs.mtr.enable = true;
- # programs.gnupg.agent = {
- # enable = true;
- # enableSSHSupport = true;
- # };
-
- # List services that you want to enable:
-
- # Enable the OpenSSH daemon.
- # services.openssh.enable = true;
-
- # Open ports in the firewall.
- # networking.firewall.allowedTCPPorts = [ ... ];
- # networking.firewall.allowedUDPPorts = [ ... ];
- # Or disable the firewall altogether.
- # networking.firewall.enable = false;
-
- # Copy the NixOS configuration file and link it from the resulting system
- # (/run/current-system/configuration.nix). This is useful in case you
- # accidentally delete configuration.nix.
- # system.copySystemConfiguration = true;
-
- # This option defines the first version of NixOS you have installed on this particular machine,
- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
- #
- # Most users should NEVER change this value after the initial install, for any reason,
- # even if you've upgraded your system to a new NixOS release.
- #
- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
- # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
- # to actually do that.
- #
- # This value being lower than the current NixOS release does NOT mean your system is
- # out of date, out of support, or vulnerable.
- #
- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
- # and migrated your data accordingly.
- #
- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment?
}
-