wip
parent
1c29ba92b1
commit
10e59f0420
|
@ -1,12 +1,28 @@
|
||||||
{
|
let
|
||||||
mkModuleArgs = import ./mkModuleArgs.nix;
|
# these are configured to work with home-manager with some mutations that are
|
||||||
modules = [
|
# reconfigurable
|
||||||
|
homeModules = [
|
||||||
./alacritty.nix
|
./alacritty.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./shells.nix
|
./shells.nix
|
||||||
|
./neovim.nix
|
||||||
|
./home.req.nix
|
||||||
{
|
{
|
||||||
config.programs.home-manager.enable = true;
|
config.programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
# These are the modules that should be used only in nixosConfigurations
|
||||||
|
# since it relies on root permission to run
|
||||||
|
serviceModules = [
|
||||||
|
./gitea.service.nix
|
||||||
|
./vault.service.nix
|
||||||
|
./tailscale.service.nix
|
||||||
|
];
|
||||||
|
allModules = homeModules ++ serviceModules;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mkModuleArgs = import ./mkModuleArgs.nix;
|
||||||
|
modules = allModules;
|
||||||
|
inherit homeModules serviceModules;
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,9 +66,10 @@ in
|
||||||
example = 3000;
|
example = 3000;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# TODO : anyway to override configuration?
|
# TODO : anyway to override configuration?
|
||||||
config.programs.git = {
|
config.programs.git = lib.mkIf cfg.enable {
|
||||||
inherit (cfg) enable ignores;
|
inherit (cfg) ignores;
|
||||||
|
enable = true;
|
||||||
userName = cfg.name;
|
userName = cfg.name;
|
||||||
userEmail = cfg.email;
|
userEmail = cfg.email;
|
||||||
aliases = baseAliases // cfg.aliases;
|
aliases = baseAliases // cfg.aliases;
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
{ config, pkgs, lib, ... }@input:
|
||||||
|
let
|
||||||
|
cfg = config.base.home;
|
||||||
|
types = lib.types;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.base.home = {
|
||||||
|
packages = lib.mkOption {
|
||||||
|
type = types.listOf types.package;
|
||||||
|
description = "Addtional packages that are available at user level";
|
||||||
|
default = [ ];
|
||||||
|
example = [ pkgs.python310Full pkgs.ripgrep ];
|
||||||
|
};
|
||||||
|
user = lib.mkOption {
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,16 +0,0 @@
|
||||||
# This shows the config fields that these modules are expected to have
|
|
||||||
# usage: [extra]specialArgs = mkModuleArgs {pkgs, lib,...} @ inputs
|
|
||||||
# Note that mkModuleArgs also recursively merges `inputs`
|
|
||||||
{ pkgs
|
|
||||||
, lib ? pkgs.lib
|
|
||||||
, ...
|
|
||||||
}@inputs:
|
|
||||||
let
|
|
||||||
recursiveUpdate = lib.recursiveUpdate;
|
|
||||||
_lib = recursiveUpdate lib (import ../../lib { inherit pkgs lib; });
|
|
||||||
in
|
|
||||||
# TODO: Unpollute inputs
|
|
||||||
recursiveUpdate inputs {
|
|
||||||
proj_root = builtins.toString ./../../..;
|
|
||||||
myLib = _lib;
|
|
||||||
}
|
|
|
@ -0,0 +1 @@
|
||||||
|
import
|
|
@ -0,0 +1,216 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1668681692,
|
||||||
|
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1644229661,
|
||||||
|
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils-plus": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1657226504,
|
||||||
|
"narHash": "sha256-GIYNjuq4mJlFgqKsZ+YrgzWm0IpA4axA3MCrdKYj7gs=",
|
||||||
|
"owner": "gytis-ivaskevicius",
|
||||||
|
"repo": "flake-utils-plus",
|
||||||
|
"rev": "2bf0f91643c2e5ae38c1b26893ac2927ac9bd82a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "gytis-ivaskevicius",
|
||||||
|
"repo": "flake-utils-plus",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1659877975,
|
||||||
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1659877975,
|
||||||
|
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"utils": "utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1670970889,
|
||||||
|
"narHash": "sha256-TWJo3/X3Q3r+HeX16QN4FE6ddBpGtAboymSEF+4Nnc0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "e412025fffdcd6219ddd21c65d9a1b90005ce508",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixgl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1661367362,
|
||||||
|
"narHash": "sha256-Qc8MXcV+YCPREu8kk6oggk23ZBKLqeQRAIsLbHEviPE=",
|
||||||
|
"owner": "guibou",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"rev": "7165ffbccbd2cf4379b6cd6d2edd1620a427e5ae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "guibou",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1660551188,
|
||||||
|
"narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1671021324,
|
||||||
|
"narHash": "sha256-MDB6TncBzBCvAgQmjNn14VIaO5wdbxExp8NGP990Udk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "62433a4892603c523840a67e50b6631c37adb928",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1665296151,
|
||||||
|
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils-plus": "flake-utils-plus",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixgl": "nixgl",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1671071423,
|
||||||
|
"narHash": "sha256-zUldhyWANdgko+lqQuB1Eee7TyYya1KiOS0SCd/Y268=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "684659b7ca903e512a421bc6ade689fb26e509b4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1667395993,
|
||||||
|
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
|
@ -14,23 +14,44 @@
|
||||||
url = "github:edolstra/flake-compat";
|
url = "github:edolstra/flake-compat";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
naersk.url = "gihub:nix-community/naersk";
|
# naersk.url = "gihub:nix-community/naersk";
|
||||||
};
|
};
|
||||||
outputs = { nixpkgs, ... } @ inputs:
|
outputs = { nixpkgs, nixgl, rust-overlay, flake-utils-plus, ... } @ inputs:
|
||||||
|
{
|
||||||
|
# HACK:
|
||||||
|
# this is to get multiple platforms support for home-manager
|
||||||
|
# see https://github.com/nix-community/home-manager/issues/3075#issuecomment-1330661815
|
||||||
|
# Expect this to change quite in some near future
|
||||||
|
# packages.linux_something.{nixosConfigurations,homeConfigurations}
|
||||||
|
packages = builtins.foldl'
|
||||||
|
(so_far: system: (
|
||||||
let
|
let
|
||||||
# init config
|
# init config
|
||||||
overlays = [ nixgl.overlay rust-overlay.overlays.default ];
|
overlays = [ nixgl.overlay rust-overlay.overlays.default ];
|
||||||
pkgs = import nixpkgs { inherit overlays; };
|
pkgs = import nixpkgs { inherit system overlays; };
|
||||||
_lib = pkgs.lib;
|
_lib = pkgs.lib;
|
||||||
lib = _lib.recursiveUpdate _lib import ./lib { inherit pkgs; };
|
lib = _lib.recursiveUpdate _lib import ./lib { inherit pkgs; };
|
||||||
|
configModule = import ./configModule;
|
||||||
|
moduleInputs = lib.recursiveUpdate inputs { inherit pkgs lib configModule; };
|
||||||
|
|
||||||
# module collecting
|
# module collecting
|
||||||
hosts = import ./hosts { inherit pkgs lib; };
|
hosts = import ./hosts moduleInputs;
|
||||||
users = import ./users { inherit pkgs lib; };
|
users = import ./users moduleInputs;
|
||||||
|
exportSystems = { nixosConfigurations, homeConfigurations }@_configs: {
|
||||||
|
packages.${system} = {
|
||||||
|
inherit (_configs) nixosConfigurations homeConfigurations;
|
||||||
|
};
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
so_far // {
|
||||||
|
${system} = {
|
||||||
inherit pkgs lib overlays;
|
inherit pkgs lib overlays;
|
||||||
nixosConfigurations = hosts;
|
nixosConfigurations = hosts;
|
||||||
homeConfigurations = users;
|
homeConfigurations = users;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
))
|
||||||
|
{ }
|
||||||
|
flake-utils-plus.lib.defaultSystems;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
accept-flake-config = true
|
||||||
|
experimental-features = nix-command flakes
|
|
@ -7,4 +7,18 @@
|
||||||
exportWithInputs = modules: inputs: (
|
exportWithInputs = modules: inputs: (
|
||||||
lib.mapAttrs (name: value: (value inputs))
|
lib.mapAttrs (name: value: (value inputs))
|
||||||
(flake-utils-plus.lib.exportModules modules));
|
(flake-utils-plus.lib.exportModules modules));
|
||||||
|
mkModuleArgs =
|
||||||
|
# This shows the config fields that these modules are expected to have
|
||||||
|
# usage: [extra]specialArgs = mkModuleArgs {pkgs, lib,...} @ inputs
|
||||||
|
# Note that mkModuleArgs also recursively merges `inputs`
|
||||||
|
{ pkgs, lib ? pkgs.lib, ... }@inputs:
|
||||||
|
let
|
||||||
|
recursiveUpdate = lib.recursiveUpdate;
|
||||||
|
_lib = recursiveUpdate lib (import ../../lib { inherit pkgs lib; });
|
||||||
|
in
|
||||||
|
# TODO: Unpollute inputs
|
||||||
|
recursiveUpdate inputs {
|
||||||
|
proj_root = builtins.toString ./../..;
|
||||||
|
myLib = _lib;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,31 @@
|
||||||
{ ... }@inputs: {
|
{ home-manager, lib, pkgs, configModule, ... }@inputs: {
|
||||||
|
# end result: homeConfigurations.hwtr = home-manager...
|
||||||
|
homeConfig = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = configModule.homeModules ++ [
|
||||||
|
{
|
||||||
|
base.alacritty.font.family = "BitstreamVeraSansMono Nerd Font";
|
||||||
|
base.shells = {
|
||||||
|
shellAliases = {
|
||||||
|
nixGL = "nixGLIntel";
|
||||||
|
};
|
||||||
|
};
|
||||||
users.users.hungtr = {
|
users.users.hungtr = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
home = "/home/hungtr";
|
home = "/home/hungtr";
|
||||||
description = "pegasust/hungtr";
|
description = "pegasust/hungtr";
|
||||||
extraGroups = [ "wheel" "networkmanager" ];
|
extraGroups = [ "wheel" "networkmanager" ];
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraSpecialArgs = lib.mkModuleArgs {
|
||||||
|
inherit pkgs;
|
||||||
|
myHome = {
|
||||||
|
packages = [
|
||||||
|
pkgs.nixgl.nixGLIntel
|
||||||
|
pkgs.postman
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
homeConfig = home-manager.lib.homeManagerConfiguration {
|
homeConfig = home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
modules = base.modules ++ [
|
modules = base.modules ++ [
|
||||||
./home.nix
|
./home.req.nix
|
||||||
{
|
{
|
||||||
base.alacritty.font.family = "BitstreamVeraSansMono Nerd Font";
|
base.alacritty.font.family = "BitstreamVeraSansMono Nerd Font";
|
||||||
base.shells = {
|
base.shells = {
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
extraSpecialArgs = mkModuleArgs {
|
extraSpecialArgs = lib.mkModuleArgs {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
myHome = {
|
myHome = {
|
||||||
username = "hwtr";
|
username = "hwtr";
|
||||||
|
|
Loading…
Reference in New Issue