Compare commits

...

4 Commits

17 changed files with 118 additions and 63 deletions

View File

@ -397,7 +397,7 @@ remap('n', '<leader>gs', function() require('neogit').open({}) end);
require("inlay-hints").setup {
only_current_line = false,
eol = {
right_align = true,
right_align = false,
}
}
local on_attach = function(client, bufnr)

View File

@ -0,0 +1,35 @@
{ config
, proj_root
, myLib
, ...
}:
let
inherit (myLib) fromYaml;
actualConfig = fromYaml (builtins.readFile "${proj_root}//alacritty/alacritty.yml");
cfg = config.base.alacritty;
in
{
options.base.alacritty.font.family = myLib.mkOption {
type = myLib.types.singleLineStr;
default = actualConfig.font.normal.family;
description = ''
The font family for Alacritty
'';
example = "DroidSansMono NF";
};
options.base.alacritty.enable = myLib.mkOption {
type = myLib.types.bool;
default = true;
description = ''
Enables alacritty
'';
example = true;
};
config.programs.alacritty = {
enable = cfg.enable;
settings = actualConfig // {
font.normal.family = cfg.font.family;
};
};
}

View File

@ -0,0 +1,3 @@
{
}

View File

@ -0,0 +1,3 @@
{
}:

View File

@ -0,0 +1,12 @@
{ pkgs
, lib ? pkgs.lib
, ...
}@inputs:
let
_lib = lib // import ../../lib { inherit pkgs lib; };
in
# TODO: Unpollute inputs
inputs // {
proj_root = builtins.toString ./../../..;
myLib = _lib;
}

View File

View File

View File

