Start rewriting with easy-hosts

This commit is contained in:
Christopher Mühl 2026-01-05 10:58:37 +01:00
parent 8f7f650b54
commit 3cce82ce03
No known key found for this signature in database
GPG key ID: 925AC7D69955293F
9 changed files with 308 additions and 271 deletions

View file

@ -1,12 +1,10 @@
{
lib,
pkgs,
...
}: {
programs.niri.settings.spawn-at-startup = with lib._elements; [
# {argv = ["awww-daemon"];}
# {argv = ["awww" "img" "${fixture "wallpapers/cat-vibes.webp"}"];}
{...}: {
programs.niri.settings.spawn-at-startup = [
# this is a funny fix for xdg environment not properly being set and thus
# xdg-open not working properly
{argv = ["systemctl --user restart xdg-desktop-portal"];}
{argv = ["kitty"];}
# open fastfetch by default
{argv = ["kitty --title 'fastfetch' sh -c 'fastfetch; read'"];}
];
}

View file

@ -13,6 +13,5 @@
home.packages = with pkgs; [
fuzzel
inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww
];
}

View file

@ -41,8 +41,14 @@ in {
block-out-from = "screencast";
}
{
matches = [{app-id = "kitty";}];
opacity = 0.97;
matches = [{title = "fastfetch";}];
open-floating = true;
opacity = 1.0;
min-width = 400; # 115 x 26 columns
max-width = 400;
min-height = 400;
max-height = 400;
}
{
matches = [{title = "ld.toph.so";}];
@ -57,6 +63,10 @@ in {
block-out-from = "screencast";
}
{
matches = [{app-id = "kitty";}];
opacity = 0.97;
}
{
matches = [
{app-id = "org.zealdocs.zeal";}

289
flake.lock generated
View file

@ -73,26 +73,6 @@
"type": "github"
}
},
"awww": {
"inputs": {
"flake-compat": "flake-compat_4",
"nixpkgs": "nixpkgs_4",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1765147877,
"narHash": "sha256-SoSUY44s2nmg/SGriAIvXGSuVJBUvXlox5jhH1IeB9k=",
"ref": "refs/heads/main",
"rev": "45f9ad2ba04f2bb5656053bc1f285e060d571d79",
"revCount": 1322,
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
},
"original": {
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
}
},
"base16": {
"inputs": {
"fromYaml": "fromYaml"
@ -164,7 +144,7 @@
"community-solid-server": {
"inputs": {
"flake-parts": "flake-parts_3",
"nixpkgs": "nixpkgs_5"
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1767157894,
@ -223,6 +203,26 @@
"type": "github"
}
},
"deploy-rs": {
"inputs": {
"flake-compat": "flake-compat_4",
"nixpkgs": "nixpkgs_5",
"utils": "utils"
},
"locked": {
"lastModified": 1766051518,
"narHash": "sha256-znKOwPXQnt3o7lDb3hdf19oDo0BLP4MfBOYiWkEHoik=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "d5eff7f948535b9c723d60cd8239f8f11ddc90fa",
"type": "github"
},
"original": {
"owner": "serokell",
"repo": "deploy-rs",
"type": "github"
}
},
"devshell": {
"inputs": {
"nixpkgs": [
@ -251,11 +251,11 @@
]
},
"locked": {
"lastModified": 1753140376,
"narHash": "sha256-7lrVrE0jSvZHrxEzvnfHFE/Wkk9DDqb+mYCodI5uuB8=",
"lastModified": 1766150702,
"narHash": "sha256-P0kM+5o+DKnB6raXgFEk3azw8Wqg5FL6wyl9jD+G5a4=",
"owner": "nix-community",
"repo": "disko",
"rev": "545aba02960caa78a31bd9a8709a0ad4b6320a5c",
"rev": "916506443ecd0d0b4a0f4cf9d40a3c22ce39b378",
"type": "github"
},
"original": {
@ -264,6 +264,21 @@
"type": "github"
}
},
"easy-hosts": {
"locked": {
"lastModified": 1755470564,
"narHash": "sha256-KB1ZryVDoQcbIsItOf4WtxkHhh3ppj+XwMpSnt/2QHc=",
"owner": "tgirlcloud",
"repo": "easy-hosts",
"rev": "d0422bc7b3db26268982aa15d07e60370e76ee1d",
"type": "github"
},
"original": {
"owner": "tgirlcloud",
"repo": "easy-hosts",
"type": "github"
}
},
"elemental-wine-source": {
"flake": false,
"locked": {
@ -347,27 +362,11 @@
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_5": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -434,6 +433,24 @@
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
"locked": {
"lastModified": 1767602221,
"narHash": "sha256-wl3P4WioICNY9SEvClT4JLAWFtItk3CbFNm/FmeeWlI=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "1e34f377e37de05071735d373b481da2508dd625",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"nur",
@ -454,7 +471,7 @@
"type": "github"
}
},
"flake-parts_5": {
"flake-parts_6": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@ -475,9 +492,9 @@
"type": "github"
}
},
"flake-parts_6": {
"flake-parts_7": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
"nixpkgs-lib": "nixpkgs-lib_4"
},
"locked": {
"lastModified": 1765835352,
@ -494,43 +511,6 @@
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_3"
},
"locked": {
"lastModified": 1715533576,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
},
@ -548,16 +528,16 @@
"type": "github"
}
},
"flake-utils_3": {
"flake-utils_2": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -892,6 +872,21 @@
"type": "github"
}
},
"nixpkgs-lib_4": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1764831616,
@ -957,22 +952,6 @@
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1763934636,
"narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1767051569,
"narHash": "sha256-0MnuWoN+n1UYaGBIpqpPs9I9ZHW4kynits4mrnh1Pk4=",
@ -988,6 +967,22 @@
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1743014863,
"narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1766309749,
@ -1074,7 +1069,7 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_5",
"nixpkgs": [
"nixpkgs"
]
@ -1189,30 +1184,17 @@
"type": "github"
}
},
"quadlet": {
"locked": {
"lastModified": 1754008153,
"narHash": "sha256-MYT1mDtSkiVg343agxgBFsnuNU3xS8vRy399JXX1Vw0=",
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"rev": "1b2d27d460d8c7e4da5ba44ede463b427160b5c4",
"type": "github"
},
"original": {
"owner": "SEIAROTg",
"repo": "quadlet-nix",
"type": "github"
}
},
"root": {
"inputs": {
"affinity-nix": "affinity-nix",
"agenix": "agenix",
"agenix-rekey": "agenix-rekey",
"awww": "awww",
"community-solid-server": "community-solid-server",
"darwin": "darwin_2",
"deploy-rs": "deploy-rs",
"disko": "disko",
"easy-hosts": "easy-hosts",
"flake-parts": "flake-parts_4",
"flatpak": "flatpak",
"git-global-log": "git-global-log",
"home-manager": "home-manager_2",
@ -1223,56 +1205,11 @@
"noctalia": "noctalia",
"nur": "nur",
"ovos": "ovos",
"quadlet": "quadlet",
"snowfall": "snowfall",
"stylix": "stylix",
"unstable": "unstable",
"waka-victoriametrics": "waka-victoriametrics"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"awww",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764038373,
"narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"snowfall": {
"inputs": {
"flake-compat": "flake-compat_5",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1765361626,
"narHash": "sha256-kX0Dp/kYSRbQ+yd9e3lmmUWdNbipufvKfL2IzbrSpnY=",
"owner": "snowfallorg",
"repo": "lib",
"rev": "c566ad8b7352c30ec3763435de7c8f1c46ebb357",
"type": "github"
},
"original": {
"owner": "snowfallorg",
"repo": "lib",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
@ -1280,7 +1217,7 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_6",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
@ -1518,9 +1455,27 @@
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"waka-victoriametrics": {
"inputs": {
"flake-parts": "flake-parts_6",
"flake-parts": "flake-parts_7",
"nixpkgs": [
"nixpkgs"
]

170
flake.nix
View file

@ -8,12 +8,9 @@
master.url = "github:NixOS/nixpkgs/master";
# Flake framework
# flake-parts.url = "github:hercules-ci/flake-parts";
# nixos-unified.url = "github:srid/nixos-unified";
snowfall = {
url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
easy-hosts.url = "github:tgirlcloud/easy-hosts";
deploy-rs.url = "github:serokell/deploy-rs";
# System management
home-manager = {
@ -24,8 +21,6 @@
url = "github:lnl7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
# Infrastructure
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
@ -41,18 +36,20 @@
inputs.nixpkgs.follows = "nixpkgs";
};
# Styling
# Desktop usage
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
niri.url = "github:sodiboo/niri-flake";
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "unstable";
};
affinity-nix.url = "github:mrshmllow/affinity-nix";
quadlet.url = "github:SEIAROTg/quadlet-nix";
musnix.url = "github:musnix/musnix";
niri.url = "github:sodiboo/niri-flake";
flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
awww.url = "git+https://codeberg.org/LGFae/awww";
git-global-log.url = "github:tophcodes/git-global-log";
nur = {
url = "github:nix-community/NUR";
@ -61,10 +58,6 @@
community-solid-server = {
url = "github:tophcodes/CommunitySolidServer.nix/main";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "unstable";
};
# Custom
ovos = {
@ -77,82 +70,83 @@
};
};
outputs = {self, ...} @ inputs:
(inputs.snowfall.mkFlake {
inherit inputs;
src = ./.;
outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} (top @ {
config,
withSystem,
moduleWithSystem,
...
}: {
imports = [
inputs.agenix-rekey.flakeModule
inputs.disko.flakeModules.default
inputs.home-manager.flakeModules.home-manager
./modules/flake
];
});
# (inputs.snowfall.mkFlake {
# inherit inputs;
# src = ./.;
# Exposes all internal libs and packages as `lib._elements` or `pkgs._elements` respectively
snowfall.namespace = "_elements";
# # Exposes all internal libs and packages as `lib._elements` or `pkgs._elements` respectively
# snowfall.namespace = "_elements";
# Global system modules to be included for all systems
systems.modules = with inputs; {
nixos = [
disko.nixosModules.default
agenix.nixosModules.default
agenix-rekey.nixosModules.default
./modules/common
];
darwin = [
agenix.darwinModules.default
agenix-rekey.nixosModules.default
stylix.darwinModules.stylix
./modules/common
];
};
# Add modules only to specific hosts
systems.hosts = with inputs; {
cobalt.modules = [
niri.nixosModules.niri
stylix.nixosModules.stylix
musnix.nixosModules.default
ovos.nixosModules.default
waka-victoriametrics.nixosModules.default
];
beryllium.modules = [
quadlet.nixosModules.quadlet
];
europium.modules = [
quadlet.nixosModules.quadlet
];
};
homes.users = {
# TODO: For some reason this needs to be toggled for agenix to work?
# "christopher@cobalt".modules = with inputs; [
# niri.homeModules.niri
# # Global system modules to be included for all systems
# systems.modules = with inputs; {
# nixos = [
# disko.nixosModules.default
# ./modules/common
# ];
"christopher@beryllium".modules = with inputs; [
quadlet.homeManagerModules.quadlet
];
};
# darwin = [
# stylix.darwinModules.stylix
# ./modules/common
# ];
# };
# Configure nixpkgs when instantiating the package set
# TODO: This is already specified elsewhere. Still needed here?
channels-config = {
allowUnfree = true;
permittedInsecurePackages = [];
};
# # Add modules only to specific hosts
# systems.hosts = with inputs; {
# cobalt.modules = [
# niri.nixosModules.niri
# stylix.nixosModules.stylix
# musnix.nixosModules.default
# ovos.nixosModules.default
# waka-victoriametrics.nixosModules.default
# ];
# };
overlays = with inputs; [
niri.overlays.niri
nur.overlays.default
ovos.overlays.default
(final: prev: {
waka-victoriametrics = waka-victoriametrics.packages.${final.system}.default;
})
];
# homes.users = {
# # TODO: For some reason this needs to be toggled for agenix to work?
# # "christopher@cobalt".modules = with inputs; [
# # niri.homeModules.niri
# # ];
# };
outputs-builder = channels: {
formatter = channels.nixpkgs.alejandra;
};
})
// {
agenix-rekey = inputs.agenix-rekey.configure {
userFlake = inputs.self;
nixosConfigurations = inputs.self.nixosConfigurations // inputs.self.darwinConfigurations;
homeConfigurations = inputs.self.homeConfigurations;
};
};
# # Configure nixpkgs when instantiating the package set
# # TODO: This is already specified elsewhere. Still needed here?
# channels-config = {
# allowUnfree = true;
# permittedInsecurePackages = [];
# };
# overlays = with inputs; [
# niri.overlays.niri
# nur.overlays.default
# ovos.overlays.default
# (final: prev: {
# waka-victoriametrics = waka-victoriametrics.packages.${final.system}.default;
# })
# ];
# outputs-builder = channels: {
# formatter = channels.nixpkgs.alejandra;
# };
# })
# // {
# agenix-rekey = inputs.agenix-rekey.configure {
# userFlake = inputs.self;
# nixosConfigurations = inputs.self.nixosConfigurations // inputs.self.darwinConfigurations;
# homeConfigurations = inputs.self.homeConfigurations;
# };
# };
# }
}

18
modules/flake/args.nix Normal file
View file

@ -0,0 +1,18 @@
{inputs, ...}: {
systems = [
"x86_64-linux"
"x86_64-darwin"
];
perSystem = {system, ...}: {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
config = {
allowUnfree = true;
allowUnsupportedSystem = true;
};
overlays = [];
};
};
}

View file

@ -0,0 +1,7 @@
{...}: {
imports = [
./hosts.nix
./args.nix
./formatter.nix
];
}

View file

@ -0,0 +1,36 @@
{...}: {
perSystem = {pkgs, ...}: {
formatter = pkgs.treefmt.withConfig {
runtimeInputs = with pkgs; [
deadnix # scans for dead code
statix # static code analysis for nix
alejandra # nix formatter
];
settings = {
on-unmatched = "info";
tree-root-file = "flake.nix";
excludes = ["secrets/*"];
formatter = {
deadnix = {
command = "deadnix";
options = ["--edit"];
includes = ["*.nix"];
};
alejandra = {
command = "alejandra";
includes = ["*.nix"];
};
statix = {
command = "statix-fix";
includes = ["*.nix"];
};
};
};
};
};
}

20
modules/flake/hosts.nix Normal file
View file

@ -0,0 +1,20 @@
{
self,
inputs,
...
}: {
imports = [inputs.easy-hosts.flakeModule];
config.easy-hosts = {
hosts = {
endurance = {};
vasa = {
arch = "aarch64";
class = "darwin";
};
aepplet = {};
};
};
}