Files
sydnix/README.org
Madeleine Sydney 3f846d783a Large refactor
2024-12-12 13:54:17 -07:00

197 lines
5.4 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#+PROPERTY: header-args :noweb no-export :results silent :comments both :tangle no
#+STARTUP: overview
#+title: Madeleine's dots for the literate (=sydnix=)
* Top-level flake
#+begin_src nix :tangle flake.nix
{
description = "Madeleine's dots for the literate (sydnix)";
inputs = {
<<flake-inputs>>
disko.url = "github:nix-community/disko";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, ... }@inputs:
let list-nix-directory = dir:
builtins.attrNames
(nixpkgs.lib.filterAttrs
(k: _v: nixpkgs.lib.hasSuffix ".nix" k)
(builtins.readDir dir));
in {
# REVIEW: Why don't we put each module under nixosModules.<name>?
nixosModules.default =
let modules = list-nix-directory ./modules/nixos;
in { ... }: {
imports =
let x = builtins.map (m: ./modules/nixos/${m}) modules;
in x;
};
homeManagerModules.default =
let modules = list-nix-directory ./modules/home;
in { ... }: {
imports = builtins.map (m: ./modules/home/${m}) modules;
};
nixosConfigurations = (
<<flake-outputs-nixos>>
);
homeConfigurations =
let users = builtins.readDir ./users;
mkUser = username: _v: import ./users/${username}/default.nix;
in
builtins.mapAttrs mkUser users;
};
}
#+end_src
* Machines
For every ~./hosts/NAME/configuration.nix~, define the system under the name ~NAME~.
#+begin_src nix :noweb-ref flake-outputs-nixos
let mkHost = k: v: nixpkgs.lib.nixosSystem {
specialArgs = inputs;
system = import ./hosts/${k}/system.nix;
modules = [
./hosts/${k}/configuration.nix
inputs.self.nixosModules.default
inputs.disko.nixosModules.disko
# Directory name should always match host name.
({ ... }: { networking.hostName = k; })
# home-manager configuration.
inputs.home-manager.nixosModules.home-manager
({ config, lib, self, ... }: {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users =
lib.filterAttrs
(k: _v: builtins.elem k config.sydnix.users.users)
self.homeConfigurations;
})
];
};
in
builtins.mapAttrs mkHost (builtins.readDir ./hosts)
#+end_src
** =nixos-testbed=
#+begin_src nix :tangle hosts/nixos-testbed/configuration.nix
{ config, pkgs, lib, disko, ... }:
{
imports = [
./hardware-configuration.nix
./disko-config.nix
];
sydnix = {
users.users = [
"crumb"
];
};
boot = {
initrd = {
enable = true;
systemd.enable = true;
systemd.initrdBin = with pkgs; [
zfs
coreutils
babashka
];
};
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = false;
};
};
# networking.hostName = "nixos-testbed";
networking.hostId = "238e9b1e"; # head -c 8 /etc/machine-id
time.timeZone = "America/Denver";
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
# keyMap = "us";
useXkbConfig = true; # use xkb.options in tty.
};
services.xserver.enable = true;
# services.displayManager.sddm.enable = true;
# services.desktopManager.plasma6.enable = true;
services.xserver.xkb.layout = "us";
services.xserver.xkb.options = "caps:escape";
users.users.crumb = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
# Change this immediately after installation!
initialPassword = "password123";
};
environment.systemPackages = with pkgs; [
neovim
];
services.openssh.enable = true;
services.openssh.settings.PermitRootLogin = "yes";
# 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 = "24.05"; # Did you read the comment?
}
#+end_src
** =guix-rebound=
The primary desktop of a girl done with her plebian phase, and done with Guix's
bullshit.
* References
- My darling dearest Faye's =wishsys= }:D
- [[https://github.com/rasendubi/dotfiles][rasendubi/dotfiles]]
- [[https://github.com/hlissner/dotfiles/][hlissner/dotfiles]]
- [[https://github.com/Shawn8901/nix-configuration/tree/af71d51998a6772a300f842795b947e27202fa73][Shawn8901/nix-configuration]]