@ -45,22 +45,6 @@
"type": "github"
}
},
"from-yaml": {
"flake": false,
"locked": {
"lastModified": 1667993187,
"narHash": "sha256-JG1XYGCmR7Jqawvs8AO4c2mrOl37BXGGgU9cfeL0b8k=",
"owner": "pegasust",
"repo": "fromYaml",
"rev": "ef0ed4acfc4a6b7a0f1515cb48f5dbdda89dac3c",
"type": "github"
},
"original": {
"owner": "pegasust",
"repo": "fromYaml",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -151,7 +135,6 @@
"root": {
"inputs": {
"flake-utils": "flake-utils",
"from-yaml": "from-yaml",
"home-manager": "home-manager",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs_2",

View File

@ -9,10 +9,6 @@
flake-utils.url = "github:numtide/flake-utils";
nixgl.url = "github:guibou/nixGL";
rust-overlay.url = "github:oxalica/rust-overlay";
from-yaml = {
url = "github:pegasust/fromYaml";
flake = false;
};
};
outputs =
@ -21,7 +17,6 @@
, nixgl
, rust-overlay
, flake-utils
, from-yaml
, ...
}:
let
@ -32,7 +27,8 @@
inherit system overlays;
config = { allowUnfree = true; };
};
lib = (import ../lib-nix { inherit pkgs from-yaml; lib = pkgs.lib; });
# lib = (import ../lib { inherit pkgs; lib = pkgs.lib; });
mkModuleArgs = import ./base/mkModuleArgs.nix;
in
{
homeConfigurations =
@ -51,8 +47,8 @@
# optionally pass inarguments to module
# we migrate this from in-place modules to allow flexibility
# in this case, we can add "home" to input arglist of home.nix
extraSpecialArgs = {
myLib = lib;
extraSpecialArgs = mkModuleArgs {
inherit pkgs;
myHome = {
username = "hungtr";
homeDirectory = "/home/hungtr";
@ -67,8 +63,8 @@
# optionally pass inarguments to module
# we migrate this from in-place modules to allow flexibility
# in this case, we can add "home" to input arglist of home.nix
extraSpecialArgs = {
myLib = lib;
extraSpecialArgs = mkModuleArgs {
inherit pkgs;
myHome = {
username = "nixos";
homeDirectory = "/home/nixos";
@ -99,9 +95,13 @@
inherit pkgs;
modules = [
./home.nix
./base/alacritty.nix
{
base.alacritty.font.family = "BitstreamVeraSansMono Nerd Font";
}
];
extraSpecialArgs = {
myLib = lib;
extraSpecialArgs = mkModuleArgs {
inherit pkgs;
myHome = {
username = "hwtr";
homeDirectory = "/home/hwtr";

View File

@ -1,7 +1,13 @@
# myHome is injected from extraSpecialArgs in flake.nix
{ config
# This is a nix module, with an additional wrapper from home-manager
# myHome, myLib is injected from extraSpecialArgs in flake.nix
# This file represents the base settings for each machine
# Additional configurations goes to profiles/<user>
# or inlined in flake.nix
{ config # Represents the realized final configuration
, pkgs # This is by default just ``= import <nixpkgs>{}`
, myHome
, myLib
, option # The options we're given, this might be useful for typesafety?
, ...
}:
let
@ -28,20 +34,7 @@ let
# ]))
];
proj_root = builtins.toString ./../..;
# TODO: put this in a seperate library
# callPackage supports both PATH and function as first param!
yamlToJsonDrv = yamlContent: outputPath: pkgs.callPackage
({ runCommand }:
# runCommand source: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/trivial-builders.nix#L33
runCommand outputPath { inherit yamlContent; nativeBuildInputs = [ pkgs.yq ]; }
# run yq which outputs '.' (no filter) on file at yamlPath
# note that $out is passed onto the bash/sh script for execution
''
echo "$yamlContent" | yq >$out
'')
{ };
# fromYamlPath = yamlPath: builtins.fromJSON (builtins.readFile (yamlToJsonDrv yamlPath "any-output.json"));
fromYaml = yamlContent: builtins.fromJSON (builtins.readFile (yamlToJsonDrv yamlContent "any_output.json"));
inherit (myLib) fromYaml;
in
{
home = {
@ -54,10 +47,7 @@ in
pkgs.htop
pkgs.ripgrep
pkgs.unzip
pkgs.rust-bin.nightly.latest.default # Needed for alacritty?
# pkgs.nodejs-18_x
# pkgs.rust-analyzer # This should be very specific to env
# cool utilities
@ -84,11 +74,6 @@ in
programs.jq = {
enable = true;
};
programs.alacritty = myHome.programs.alacritty or {
enable = true;
# settings = myLib.fromYaml (builtins.readFile "${proj_root}/alacritty/alacritty.yml");
settings = fromYaml (builtins.readFile "${proj_root}//alacritty/alacritty.yml");
};
# nix: Propagates the environment with packages and vars when enter (children of)
# a directory with shell.nix-compatible and .envrc
programs.direnv = {

View File

@ -0,0 +1,5 @@
# main module exporter for different configuration profiles
{pkgs, libs,...} @ inputs:
{
hwtr = import ./hwtr.nix;
}

View File

View File

@ -1,4 +1,9 @@
{pkgs, lib, from-yaml, ...}@flake_import:
{
fromYaml = import "${from-yaml}/fromYaml.nix" {inherit lib;};
{ pkgs
, lib ? pkgs.lib
, ... }@flake_import:
let serde = import ./serde { inherit pkgs lib; };
in
pkgs.lib // lib // {
fromYaml = serde.fromYaml;
fromYamlPath = serde.fromYamlPath;
}

View File

@ -0,0 +1,28 @@
# Takes care of serializing and deserializing to some formats
# Blame: Pegasust<pegasucksgg@gmail.com>
# TODO: Add to* formats from pkgs.formats.*
{ pkgs
, lib
} @ inputs:
let
yamlToJsonDrv = yamlContent: outputPath: pkgs.callPackage
({ runCommand }:
# runCommand source: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/trivial-builders.nix#L33
runCommand outputPath { inherit yamlContent; nativeBuildInputs = [ pkgs.yq ]; }
# run yq which outputs '.' (no filter) on file at yamlPath
# note that $out is passed onto the bash/sh script for execution
''
echo "$yamlContent" | yq >$out
'')
{ };
in {
# Takes in a yaml string and produces a derivation with translated JSON at $outputPath
# similar to builtins.fromJSON, turns a YAML string to nix attrset
fromYaml = yamlContent: builtins.fromJSON (builtins.readFile (yamlToJsonDrv yamlContent "any_output.json"));
fromYamlPath = yamlPath: builtins.fromJSON (
builtins.readFile (
yamlToJsonDrv (
builtins.readFile yamlPath)
"any-output.json"));
# TODO: fromToml?
}

View File

@ -1,5 +1,5 @@
# This module aims to be merge (not inject/override) with top-level pkgs to provide
# personalized/custom packages
{ pkgs, lib, ... }@pkgs_input: {
dot-hwtr = import "./dot-hwtr" pkgs_input;
# dot-hwtr = import "./dot-hwtr" pkgs_input;
}

View File

@ -1,4 +0,0 @@
{ pkgs, lib, ... }@pkgs_input: pkgs.stdenv.mkDerivation {
name = "dot-hwtr";
native
}

View File

@ -10,7 +10,7 @@ HOME_MANAGER_DIR="${SCRIPT_DIR}/../nix-conf/home-manager"
# test if we have home-manager, if not, attempt to use nix to put home-manager to
# our environment
if [ $(home-manager &>/dev/null) ]; then
if [ $(home-manager >/dev/null 2>&1) ]; then
nix-shell -p home-manager --run "home-manager switch --flake $HOME_MANAGER_DIR"
else
home-manager switch --flake "$HOME_MANAGER_DIR"