feat(nix): user flake instead regular shell.nix
This commit is contained in:
parent
b5179b97ac
commit
558fc24911
6 changed files with 248 additions and 26 deletions
107
flake.lock
generated
Normal file
107
flake.lock
generated
Normal file
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736143030,
|
||||
"narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1737885589,
|
||||
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1735774519,
|
||||
"narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1735554305,
|
||||
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"systems": "systems",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "systems",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738070913,
|
||||
"narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "bebf27d00f7d10ba75332a0541ac43676985dea3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
24
flake.nix
Normal file
24
flake.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
description = "Nix flake for building latex document";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||
};
|
||||
|
||||
outputs =
|
||||
inputs@{
|
||||
nixpkgs,
|
||||
flake-parts,
|
||||
systems,
|
||||
...
|
||||
}:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
systems = [ "x86_64-linux" ];
|
||||
imports = [
|
||||
inputs.treefmt-nix.flakeModule
|
||||
./nix/default.nix
|
||||
];
|
||||
};
|
||||
}
|
8
nix/default.nix
Normal file
8
nix/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./packages.nix
|
||||
./devshells.nix
|
||||
];
|
||||
}
|
28
nix/devshells.nix
Normal file
28
nix/devshells.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
_: {
|
||||
config.perSystem =
|
||||
{
|
||||
config,
|
||||
inputs',
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
name = "hugo-shell";
|
||||
nativeBuildInputs = config.develPackages
|
||||
++ config.hugoBuildPackages
|
||||
;
|
||||
shellook = ''
|
||||
mkdir -p themes
|
||||
ln -snf "${config.themePackage}/" "themes/mainroad"
|
||||
'';
|
||||
};
|
||||
latex = pkgs.mkShell {
|
||||
name = "latex-shell";
|
||||
nativeBuildInputs = config.develPackages
|
||||
++ config.latexBuildPackages;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
81
nix/packages.nix
Normal file
81
nix/packages.nix
Normal file
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkOption mdDoc types;
|
||||
inherit (inputs.flake-parts.lib) mkPerSystemOption;
|
||||
in
|
||||
{
|
||||
options.perSystem = mkPerSystemOption (
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options = {
|
||||
latexBuildPackages = mkOption {
|
||||
description = mdDoc "Packages needed to build latex file";
|
||||
type = types.listOf types.package;
|
||||
default = with pkgs; [
|
||||
(pkgs.texlive.combine {
|
||||
inherit (pkgs.texlive)
|
||||
babel-french
|
||||
caption
|
||||
collection-luatex
|
||||
float
|
||||
fontawesome
|
||||
fontspec
|
||||
lato
|
||||
libertine
|
||||
listings
|
||||
lstfiracode
|
||||
pdfpages
|
||||
pdflscape
|
||||
scheme-basic
|
||||
soul
|
||||
titlesec
|
||||
xcolor
|
||||
;
|
||||
})
|
||||
fira-code
|
||||
];
|
||||
};
|
||||
|
||||
hugoBuildPackages = mkOption {
|
||||
description = mdDoc "Packages needed to build latex file";
|
||||
type = types.listOf types.package;
|
||||
default = with pkgs; [
|
||||
hugo
|
||||
];
|
||||
};
|
||||
|
||||
themePackage = mkOption {
|
||||
description = mdDoc "Theme user for my course note";
|
||||
default = pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "hugo-theme-mainroad";
|
||||
pname = "hugo-theme-mainroad";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "vimux";
|
||||
repo = "mainroad";
|
||||
rev = "13e04b3694ea2d20a68cfbfaea42a8c565079809";
|
||||
sha256 = "sha256-td8xQhAz/TnjZmOKIEiQjRgzdoicRrVN9h41Uxnnaso=";
|
||||
};
|
||||
installPhase = ''
|
||||
cp -r $src $out
|
||||
'';
|
||||
};
|
||||
};
|
||||
develPackages = mkOption {
|
||||
description = mdDoc "Python package used to development";
|
||||
type = types.listOf types.package;
|
||||
default = with pkgs; [
|
||||
convco
|
||||
go-task
|
||||
];
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
26
shell.nix
26
shell.nix
|
@ -1,26 +0,0 @@
|
|||
with (import <nixpkgs> {});
|
||||
let
|
||||
hugo-theme-mainroad = pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "hugo-theme-mainroad";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "vimux";
|
||||
repo = "mainroad";
|
||||
rev = "13e04b3694ea2d20a68cfbfaea42a8c565079809";
|
||||
sha256 = "sha256-td8xQhAz/TnjZmOKIEiQjRgzdoicRrVN9h41Uxnnaso=";
|
||||
};
|
||||
installPhase = ''
|
||||
cp -r $src $out
|
||||
'';
|
||||
preferLocalBuild = true;
|
||||
};
|
||||
in
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
hugo
|
||||
];
|
||||
|
||||
shellHook = ''
|
||||
mkdir -p themes
|
||||
ln -snf "${hugo-theme-mainroad}/" "themes/mainroad"
|
||||
'';
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue