feat(alys): add alys host configuration

This commit is contained in:
Lucien Cartier-Tilet 2025-07-05 00:02:39 +02:00
parent 3de874f873
commit 958a98ef81
No known key found for this signature in database
11 changed files with 180 additions and 42 deletions

View File

@ -80,6 +80,17 @@
}; };
homeConfigurations = { homeConfigurations = {
"phundrak@alys" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
home-conf = "minimal";
};
modules = [
./users/phundrak/alys.nix
inputs.sops-nix.homeManagerModules.sops
];
};
"phundrak@marpa" = home-manager.lib.homeManagerConfiguration { "phundrak@marpa" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { extraSpecialArgs = {
@ -116,6 +127,13 @@
}; };
nixosConfigurations = { nixosConfigurations = {
alys = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs;};
modules = [
./hosts/alys/configuration.nix
inputs.sops-nix.nixosModules.sops
];
};
gampo = nixpkgs.lib.nixosSystem { gampo = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs outputs;}; specialArgs = {inherit inputs outputs;};
modules = [ modules = [

View File

@ -0,0 +1,64 @@
{
pkgs,
inputs,
...
}: {
imports = [
./hardware-configuration.nix
./host.nix
inputs.home-manager.nixosModules.default
../../modules/locale.nix
../../modules/system.nix
../../modules/ssh.nix
../../modules/endlessh.nix
../../programs/nano.nix
];
zramSwap.enable = true;
# networking.domain = "phundrak.com";
system = {
amdgpu.enable = false;
boot = {
kernel = {
hardened = true;
cpuVendor = "amd";
};
systemd-boot = false;
zfs.enable = false;
};
networking = {
hostname = "alys";
domain = "phundrak.com";
id = "41157110";
firewall.openPorts = [
22
];
};
sound.enable = false;
users = {
root.disablePassword = true;
phundrak = true;
};
};
modules = {
ssh = {
enable = true;
allowedUsers = ["phundrak"];
passwordAuthentication = false;
};
endlessh.enable = false;
};
nixpkgs.config.allowUnfree = true;
environment.systemPackages = [pkgs.openssl];
# networking.hostName = "alys";
# users.users.root.openssh.authorizedKeys.keys = [
# "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC+b7BE/gHrHVkqNVfHtp2r4OCUDdohst8hb3Bz5tYtx3gvXJQCB1rFc2hgQJf8FsVyQbidS64lnhU1rUIEbFhv7itT5FGGUnfJEYs64W30wKsnPSb5WXdFXzrNi8za48i2oNl9JA9Fj9k6isyvkTup89hB+ELbXIcfz3bM93WaAt2dIgKijXaAMAAA+tHhgWvlrHlvGlU9/KxY3ZOQSoEboPXd7TDyOf1672eAibYyb5h1HIewYZ+xv1X4dxx/c9Arh4K0s8scuB7XTQQkEbRUEYKD2YXKN83Z09jfMlMYuBAKKO8zU4CM2KTbL7kEVgNc/ArY+uCAakmC5+eS7LxMuOt86+Bi4gXTJ6o6dbfUbCGiq751ni8pg44YSfwYiI05vvZ08eIyNkowumD+X4GRW4tu0I3qK8TI7exeEeoQIwlSfLXlYHEdNB8Q3feLyhHMRkxXgUskbXwWIBexLzJyY40tyqQplZWbYGrUEmjxZ7FWmaV+o8ZjnU2GfJ8JoWyCnEYfRc6Z2ILdXNDRzZ9qYOwefMHtuaYaYYximL+zdVVrm4EZuOetmaJ6zblk4ebU3GZjYykB8DmCDFDZO9koKwzPazLKQl0OWzmQqgxVNg7Mg1NZbuRQgVAhKPelnqejaXbf2/IHAYBn5LDR1Jew5+srlstM9XuYG2whEOx84w== Lucien Cartier-Tilet <lucien@phundrak.com>"
# "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILw9oiK8tZ5Vpz82RaRLpITU8qeJrT2hjvudGEDQu2QW lucien@phundrak.com"
# ];
system.stateVersion = "23.11";
}

View File

@ -0,0 +1,28 @@
{
modulesPath,
lib,
...
}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot = {
loader.grub = {
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
};
initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
initrd.kernelModules = ["nvme"];
};
fileSystems = {
"/" = {
device = "/dev/vda1";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/F137-8D01";
fsType = "vfat";
};
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

3
hosts/alys/host.nix Normal file
View File

@ -0,0 +1,3 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [neofetch vim emacs];
}

View File

@ -30,6 +30,11 @@ in {
}; };
hardened = mkEnableOption "Enables hardened Linux kernel"; hardened = mkEnableOption "Enables hardened Linux kernel";
}; };
systemd-boot = mkOption {
type = types.bool;
default = true;
description = "Does the system use systemd-boot?";
};
zfs = { zfs = {
enable = mkEnableOption "Enables ZFS"; enable = mkEnableOption "Enables ZFS";
pools = mkOption { pools = mkOption {
@ -42,8 +47,8 @@ in {
config.boot = { config.boot = {
initrd.kernelModules = lists.optional cfg.amdgpu.enable "amdgpu"; initrd.kernelModules = lists.optional cfg.amdgpu.enable "amdgpu";
loader = { loader = {
systemd-boot.enable = true; systemd-boot.enable = cfg.systemd-boot;
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = cfg.systemd-boot;
}; };
supportedFilesystems = mkIf cfg.zfs.enable ["zfs"]; supportedFilesystems = mkIf cfg.zfs.enable ["zfs"];
zfs.extraPools = mkIf cfg.zfs.enable cfg.zfs.pools; zfs.extraPools = mkIf cfg.zfs.enable cfg.zfs.pools;

1
modules/keys/id_alys.pub Normal file
View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTv1lb6d99O84jeh6GdjPm8Gnt/HncSRhGhmoTq7BMK lucien@phundrak.com

View File

@ -6,28 +6,33 @@
with lib; let with lib; let
cfg = config.modules.networking; cfg = config.modules.networking;
in { in {
options.modules.networking = { options.modules.networking = with types; {
hostname = mkOption { hostname = mkOption {
type = types.str; type = str;
example = "gampo"; example = "gampo";
}; };
id = mkOption { id = mkOption {
type = types.str; type = str;
example = "deadb33f"; example = "deadb33f";
}; };
domain = mkOption {
type = nullOr str;
example = "phundrak.com";
default = null;
};
hostFiles = mkOption { hostFiles = mkOption {
type = types.listOf types.path; type = listOf path;
example = [/path/to/hostFile]; example = [/path/to/hostFile];
default = []; default = [];
}; };
firewall = { firewall = {
openPorts = mkOption { openPorts = mkOption {
type = types.listOf types.int; type = listOf int;
example = [22 80 443]; example = [22 80 443];
default = []; default = [];
}; };
openPortRanges = mkOption { openPortRanges = mkOption {
type = types.listOf (types.attrsOf types.port); type = listOf (attrsOf port);
default = []; default = [];
example = [ example = [
{ {
@ -41,7 +46,7 @@ in {
''; '';
}; };
extraCommands = mkOption { extraCommands = mkOption {
type = types.nullOr types.lines; type = nullOr lines;
example = "iptables -A INPUTS -p icmp -j ACCEPT"; example = "iptables -A INPUTS -p icmp -j ACCEPT";
default = null; default = null;
}; };
@ -52,7 +57,7 @@ in {
hostName = cfg.hostname; # Define your hostname. hostName = cfg.hostname; # Define your hostname.
hostId = cfg.id; hostId = cfg.id;
networkmanager.enable = true; networkmanager.enable = true;
inherit (cfg) hostFiles; inherit (cfg) hostFiles domain;
firewall = { firewall = {
enable = true; enable = true;
allowedTCPPorts = cfg.firewall.openPorts; allowedTCPPorts = cfg.firewall.openPorts;

View File

@ -20,35 +20,40 @@ in {
./dev/docker.nix ./dev/docker.nix
]; ];
options.system = { options.system = with types; {
amdgpu.enable = mkEnableOption "Enables AMD GPU support"; amdgpu.enable = mkEnableOption "Enables AMD GPU support";
boot = { boot = {
kernel = { kernel = {
package = mkOption { package = mkOption {
type = types.raw; type = raw;
default = pkgs.linuxPackages_zen; default = pkgs.linuxPackages_zen;
}; };
modules = mkOption { modules = mkOption {
type = types.listOf types.str; type = listOf str;
default = []; default = [];
}; };
cpuVendor = mkOption { cpuVendor = mkOption {
description = "Intel or AMD?"; description = "Intel or AMD?";
type = types.enum ["intel" "amd"]; type = enum ["intel" "amd"];
default = "amd"; default = "amd";
}; };
v4l2loopback = mkOption { v4l2loopback = mkOption {
description = "Enables v4l2loopback"; description = "Enables v4l2loopback";
type = types.bool; type = bool;
default = true; default = true;
}; };
hardened = mkEnableOption "Enables hardened Linux kernel"; hardened = mkEnableOption "Enables hardened Linux kernel";
}; };
systemd-boot = mkOption {
type = types.bool;
default = true;
description = "Does the system use systemd-boot?";
};
plymouth.enable = mkEnableOption "Enables Plymouth"; plymouth.enable = mkEnableOption "Enables Plymouth";
zfs = { zfs = {
enable = mkEnableOption "Enables ZFS"; enable = mkEnableOption "Enables ZFS";
pools = mkOption { pools = mkOption {
type = types.listOf types.str; type = listOf str;
default = []; default = [];
}; };
}; };
@ -61,26 +66,31 @@ in {
}; };
networking = { networking = {
hostname = mkOption { hostname = mkOption {
type = types.str; type = str;
example = "gampo"; example = "gampo";
}; };
id = mkOption { id = mkOption {
type = types.str; type = str;
example = "deadb33f"; example = "deadb33f";
}; };
domain = mkOption {
type = nullOr str;
example = "phundrak.com";
default = null;
};
hostFiles = mkOption { hostFiles = mkOption {
type = types.listOf types.path; type = listOf path;
example = [/path/to/hostFile]; example = [/path/to/hostFile];
default = []; default = [];
}; };
firewall = { firewall = {
openPorts = mkOption { openPorts = mkOption {
type = types.listOf types.int; type = listOf int;
example = [22 80 443]; example = [22 80 443];
default = []; default = [];
}; };
openPortRanges = mkOption { openPortRanges = mkOption {
type = types.listOf (types.attrsOf types.port); type = listOf (attrsOf port);
default = []; default = [];
example = [ example = [
{ {
@ -94,7 +104,7 @@ in {
''; '';
}; };
extraCommands = mkOption { extraCommands = mkOption {
type = types.nullOr types.lines; type = nullOr lines;
example = "iptables -A INPUTS -p icmp -j ACCEPT"; example = "iptables -A INPUTS -p icmp -j ACCEPT";
default = null; default = null;
}; };
@ -102,20 +112,20 @@ in {
}; };
nix = { nix = {
disableSandbox = mkOption { disableSandbox = mkOption {
type = types.bool; type = bool;
default = false; default = false;
}; };
gc = { gc = {
automatic = mkOption { automatic = mkOption {
type = types.bool; type = bool;
default = true; default = true;
}; };
dates = mkOption { dates = mkOption {
type = types.str; type = str;
default = "Monday 01:00 UTC"; default = "Monday 01:00 UTC";
}; };
options = mkOption { options = mkOption {
type = types.str; type = str;
default = "--delete-older-than 30d"; default = "--delete-older-than 30d";
}; };
}; };
@ -123,19 +133,19 @@ in {
sound = { sound = {
enable = mkEnableOption "Whether to enable sounds with Pipewire"; enable = mkEnableOption "Whether to enable sounds with Pipewire";
alsa = mkOption { alsa = mkOption {
type = types.bool; type = bool;
example = true; example = true;
default = true; default = true;
description = "Whether to enable ALSA support with Pipewire"; description = "Whether to enable ALSA support with Pipewire";
}; };
jack = mkOption { jack = mkOption {
type = types.bool; type = bool;
example = true; example = true;
default = false; default = false;
description = "Whether to enable JACK support with Pipewire"; description = "Whether to enable JACK support with Pipewire";
}; };
package = mkOption { package = mkOption {
type = types.package; type = package;
example = pkgs.pulseaudio; example = pkgs.pulseaudio;
default = pkgs.pulseaudioFull; default = pkgs.pulseaudioFull;
description = "Which base package to use for PulseAudio"; description = "Which base package to use for PulseAudio";
@ -144,27 +154,28 @@ in {
users = { users = {
root.disablePassword = mkEnableOption "Disables root password"; root.disablePassword = mkEnableOption "Disables root password";
phundrak = mkOption { phundrak = mkOption {
type = types.bool; type = bool;
default = true; default = true;
}; };
}; };
timezone = mkOption { timezone = mkOption {
type = types.str; type = str;
default = "Europe/Paris"; default = "Europe/Paris";
}; };
console.keyMap = mkOption { console.keyMap = mkOption {
type = types.str; type = str;
default = "fr"; default = "fr";
}; };
}; };
config = { config = {
boot.tmp.cleanOnBoot = true;
time.timeZone = cfg.timezone; time.timeZone = cfg.timezone;
console.keyMap = cfg.console.keyMap; console.keyMap = cfg.console.keyMap;
modules = { modules = {
boot = { boot = {
inherit (cfg) amdgpu; inherit (cfg) amdgpu;
inherit (cfg.boot) kernel plymouth zfs; inherit (cfg.boot) kernel systemd-boot plymouth zfs;
}; };
inherit (cfg) sound users networking docker amdgpu; inherit (cfg) sound users networking docker amdgpu;
}; };

View File

@ -26,12 +26,7 @@ in {
description = "Lucien Cartier-Tilet"; description = "Lucien Cartier-Tilet";
extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman"]; extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman"];
shell = pkgs.zsh; shell = pkgs.zsh;
openssh.authorizedKeys.keyFiles = [ openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ./keys;
./keys/id_gampo.pub
./keys/id_marpa.pub
./keys/id_tilo.pub
./keys/id_opn4.pub
];
}; };
}; };
programs.zsh.enable = true; programs.zsh.enable = true;

View File

@ -4,7 +4,7 @@ mopidy:
bandcamp: ENC[AES256_GCM,data:diEx2fbkOR1oUav81jU5bNt/KNmbOaVzLV+G3zBUVXE7nEQpZNqVom0rgNrEVDGzH3u/IaA5eqG5ce9lE0BomeY8Z4MWI1xujhX5KsXdv21aw4UwsNgyLPuWhkN2POUMfCJlvekc/TFfFvJHyysx8aKxeI4dsg==,iv:cxx0cVkjOPG+hMD8JctJHdcICJt7ozpfRBVSCDBo6Ro=,tag:JRjwwvieGaGZJ+k56HWFaw==,type:str] bandcamp: ENC[AES256_GCM,data:diEx2fbkOR1oUav81jU5bNt/KNmbOaVzLV+G3zBUVXE7nEQpZNqVom0rgNrEVDGzH3u/IaA5eqG5ce9lE0BomeY8Z4MWI1xujhX5KsXdv21aw4UwsNgyLPuWhkN2POUMfCJlvekc/TFfFvJHyysx8aKxeI4dsg==,iv:cxx0cVkjOPG+hMD8JctJHdcICJt7ozpfRBVSCDBo6Ro=,tag:JRjwwvieGaGZJ+k56HWFaw==,type:str]
emailPassword: ENC[AES256_GCM,data:LALAvyuNN9bfa8D6ZK1YiFXRfxLOBi9kXA0N0Kr7h18eAI4hWQ==,iv:WtidILFfWCMKylax52JP+X57GfZyYlxJtiwrC6SADik=,tag:NvOrsL3fbmxQZp06GZhUZA==,type:str] emailPassword: ENC[AES256_GCM,data:LALAvyuNN9bfa8D6ZK1YiFXRfxLOBi9kXA0N0Kr7h18eAI4hWQ==,iv:WtidILFfWCMKylax52JP+X57GfZyYlxJtiwrC6SADik=,tag:NvOrsL3fbmxQZp06GZhUZA==,type:str]
ssh: ssh:
hosts: ENC[AES256_GCM,data:jLLehzuBuBh22ZukRlqjQJNBg0ri8go58SJfs4GjNqNdvI/H0NWRS0apqLPzERkbpPipex3kUiFIc6BH+usSSpfh/MWico8qZDKVD7Ekx6F8k45I2Pq+mbLsMEo3XfjcnfYgDWn2I7/jyidBsvA+m9VnjU8/Cnk5O/YeIZQRvfOZ4xc8zw7C/vqmxsNi2KZr+2N23L+eetoKM4J6AigmINH41wAL3/RlB0oCpjSHSkbp7Glu2LlyJygS52p9m5pq4QBXtoiu5AJ6qG17LrypmDjfxE2zU2R3Zu6VLbs4zWQY2+W36j33Fm5nMkMMPJAEdRR27HPxM2EAEuH4OI1Jbup669sln9nJxnO2zYveplNPsAb3a16D4L9rwSzUd1s2W+NlqBSYdyAktuvtPWf1vAg9+Fob9jUgUFGTQpNF8Xj1n+DqvXlLQknsB/7EhNSSnYyQS36wHF9KBHJwexpYbhnGiMuLjN6KXbr/YYawocSA/5o8s6X/tRXKMkXtZjoEsyr1aNMj+4gSHaSUOG78r3VwAHLOXNez67xFpKMa/IQfQhj2Zng8142hhL4hPyNtuTOK3oVvPjZtAfbfxesUi+Zx2VhaJsnmj6J4gAOWU9nVpol67V0hNSD4LMUOZwwPst11IyJsXjkKKY0iy7ykFMTk6KalkVUqlYOmQRIXtBE9sD4esC+FGH1ONi3n0tbG7YivmV3YSmxk0RvQ/YlKGOchKpPH/bzN/X+NZh6A3Uk5uDsqU+GOjfDY2yIgetw4FAQ42YMxNmTJjq6MpcaETb5eQm8wee4QaVODocXHyknfWs6FYGNUjQpYp3+zxKJovHuKQcFgug3t8Si5hKnQz6KDZNaoDE0UMBR2ABbAX1Bcvu0lLHzaPXpGfXyoAe+B3MwF9/TTVkCNNYhNKm63P7qUuIbKLLCDXH6e4y5YiIF8Sl9jF/kR8v8MbLgrAROx8NlTm5CqNhQWOPQQyQXvXEl5hwHyF9ptrXUB9wIe,iv:6Lzbf+DBTfaZj7NhTJ07dVPuaViP61V4N2QHPTEFzMQ=,tag:8t4c0DJmAwg/0qRLBW4vCQ==,type:str] hosts: ENC[AES256_GCM,data:X/MrxeaqJnggoL9X8Y0+15A52FoihVRFp4vBZNr/QlJAKRn0B1eH6LI4wVzNokMbPUGlmYEElShy38ce+7EehL5HJcbwpEquvgQpLN2lZ4FhMLbW7yN3Q8DdZKqv4RNsm8vjuJPGwHGEVOhdvvnyM6IVpvLvMuH7MLJg4hLSArBzX7N0i5qg8piWI3pHqoPV4yO7kysSSF7D13HXen3fX+dbpBno/n0U+Xq8gcFyUKAqN6h65frkH2pyQcxIrCYcsFoJcU2jIzUY94xCSZZT7ocItzKD5YtVRki6F4Gh0/QgFeFcCn20Z0w8B7WvkjcR98FE+i5D9128uv2iiKEyeNaB4hc14dFCG4iZWW1KcSUojBnXHpFj22aByJaxjcFVg5BIVyde8L4hEinztWjNwbRzi1d9b34qeARcEzDQ3fwSNL/XFrlTvNZp565y/rPBLceksELewpWyX4Te3fuNOOw7hQqX3cjbGfw/FNuBVI/jnkEC+acGi23HnwmnDz87KCGZ738OAQ78F5awuoHnHhePvj0bUe3DTdW9Uj8amnaq1IeIu/BBcutewgez7ZHWamIWiOuVaZUISD6wrYk4pe5KqAZieUdotxbx7eihpw0ozEzQaNU3WBwQ8YxIyEnzcnsAihXCcgbm1/8FzWxghN3elA48UqVwaa4ZHK01l8+jD5yGjuCTCcpmSkVZBg8XrH7VWm+pZMCt3FRus3vFWq/iLsapIu6YSWG+mCYCjEK5hhbZs7ELxpdIzCw6Hiqm+P4nWVwA0ddbtSA7Rhu33CTKzdc0/KIQN78U0P+AsV0tVy7oLboIEZhpsj6XXYwQv5q9d0eJw/hibsqHdRb144Zn0hJDqxe/R+vCDk2iC3OYx5pG4oFbBG8V487QC67TG4Q+ztGCL8+W8+ZoVjK+atfA2LVHVWobFWNmqAE9CbVu8cbW3BhAtWrBZGgUMW5noFi64U411QEPS88odXtaqhUoN77rMhYCtVBxSSkGMWvwY2VZn6UvY8NZTExD5rJmDU9rRHmCNHq4WaAjxUg1rzwd4VO9CDnCf2gSeF466blpf2JEky8=,iv:0laLebvzVUMrKT30Jx/HaRS426PsWD3oFTesV4tnnDg=,tag:DApK5SSAriLib00FTz+jcg==,type:str]
sops: sops:
age: age:
- recipient: age1ajemtm502nn2n4q7v4j8meyd5mxtcqngkkedxq2pqzuwu78zp93qnw8q48 - recipient: age1ajemtm502nn2n4q7v4j8meyd5mxtcqngkkedxq2pqzuwu78zp93qnw8q48
@ -61,7 +61,7 @@ sops:
QmJKNDJUY0RSakhwNWlkOVpib0trc1kK0tQxD9I82pjfs54eruu+IjzVUmcVBCPw QmJKNDJUY0RSakhwNWlkOVpib0trc1kK0tQxD9I82pjfs54eruu+IjzVUmcVBCPw
9mp1xKiYRRMXt3YQn6MPiyuuX3l3UB5MH0RJMNtRq0D961rs+iiS5A== 9mp1xKiYRRMXt3YQn6MPiyuuX3l3UB5MH0RJMNtRq0D961rs+iiS5A==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-05-04T01:05:13Z" lastmodified: "2025-07-06T19:20:04Z"
mac: ENC[AES256_GCM,data:/wuo0bg48xlbP074JJ0rtmclWMG9vjlJnWjJnUaz45m+Gqj4IzA5ctSZdNnFTb7/CXkynJdFHme4/Nz8I/6+zzTFBeo/nVw43s1n0XmMqVYb2U/FTikvCMowHNnfMTY5Q83jD1MtE3XsRSCzxe649D4Zbcja8XG42v5rOt3geMA=,iv:n/yFp5f+LK8JaikifjRuieNtmcazl2VNz8rIzbvgBO8=,tag:Fs4+St1lxMn+VdEoP+Eo8g==,type:str] mac: ENC[AES256_GCM,data:59Mu6RlGEXV7BsNsX0yIr/zUgl9gvk77o2moF4D7GgPwllSVFLRB8Y3LvE7+NXLIjLj19nrK6b99CiH08NmWhSBO37+xXU/eYQ/W2wIEVIxfmhVcF9ePIZPwVuegLZ707S8jZDOcYzPOQuURe9hhbxJJPgHzzPzYoh7yushYUME=,iv:h6DCciUZtRMZFGB7PMfg4xnOWxyKQS/vfnOG1tqVfrI=,tag:q65pnHbLcUG+Gxo7K3Ca1w==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2

8
users/phundrak/alys.nix Normal file
View File

@ -0,0 +1,8 @@
{
imports = [./light-home.nix];
home.phundrak.sshKey = {
content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTv1lb6d99O84jeh6GdjPm8Gnt/HncSRhGhmoTq7BMK lucien@phundrak.com";
file = "/home/phundrak/.ssh/id_ed25519.pub";
};
modules.nh.flake = "/home/phundrak/.dotfiles";
}