Compare commits
3 commits
ef59fd800e
...
c74103f105
Author | SHA1 | Date | |
---|---|---|---|
Antoine Martin | c74103f105 | ||
Antoine Martin | 0c25fa3f83 | ||
Antoine Martin | 912073bee6 |
|
@ -1,11 +1,18 @@
|
||||||
{ pkgs, lib, config, options, ... }:
|
{ pkgs, lib, config, options, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
optional
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.gui = {
|
options.my.gui = {
|
||||||
enable = lib.mkEnableOption "System has some kind of screen attached";
|
enable = mkEnableOption "System has some kind of screen attached";
|
||||||
isNvidia = lib.mkEnableOption "System a NVIDIA GPU";
|
isNvidia = mkEnableOption "System a NVIDIA GPU";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.my.gui.enable {
|
config = mkIf config.my.gui.enable {
|
||||||
my.displayManager.sddm.enable = true;
|
my.displayManager.sddm.enable = true;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
@ -21,13 +28,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
element-desktop
|
element-desktop
|
||||||
feh
|
feh
|
||||||
firefox
|
firefox
|
||||||
ffmpeg
|
ffmpeg
|
||||||
gimp
|
gimp
|
||||||
gnome.nautilus
|
|
||||||
imagemagick
|
imagemagick
|
||||||
mpv
|
mpv
|
||||||
obs-studio
|
obs-studio
|
||||||
|
@ -39,9 +46,12 @@
|
||||||
thunderbird
|
thunderbird
|
||||||
virt-manager
|
virt-manager
|
||||||
zathura
|
zathura
|
||||||
|
;
|
||||||
|
|
||||||
unstable.discord
|
inherit (pkgs.gnome) nautilus;
|
||||||
];
|
|
||||||
|
inherit (pkgs.unstable) discord;
|
||||||
|
};
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
programs.nm-applet.enable = true;
|
programs.nm-applet.enable = true;
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.networking.externalInterface = with lib; mkOption {
|
options.my.networking.externalInterface = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "eth0";
|
example = "eth0";
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
bandwhich.enable = true;
|
bandwhich.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
# shell usage
|
# shell usage
|
||||||
fd
|
fd
|
||||||
ripgrep
|
ripgrep
|
||||||
|
@ -39,8 +40,6 @@
|
||||||
pinentry-curses
|
pinentry-curses
|
||||||
python3
|
python3
|
||||||
vim
|
vim
|
||||||
clang_11
|
|
||||||
llvmPackages_11.bintools
|
|
||||||
|
|
||||||
# terminal utilities
|
# terminal utilities
|
||||||
bottom
|
bottom
|
||||||
|
@ -54,5 +53,11 @@
|
||||||
|
|
||||||
# nix pkgs lookup
|
# nix pkgs lookup
|
||||||
nix-index
|
nix-index
|
||||||
];
|
;
|
||||||
|
|
||||||
|
inherit (pkgs.llvmPackages_11)
|
||||||
|
bintools
|
||||||
|
clang
|
||||||
|
;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
24
flake.lock
24
flake.lock
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"emacs-overlay": {
|
"emacs-overlay": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1641149178,
|
"lastModified": 1641901534,
|
||||||
"narHash": "sha256-Mt+oT5YZ6G9zHctDKV5pY+3vIdsMmAg0HMvz6rxsIc0=",
|
"narHash": "sha256-Nvm6Zj80fVtzmGsUFYlz9XGFyLnyAe9VoduPmDBu+js=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "emacs-overlay",
|
"repo": "emacs-overlay",
|
||||||
"rev": "f3c435a5e5cfa3ce1b2f50ba37b9cacfec4139d9",
|
"rev": "57378ea2f62e9f450f420dc9d01cc06e0d3dd15e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -39,11 +39,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1641121012,
|
"lastModified": 1641915897,
|
||||||
"narHash": "sha256-svaOMxNMQgFHjcxdmLojOxTxfqSENtnO+S3kb+npIwY=",
|
"narHash": "sha256-C5Vw7B8BKA/kr9tWVYjEdD3AjstXFqoxkkzrOwfQZxk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "8e7a10602d1eb1d242c9d3f9b822203d5751a8c6",
|
"rev": "5209ea0d8c77399ec4987590e9738953f15f8d80",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -71,11 +71,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1640959792,
|
"lastModified": 1641710811,
|
||||||
"narHash": "sha256-zYSR//06FU2TDOpKKj0Hkff6unsxk3NwwNFuB1loU6E=",
|
"narHash": "sha256-yVJ+CtwWZY8BnkNIJ/ue5a28yrRM6CkDF1LvmGmqqwM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "59bfda72480496f32787cec8c557182738b1bd3f",
|
"rev": "0ecf7d414811f831060cf55707c374d54fbb1dec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -87,11 +87,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable-small": {
|
"nixpkgs-unstable-small": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1641125298,
|
"lastModified": 1641865627,
|
||||||
"narHash": "sha256-oNIG2UsyMk/osOmnjxHp53d8nJMudpW5a2+dcgsJzmE=",
|
"narHash": "sha256-B3b7KCThCx5bcDtWCX9ZZIl/EVs/lB8iDdI277/tvNA=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c1d8e77ac2ca4248886632c597debea233700b2b",
|
"rev": "3fe528dec572a26404f130893d2c22a35646247c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -60,6 +60,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
overlays = import ./overlays;
|
||||||
|
|
||||||
nixosConfigurations =
|
nixosConfigurations =
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
@ -73,7 +75,7 @@
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
] ++ builtins.attrValues self.overlays;
|
||||||
sharedModules = [
|
sharedModules = [
|
||||||
home-manager.nixosModule
|
home-manager.nixosModule
|
||||||
{ nixpkgs.overlays = shared_overlays; }
|
{ nixpkgs.overlays = shared_overlays; }
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.alacritty;
|
cfg = config.my.home.alacritty;
|
||||||
alacrittyTheme = config.my.theme.alacrittyTheme;
|
alacrittyTheme = config.my.theme.alacrittyTheme;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.alacritty.enable = (lib.mkEnableOption "Alacritty terminal") // { default = config.my.home.x.enable; };
|
options.my.home.alacritty.enable = (mkEnableOption "Alacritty terminal") // { default = config.my.home.x.enable; };
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -34,9 +39,8 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = [ pkgs.iosevka-bin ];
|
||||||
iosevka-bin
|
|
||||||
];
|
|
||||||
# make sure font is discoverable
|
# make sure font is discoverable
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.bat;
|
cfg = config.my.home.bat;
|
||||||
batTheme = config.my.theme.batTheme;
|
batTheme = config.my.theme.batTheme;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.bat = with lib; {
|
options.my.home.bat = {
|
||||||
enable = (mkEnableOption "bat code display tool") // { default = true; };
|
enable = (mkEnableOption "bat code display tool") // { default = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.bat = {
|
programs.bat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,31 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.home.emacs = with lib; {
|
options.my.home.emacs = {
|
||||||
enable = mkEnableOption "Emacs daemon configuration";
|
enable = mkEnableOption "Emacs daemon configuration";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.my.home.emacs.enable {
|
config = mkIf config.my.home.emacs.enable {
|
||||||
|
|
||||||
home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ];
|
home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ];
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "emacsclient -t";
|
EDITOR = "emacsclient -t";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
sqlite # needed by org-roam
|
sqlite # needed by org-roam
|
||||||
|
|
||||||
# fonts used by my config
|
# fonts used by my config
|
||||||
emacs-all-the-icons-fonts
|
emacs-all-the-icons-fonts
|
||||||
iosevka-bin
|
iosevka-bin
|
||||||
];
|
;
|
||||||
|
};
|
||||||
# make sure above fonts are discoverable
|
# make sure above fonts are discoverable
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.firefox;
|
cfg = config.my.home.firefox;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.firefox = with lib; {
|
options.my.home.firefox = {
|
||||||
enable = (mkEnableOption "firefox config") // { default = config.my.home.x.enable; };
|
enable = (mkEnableOption "firefox config") // { default = config.my.home.x.enable; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.firefox.override {
|
package = pkgs.firefox.override {
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.fish;
|
cfg = config.my.home.fish;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.fish.enable = (lib.mkEnableOption "Fish shell") // { default = true; };
|
options.my.home.fish.enable = (mkEnableOption "Fish shell") // { default = true; };
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.flameshot;
|
cfg = config.my.home.flameshot;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.flameshot = with lib; {
|
options.my.home.flameshot = {
|
||||||
enable = mkEnableOption "flameshot autolaunch";
|
enable = mkEnableOption "flameshot autolaunch";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.services.flameshot = lib.mkIf cfg.enable {
|
config.services.flameshot = mkIf cfg.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.git;
|
cfg = config.my.home.git;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.git.enable = (lib.mkEnableOption "Git configuration") // { default = true; };
|
options.my.home.git.enable = (mkEnableOption "Git configuration") // { default = true; };
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.home.laptop = with lib; {
|
options.my.home.laptop = {
|
||||||
enable = mkEnableOption "Laptop settings";
|
enable = mkEnableOption "Laptop settings";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.lorri;
|
cfg = config.my.home.lorri;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.lorri = with lib; {
|
options.my.home.lorri = {
|
||||||
enable = (mkEnableOption "lorri daemon setup") // { default = true; };
|
enable = (mkEnableOption "lorri daemon setup") // { default = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.lorri.enable = true;
|
services.lorri.enable = true;
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.rofi;
|
cfg = config.my.home.rofi;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.rofi = with lib; {
|
options.my.home.rofi = {
|
||||||
enable = (mkEnableOption "rofi configuration") // { default = config.my.home.x.enable; };
|
enable = (mkEnableOption "rofi configuration") // { default = config.my.home.x.enable; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
with lib;
|
let
|
||||||
|
inherit (lib)
|
||||||
|
fileContents
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.my.secrets = mkOption {
|
options.my.secrets = mkOption {
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.ssh;
|
cfg = config.my.home.ssh;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.ssh = with lib; {
|
options.my.home.ssh = {
|
||||||
enable = (mkEnableOption "ssh configuration") // { default = true; };
|
enable = (mkEnableOption "ssh configuration") // { default = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
mkColorOption = import ./color.nix { inherit lib; };
|
mkColorOption = import ./color.nix { inherit lib; };
|
||||||
|
|
||||||
primaryColorModule = types.submodule {
|
primaryColorModule = types.submodule {
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
with lib;
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
in
|
||||||
types.submodule {
|
types.submodule {
|
||||||
options = {
|
options = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
let
|
let
|
||||||
mkColorOption = with lib; {default ? "#000000", description ? "" }: mkOption {
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
|
mkColorOption = {default ? "#000000", description ? "" }: mkOption {
|
||||||
inherit description default;
|
inherit description default;
|
||||||
example = "#abcdef";
|
example = "#abcdef";
|
||||||
type = types.strMatching "#[0-9a-f]{6}";
|
type = types.strMatching "#[0-9a-f]{6}";
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
themeType = types.submodule {
|
themeType = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
alacrittyTheme = mkOption {
|
alacrittyTheme = mkOption {
|
||||||
|
@ -29,7 +33,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
options.my.themes = mkOption {
|
options.my.themes = mkOption {
|
||||||
type = with types; attrsOf themeType;
|
type = types.attrsOf themeType;
|
||||||
};
|
};
|
||||||
|
|
||||||
config.my.themes = {
|
config.my.themes = {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
mkColorOption = import ./color.nix { inherit lib; };
|
mkColorOption = import ./color.nix { inherit lib; };
|
||||||
|
|
||||||
barColorSetModule = types.submodule {
|
barColorSetModule = types.submodule {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
mkColorOption = import ./color.nix { inherit lib; };
|
mkColorOption = import ./color.nix { inherit lib; };
|
||||||
in
|
in
|
||||||
types.submodule {
|
types.submodule {
|
||||||
|
|
|
@ -1,7 +1,23 @@
|
||||||
let
|
let
|
||||||
colors = import ./colors.nix;
|
inherit (import ./colors.nix)
|
||||||
|
base0
|
||||||
|
base00
|
||||||
|
base01
|
||||||
|
base02
|
||||||
|
base03
|
||||||
|
base1
|
||||||
|
base2
|
||||||
|
base3
|
||||||
|
blue
|
||||||
|
cyan
|
||||||
|
green
|
||||||
|
magenta
|
||||||
|
orange
|
||||||
|
red
|
||||||
|
violet
|
||||||
|
yellow
|
||||||
|
;
|
||||||
in
|
in
|
||||||
with colors;
|
|
||||||
{
|
{
|
||||||
primary = {
|
primary = {
|
||||||
background = base3;
|
background = base3;
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
let
|
let
|
||||||
colors = import ./colors.nix;
|
inherit (import ./colors.nix)
|
||||||
|
base00
|
||||||
|
base2
|
||||||
|
base3
|
||||||
|
blue
|
||||||
|
magenta
|
||||||
|
orange
|
||||||
|
red
|
||||||
|
yellow
|
||||||
|
;
|
||||||
in
|
in
|
||||||
with colors;
|
|
||||||
{
|
{
|
||||||
bar = {
|
bar = {
|
||||||
background = base3;
|
background = base3;
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
let
|
let
|
||||||
colors = import ./colors.nix;
|
inherit (import ./colors.nix)
|
||||||
|
base00
|
||||||
|
base2
|
||||||
|
base3
|
||||||
|
blue
|
||||||
|
green
|
||||||
|
red
|
||||||
|
yellow
|
||||||
|
;
|
||||||
in
|
in
|
||||||
with colors;
|
|
||||||
{
|
{
|
||||||
theme = {
|
theme = {
|
||||||
name = "solarized-light";
|
name = "solarized-light";
|
||||||
|
|
|
@ -1,20 +1,25 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.tmux;
|
cfg = config.my.home.tmux;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.tmux = with lib; {
|
options.my.home.tmux = {
|
||||||
enable = (mkEnableOption "tmux dotfiles") // { default = true; };
|
enable = (mkEnableOption "tmux dotfiles") // { default = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.tmux = {
|
programs.tmux = {
|
||||||
enable = true;
|
enable = true;
|
||||||
baseIndex = 1;
|
baseIndex = 1;
|
||||||
terminal = "screen-256color";
|
terminal = "screen-256color";
|
||||||
clock24 = true;
|
clock24 = true;
|
||||||
|
|
||||||
plugins = with pkgs; [
|
plugins = let inherit (pkgs) tmuxPlugins; in [
|
||||||
{
|
{
|
||||||
plugin = tmuxPlugins.cpu;
|
plugin = tmuxPlugins.cpu;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.tridactyl;
|
cfg = config.my.home.tridactyl;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.tridactyl = with lib; {
|
options.my.home.tridactyl = {
|
||||||
enable = (mkEnableOption "tridactyl code display tool") // { default = config.my.home.firefox.enable; };
|
enable = (mkEnableOption "tridactyl code display tool") // { default = config.my.home.firefox.enable; };
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc;
|
xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.home.x.cursor;
|
cfg = config.my.home.x.cursor;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.x.cursor.enable = (lib.mkEnableOption "X cursor") // { default = config.my.home.x.enable; };
|
options.my.home.x.cursor.enable = (mkEnableOption "X cursor") // { default = config.my.home.x.enable; };
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
xsession.pointerCursor = {
|
xsession.pointerCursor = {
|
||||||
package = pkgs.capitaine-cursors;
|
package = pkgs.capitaine-cursors;
|
||||||
name = "capitaine-cursors";
|
name = "capitaine-cursors";
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./cursor.nix
|
./cursor.nix
|
||||||
|
@ -6,7 +11,7 @@
|
||||||
./i3bar.nix
|
./i3bar.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options.my.home.x = with lib; {
|
options.my.home.x = {
|
||||||
enable = mkEnableOption "X server configuration";
|
enable = mkEnableOption "X server configuration";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
mkOptionDefault
|
||||||
|
;
|
||||||
|
|
||||||
isEnabled = config.my.home.x.enable;
|
isEnabled = config.my.home.x.enable;
|
||||||
|
|
||||||
myTerminal =
|
myTerminal =
|
||||||
|
@ -17,14 +22,12 @@ let
|
||||||
i3Theme = config.my.theme.i3Theme;
|
i3Theme = config.my.theme.i3Theme;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf isEnabled {
|
config = mkIf isEnabled {
|
||||||
my.home = {
|
my.home = {
|
||||||
flameshot.enable = true;
|
flameshot.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = [ pkgs.betterlockscreen ];
|
||||||
betterlockscreen
|
|
||||||
];
|
|
||||||
|
|
||||||
xsession.windowManager.i3 = {
|
xsession.windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -77,7 +80,7 @@ in
|
||||||
size = 8.0;
|
size = 8.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
keybindings = lib.mkOptionDefault {
|
keybindings = mkOptionDefault {
|
||||||
"${modifier}+Shift+e" = ''mode "${logoutMode}"'';
|
"${modifier}+Shift+e" = ''mode "${logoutMode}"'';
|
||||||
"${modifier}+i" = "exec emacsclient -c";
|
"${modifier}+i" = "exec emacsclient -c";
|
||||||
|
|
||||||
|
@ -106,7 +109,7 @@ in
|
||||||
"Return" = "mode default";
|
"Return" = "mode default";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
lib.mkOptionDefault {
|
mkOptionDefault {
|
||||||
"${logoutMode}" = makeModeBindings {
|
"${logoutMode}" = makeModeBindings {
|
||||||
"l" = "exec --no-startup-id i3-msg exit, mode default";
|
"l" = "exec --no-startup-id i3-msg exit, mode default";
|
||||||
"s" = "exec --no-startup-id betterlockscreen --suspend, mode default";
|
"s" = "exec --no-startup-id betterlockscreen --suspend, mode default";
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
lists
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
optional
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
isEnabled = config.my.home.x.enable;
|
isEnabled = config.my.home.x.enable;
|
||||||
i3BarTheme = config.my.theme.i3BarTheme;
|
i3BarTheme = config.my.theme.i3BarTheme;
|
||||||
cfg = config.my.home.x.i3bar;
|
cfg = config.my.home.x.i3bar;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.home.x.i3bar = with lib; {
|
options.my.home.x.i3bar = {
|
||||||
temperature.chip = mkOption {
|
temperature.chip = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "coretemp-isa-*";
|
example = "coretemp-isa-*";
|
||||||
|
@ -24,12 +32,14 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf isEnabled {
|
config = mkIf isEnabled {
|
||||||
home.packages = with pkgs; [
|
home.packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
iw # Used by `net` block
|
iw # Used by `net` block
|
||||||
lm_sensors # Used by `temperature` block
|
lm_sensors # Used by `temperature` block
|
||||||
font-awesome
|
font-awesome
|
||||||
];
|
;
|
||||||
|
};
|
||||||
|
|
||||||
programs.i3status-rust = {
|
programs.i3status-rust = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -79,7 +89,7 @@ in
|
||||||
chip = cfg.temperature.chip;
|
chip = cfg.temperature.chip;
|
||||||
inputs = cfg.temperature.inputs;
|
inputs = cfg.temperature.inputs;
|
||||||
}
|
}
|
||||||
] ++ (lib.lists.optionals ((builtins.length cfg.networking.throughput_interfaces) != 0)
|
] ++ (lists.optionals ((builtins.length cfg.networking.throughput_interfaces) != 0)
|
||||||
(map
|
(map
|
||||||
(interface:
|
(interface:
|
||||||
{
|
{
|
||||||
|
@ -105,11 +115,11 @@ in
|
||||||
block = "sound";
|
block = "sound";
|
||||||
driver = "pulseaudio";
|
driver = "pulseaudio";
|
||||||
}
|
}
|
||||||
] ++ (lib.lists.optionals config.my.home.laptop.enable [
|
] ++ (optional config.my.home.laptop.enable
|
||||||
{
|
{
|
||||||
block = "battery";
|
block = "battery";
|
||||||
}
|
}
|
||||||
]) ++ [
|
) ++ [
|
||||||
# {
|
# {
|
||||||
# block = "notify";
|
# block = "notify";
|
||||||
# }
|
# }
|
||||||
|
|
|
@ -105,9 +105,7 @@ in
|
||||||
"rfkill-release"
|
"rfkill-release"
|
||||||
];
|
];
|
||||||
|
|
||||||
services.udev.packages = with pkgs; [
|
services.udev.packages = [ pkgs.packages.kaleidoscope-udev-rules ];
|
||||||
packages.kaleidoscope-udev-rules
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
|
|
||||||
my.theme = config.home-manager.users.alarsyo.my.themes.solarizedLight;
|
my.theme = config.home-manager.users.alarsyo.my.themes.solarizedLight;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
# some websites only work there :(
|
# some websites only work there :(
|
||||||
chromium
|
chromium
|
||||||
|
|
||||||
|
@ -19,8 +20,9 @@
|
||||||
|
|
||||||
# keyboard goodness
|
# keyboard goodness
|
||||||
chrysalis
|
chrysalis
|
||||||
|
;
|
||||||
|
|
||||||
packages.spot
|
inherit (pkgs.packages) spot;
|
||||||
];
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkDefault
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
@ -32,5 +36,5 @@
|
||||||
[ { device = "/dev/disk/by-uuid/381a9c5e-4d71-45b4-ac62-e7414b3768fc"; }
|
[ { device = "/dev/disk/by-uuid/381a9c5e-4d71-45b4-ac62-e7414b3768fc"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
powerManagement.cpuFreqGovernor = mkDefault "ondemand";
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,9 +56,7 @@ in
|
||||||
};
|
};
|
||||||
my.gui.enable = true;
|
my.gui.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [ pkgs.arandr ];
|
||||||
arandr
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.bluetooth = {
|
hardware.bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkDefault
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
@ -40,7 +44,7 @@
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = mkDefault "powersave";
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,18 +12,20 @@
|
||||||
|
|
||||||
my.theme = config.home-manager.users.alarsyo.my.themes.solarizedLight;
|
my.theme = config.home-manager.users.alarsyo.my.themes.solarizedLight;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = builtins.attrValues {
|
||||||
|
inherit (pkgs)
|
||||||
# some websites only work there :(
|
# some websites only work there :(
|
||||||
chromium
|
chromium
|
||||||
|
|
||||||
wineWowPackages.stable
|
|
||||||
|
|
||||||
darktable
|
darktable
|
||||||
|
|
||||||
# dev
|
# dev
|
||||||
rustup
|
rustup
|
||||||
|
;
|
||||||
|
|
||||||
packages.spot
|
inherit (pkgs.packages) spot;
|
||||||
];
|
|
||||||
|
inherit (pkgs.wineWowPackages) stable;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,31 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.displayManager.sddm;
|
cfg = config.my.displayManager.sddm;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.displayManager.sddm.enable = lib.mkEnableOption "SDDM setup";
|
options.my.displayManager.sddm.enable = mkEnableOption "SDDM setup";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.xserver.displayManager.sddm = {
|
services.xserver.displayManager.sddm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "sugar-candy";
|
theme = "sugar-candy";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = builtins.attrValues {
|
||||||
packages.sddm-sugar-candy
|
inherit (pkgs.packages)
|
||||||
|
sddm-sugar-candy
|
||||||
|
;
|
||||||
|
|
||||||
# dependencies for sugar-candy theme
|
inherit (pkgs.libsForQt5.qt5)
|
||||||
libsForQt5.qt5.qtgraphicaleffects
|
qtgraphicaleffects
|
||||||
libsForQt5.qt5.qtquickcontrols2
|
qtquickcontrols2
|
||||||
libsForQt5.qt5.qtsvg
|
qtsvg
|
||||||
];
|
;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
concatStringsSep
|
||||||
|
literalExample
|
||||||
|
mapAttrs'
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
nameValuePair
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.wakeonwlan;
|
cfg = config.my.wakeonwlan;
|
||||||
|
|
||||||
mkWowlanService = name: cfg:
|
mkWowlanService = name: cfg:
|
||||||
|
@ -20,7 +27,7 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.wakeonwlan = {
|
options.my.wakeonwlan = let inherit (lib) types; in {
|
||||||
interfaces = mkOption {
|
interfaces = mkOption {
|
||||||
default = { };
|
default = { };
|
||||||
description = "Wireless interfaces where you want to enable WoWLAN";
|
description = "Wireless interfaces where you want to enable WoWLAN";
|
||||||
|
|
3
overlays/default.nix
Normal file
3
overlays/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
i3status-rust = import ./i3status-rust;
|
||||||
|
}
|
19
overlays/i3status-rust/default.nix
Normal file
19
overlays/i3status-rust/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
final: prev:
|
||||||
|
{
|
||||||
|
# overlay created because nixpkgs's `i3status-rust` depended on `notmuch`, and
|
||||||
|
# `notmuch`'s tests were briefly broken. the features I'm disabling, I don't
|
||||||
|
# need anyway: (at the time of writing)
|
||||||
|
#
|
||||||
|
# - notmuch
|
||||||
|
# - maildir
|
||||||
|
i3status-rust = prev.i3status-rust.overrideAttrs (oldAttrs: {
|
||||||
|
buildInputs = builtins.attrValues {
|
||||||
|
inherit (final)
|
||||||
|
dbus
|
||||||
|
openssl
|
||||||
|
pulseaudio
|
||||||
|
;
|
||||||
|
};
|
||||||
|
cargoBuildFeatures = [ "pulseaudio" ];
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,5 +1,9 @@
|
||||||
{ stdenv, fetchFromGitHub, lib, ... }:
|
{ stdenv, fetchFromGitHub, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
licenses
|
||||||
|
;
|
||||||
|
|
||||||
version = "0.9.0";
|
version = "0.9.0";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
@ -20,7 +24,7 @@ stdenv.mkDerivation {
|
||||||
cp grafana/dashboard.json $out/dashboard.json
|
cp grafana/dashboard.json $out/dashboard.json
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "grafana dashboard for NGINX exporter";
|
description = "grafana dashboard for NGINX exporter";
|
||||||
homepage = "https://github.com/nginxinc/nginx-prometheus-exporter";
|
homepage = "https://github.com/nginxinc/nginx-prometheus-exporter";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
{ stdenv, fetchFromGitHub, lib, ... }:
|
{ stdenv, fetchFromGitHub, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
licenses
|
||||||
|
;
|
||||||
|
|
||||||
version = "7d61c79619e5749e629758ecd96748c010028120";
|
version = "7d61c79619e5749e629758ecd96748c010028120";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
@ -20,7 +24,7 @@ stdenv.mkDerivation {
|
||||||
cp prometheus/node-exporter-full.json $out/node-exporter-full.json
|
cp prometheus/node-exporter-full.json $out/node-exporter-full.json
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "grafana dashboard for node exporter";
|
description = "grafana dashboard for node exporter";
|
||||||
homepage = "https://github.com/rfrail3/grafana-dashboards";
|
homepage = "https://github.com/rfrail3/grafana-dashboards";
|
||||||
license = licenses.lgpl3Only;
|
license = licenses.lgpl3Only;
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ stdenv, lib, fetchFromGitHub }:
|
{ stdenv, lib, fetchFromGitHub }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
licenses
|
||||||
|
;
|
||||||
|
|
||||||
version = "1.99.3";
|
version = "1.99.3";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
@ -21,7 +25,7 @@ stdenv.mkDerivation {
|
||||||
cp etc/60-kaleidoscope.rules $out/lib/udev/rules.d/
|
cp etc/60-kaleidoscope.rules $out/lib/udev/rules.d/
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = {
|
||||||
description = "udev rules for kaleidoscope firmware keyboards";
|
description = "udev rules for kaleidoscope firmware keyboards";
|
||||||
homepage = "https://github.com/keyboardio/Kaleidoscope";
|
homepage = "https://github.com/keyboardio/Kaleidoscope";
|
||||||
license = licenses.gpl3Only;
|
license = licenses.gpl3Only;
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
fileContents
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
boreal-repo = lib.fileContents ./boreal-repo.secret;
|
boreal-repo = fileContents ./boreal-repo.secret;
|
||||||
poseidon-repo = lib.fileContents ./poseidon-repo.secret;
|
poseidon-repo = fileContents ./poseidon-repo.secret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,24 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
with lib;
|
let
|
||||||
{
|
inherit (lib)
|
||||||
options.my.secrets = mkOption {
|
fileContents
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
in {
|
||||||
|
options.my.secrets = let inherit (lib) types; in mkOption {
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
config.my.secrets = {
|
config.my.secrets = {
|
||||||
matrix-registration-shared-secret = lib.fileContents ./matrix-registration-shared-secret.secret;
|
matrix-registration-shared-secret = fileContents ./matrix-registration-shared-secret.secret;
|
||||||
shadow-hashed-password-alarsyo = lib.fileContents ./shadow-hashed-password-alarsyo.secret;
|
shadow-hashed-password-alarsyo = fileContents ./shadow-hashed-password-alarsyo.secret;
|
||||||
shadow-hashed-password-root = lib.fileContents ./shadow-hashed-password-root.secret;
|
shadow-hashed-password-root = fileContents ./shadow-hashed-password-root.secret;
|
||||||
miniflux-admin-credentials = lib.fileContents ./miniflux-admin-credentials.secret;
|
miniflux-admin-credentials = fileContents ./miniflux-admin-credentials.secret;
|
||||||
transmission-password = lib.fileContents ./transmission.secret;
|
transmission-password = fileContents ./transmission.secret;
|
||||||
nextcloud-admin-pass = ./nextcloud-admin-pass.secret;
|
nextcloud-admin-pass = ./nextcloud-admin-pass.secret;
|
||||||
nextcloud-admin-user = lib.fileContents ./nextcloud-admin-user.secret;
|
nextcloud-admin-user = fileContents ./nextcloud-admin-user.secret;
|
||||||
lohr-shared-secret = lib.fileContents ./lohr-shared-secret.secret;
|
lohr-shared-secret = fileContents ./lohr-shared-secret.secret;
|
||||||
gandiKey = lib.fileContents ./gandi-api-key.secret;
|
gandiKey = fileContents ./gandi-api-key.secret;
|
||||||
|
|
||||||
borg-backup = import ./borg-backup { inherit lib; };
|
borg-backup = import ./borg-backup { inherit lib; };
|
||||||
paperless = import ./paperless { inherit lib; };
|
paperless = import ./paperless { inherit lib; };
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
fileContents
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
secretKey = lib.fileContents ./secret-key-file.secret;
|
secretKey = fileContents ./secret-key-file.secret;
|
||||||
adminPassword = lib.fileContents ./admin-password.secret;
|
adminPassword = fileContents ./admin-password.secret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
fileContents
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
poseidon-repo = lib.fileContents ./poseidon-repo.secret;
|
poseidon-repo = fileContents ./poseidon-repo.secret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
let
|
||||||
|
inherit (lib)
|
||||||
let cfg = config.my.services.borg-backup;
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
cfg = config.my.services.borg-backup;
|
||||||
in {
|
in {
|
||||||
options.my.services.borg-backup = {
|
options.my.services.borg-backup = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Enable Borg backups for this host";
|
enable = mkEnableOption "Enable Borg backups for this host";
|
||||||
|
|
||||||
repo = mkOption {
|
repo = mkOption {
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.fail2ban;
|
cfg = config.my.services.fail2ban;
|
||||||
in {
|
in {
|
||||||
options.my.services.fail2ban = {
|
options.my.services.fail2ban = {
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.fava;
|
cfg = config.my.services.fava;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
secrets = config.my.secrets;
|
secrets = config.my.secrets;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.fava = {
|
options.my.services.fava = let inherit (lib) types; in {
|
||||||
enable = lib.mkEnableOption "Fava";
|
enable = mkEnableOption "Fava";
|
||||||
|
|
||||||
home = mkOption {
|
home = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
@ -43,7 +47,6 @@ in
|
||||||
User = "fava";
|
User = "fava";
|
||||||
Group = "fava";
|
Group = "fava";
|
||||||
};
|
};
|
||||||
path = with pkgs; [];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.fava = {
|
users.users.fava = {
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.gitea;
|
cfg = config.my.services.gitea;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
|
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.gitea = {
|
options.my.services.gitea = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Personal Git hosting with Gitea";
|
enable = mkEnableOption "Personal Git hosting with Gitea";
|
||||||
|
|
||||||
privatePort = mkOption {
|
privatePort = mkOption {
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.jellyfin;
|
cfg = config.my.services.jellyfin;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
|
|
||||||
|
@ -15,7 +18,7 @@ in {
|
||||||
enable = mkEnableOption "Jellyfin";
|
enable = mkEnableOption "Jellyfin";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.jellyfin = {
|
services.jellyfin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "media";
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.lohr;
|
cfg = config.my.services.lohr;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
|
@ -14,8 +18,8 @@ let
|
||||||
flake.defaultPackage."x86_64-linux"; # FIXME: use correct system
|
flake.defaultPackage."x86_64-linux"; # FIXME: use correct system
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.lohr = {
|
options.my.services.lohr = let inherit (lib) types; in {
|
||||||
enable = lib.mkEnableOption "Lohr Mirroring Daemon";
|
enable = mkEnableOption "Lohr Mirroring Daemon";
|
||||||
|
|
||||||
home = mkOption {
|
home = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
@ -49,9 +53,7 @@ in
|
||||||
User = "lohr";
|
User = "lohr";
|
||||||
Group = "lohr";
|
Group = "lohr";
|
||||||
};
|
};
|
||||||
path = with pkgs; [
|
path = [ pkgs.git ];
|
||||||
git
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.lohr = {
|
users.users.lohr = {
|
||||||
|
|
|
@ -9,9 +9,13 @@
|
||||||
#
|
#
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.matrix;
|
cfg = config.my.services.matrix;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
|
|
||||||
|
@ -19,10 +23,10 @@ let
|
||||||
clientPort = { public = 443; private = 11339; };
|
clientPort = { public = 443; private = 11339; };
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.matrix = {
|
options.my.services.matrix = let inherit (lib) types; in {
|
||||||
enable = lib.mkEnableOption "Matrix Synapse";
|
enable = mkEnableOption "Matrix Synapse";
|
||||||
|
|
||||||
registration_shared_secret = lib.mkOption {
|
registration_shared_secret = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "deadbeef";
|
example = "deadbeef";
|
||||||
|
@ -61,7 +65,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
mediaServices = with config.my.services; [
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
|
mediaServices = builtins.attrValues {
|
||||||
|
inherit (config.my.services)
|
||||||
jellyfin
|
jellyfin
|
||||||
transmission
|
transmission
|
||||||
];
|
;
|
||||||
|
};
|
||||||
needed = builtins.any (service: service.enable) mediaServices;
|
needed = builtins.any (service: service.enable) mediaServices;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config.users.groups.media = lib.mkIf needed { };
|
config.users.groups.media = mkIf needed { };
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.miniflux;
|
cfg = config.my.services.miniflux;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
|
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.miniflux = {
|
options.my.services.miniflux = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Serve a Miniflux instance";
|
enable = mkEnableOption "Serve a Miniflux instance";
|
||||||
|
|
||||||
adminCredentialsFile = mkOption {
|
adminCredentialsFile = mkOption {
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.monitoring;
|
cfg = config.my.services.monitoring;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.monitoring = {
|
options.my.services.monitoring = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Enable monitoring";
|
enable = mkEnableOption "Enable monitoring";
|
||||||
|
|
||||||
domain = mkOption {
|
domain = mkOption {
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
optional
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.navidrome;
|
cfg = config.my.services.navidrome;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.navidrome = {
|
options.my.services.navidrome = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Navidrome";
|
enable = mkEnableOption "Navidrome";
|
||||||
musicFolder = {
|
musicFolder = {
|
||||||
path = mkOption {
|
path = mkOption {
|
||||||
|
@ -17,7 +22,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.navidrome = {
|
services.navidrome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
# TODO: setup prometheus exporter
|
# TODO: setup prometheus exporter
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.nextcloud;
|
cfg = config.my.services.nextcloud;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
|
@ -10,10 +15,10 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.nextcloud = {
|
options.my.services.nextcloud = {
|
||||||
enable = lib.mkEnableOption "NextCloud";
|
enable = mkEnableOption "NextCloud";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -73,7 +78,7 @@ in
|
||||||
|
|
||||||
my.services.restic-backup = let
|
my.services.restic-backup = let
|
||||||
nextcloudHome = config.services.nextcloud.home;
|
nextcloudHome = config.services.nextcloud.home;
|
||||||
in lib.mkIf cfg.enable {
|
in mkIf cfg.enable {
|
||||||
paths = [ nextcloudHome ];
|
paths = [ nextcloudHome ];
|
||||||
exclude = [
|
exclude = [
|
||||||
# borg can fail if *.part files disappear during backup
|
# borg can fail if *.part files disappear during backup
|
||||||
|
|
|
@ -2,10 +2,15 @@
|
||||||
#
|
#
|
||||||
# https://github.com/delroth/infra.delroth.net
|
# https://github.com/delroth/infra.delroth.net
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# Whenever something defines an nginx vhost, ensure that nginx defaults are
|
# Whenever something defines an nginx vhost, ensure that nginx defaults are
|
||||||
# properly set.
|
# properly set.
|
||||||
config = lib.mkIf ((builtins.attrNames config.services.nginx.virtualHosts) != [ "localhost" ]) {
|
config = mkIf ((builtins.attrNames config.services.nginx.virtualHosts) != [ "localhost" ]) {
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
statusPage = true; # For monitoring scraping.
|
statusPage = true; # For monitoring scraping.
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.nuage;
|
cfg = config.my.services.nuage;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.nuage = {
|
options.my.services.nuage = {
|
||||||
enable = lib.mkEnableOption "Nuage redirect";
|
enable = mkEnableOption "Nuage redirect";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.paperless;
|
cfg = config.my.services.paperless;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
|
@ -10,8 +14,8 @@ let
|
||||||
secretKeyFile = pkgs.writeText "paperless-secret-key-file.env" my.secrets.paperless.secretKey;
|
secretKeyFile = pkgs.writeText "paperless-secret-key-file.env" my.secrets.paperless.secretKey;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.paperless = {
|
options.my.services.paperless = let inherit (lib) types; in {
|
||||||
enable = lib.mkEnableOption "Paperless";
|
enable = mkEnableOption "Paperless";
|
||||||
|
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
type = types.port;
|
type = types.port;
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{ config, lib, pkgs, options, ... }:
|
{ config, lib, pkgs, options, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
optionalAttrs
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.pipewire;
|
cfg = config.my.services.pipewire;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.pipewire = {
|
options.my.services.pipewire = {
|
||||||
enable = lib.mkEnableOption "Pipewire sound backend";
|
enable = mkEnableOption "Pipewire sound backend";
|
||||||
};
|
};
|
||||||
|
|
||||||
# HACK: services.pipewire.alsa doesn't exist on 20.09, avoid evaluating this
|
# HACK: services.pipewire.alsa doesn't exist on 20.09, avoid evaluating this
|
||||||
|
@ -69,6 +73,6 @@ in
|
||||||
|
|
||||||
# FIXME: a shame pactl isn't available by itself, eventually this should be
|
# FIXME: a shame pactl isn't available by itself, eventually this should be
|
||||||
# replaced by pw-cli or a wrapper, I guess?
|
# replaced by pw-cli or a wrapper, I guess?
|
||||||
environment.systemPackages = with pkgs; [ pulseaudio ];
|
environment.systemPackages = [ pkgs.pulseaudio ];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.postgresql-backup;
|
cfg = config.my.services.postgresql-backup;
|
||||||
in {
|
in {
|
||||||
options.my.services.postgresql-backup = {
|
options.my.services.postgresql-backup = {
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
attrsets
|
||||||
|
concatStringsSep
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
optional
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.restic-backup;
|
cfg = config.my.services.restic-backup;
|
||||||
secrets = config.my.secrets;
|
secrets = config.my.secrets;
|
||||||
excludeArg = with builtins; with pkgs;
|
excludeArg = "--exclude-file=" + (pkgs.writeText "excludes.txt" (concatStringsSep "\n" cfg.exclude));
|
||||||
"--exclude-file=" + (writeText "excludes.txt" (concatStringsSep "\n" cfg.exclude));
|
|
||||||
makePruneOpts = pruneOpts:
|
makePruneOpts = pruneOpts:
|
||||||
attrsets.mapAttrsToList (name: value: "--keep-${name} ${toString value}") pruneOpts;
|
attrsets.mapAttrsToList (name: value: "--keep-${name} ${toString value}") pruneOpts;
|
||||||
in {
|
in {
|
||||||
options.my.services.restic-backup = {
|
options.my.services.restic-backup = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Enable Restic backups for this host";
|
enable = mkEnableOption "Enable Restic backups for this host";
|
||||||
|
|
||||||
repo = mkOption {
|
repo = mkOption {
|
||||||
|
@ -22,7 +28,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
paths = mkOption {
|
paths = mkOption {
|
||||||
type = with types; listOf str;
|
type = types.listOf types.str;
|
||||||
default = [ ];
|
default = [ ];
|
||||||
example = [
|
example = [
|
||||||
"/var/lib"
|
"/var/lib"
|
||||||
|
@ -32,7 +38,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
exclude = mkOption {
|
exclude = mkOption {
|
||||||
type = with types; listOf str;
|
type = types.listOf types.str;
|
||||||
default = [ ];
|
default = [ ];
|
||||||
example = [
|
example = [
|
||||||
# very large paths
|
# very large paths
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.tailscale;
|
cfg = config.my.services.tailscale;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.tailscale = {
|
options.my.services.tailscale = {
|
||||||
enable = lib.mkEnableOption "Tailscale";
|
enable = mkEnableOption "Tailscale";
|
||||||
|
|
||||||
# NOTE: still have to do `tailscale up --advertise-exit-node`
|
# NOTE: still have to do `tailscale up --advertise-exit-node`
|
||||||
exitNode = lib.mkEnableOption "Use as exit node";
|
exitNode = mkEnableOption "Use as exit node";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.tgv;
|
cfg = config.my.services.tgv;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.tgv = {
|
options.my.services.tgv = {
|
||||||
enable = lib.mkEnableOption "TGV redirect";
|
enable = mkEnableOption "TGV redirect";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.transmission;
|
cfg = config.my.services.transmission;
|
||||||
|
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
|
@ -11,7 +17,7 @@ let
|
||||||
downloadBase = "/media/torrents/";
|
downloadBase = "/media/torrents/";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.my.services.transmission = with lib; {
|
options.my.services.transmission = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Transmission torrent client";
|
enable = mkEnableOption "Transmission torrent client";
|
||||||
|
|
||||||
username = mkOption {
|
username = mkOption {
|
||||||
|
@ -28,7 +34,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.transmission = {
|
services.transmission = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "media";
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
;
|
||||||
|
|
||||||
cfg = config.my.services.vaultwarden;
|
cfg = config.my.services.vaultwarden;
|
||||||
my = config.my;
|
my = config.my;
|
||||||
|
|
||||||
domain = config.networking.domain;
|
domain = config.networking.domain;
|
||||||
in {
|
in {
|
||||||
options.my.services.vaultwarden = {
|
options.my.services.vaultwarden = let inherit (lib) types; in {
|
||||||
enable = mkEnableOption "Vaultwarden";
|
enable = mkEnableOption "Vaultwarden";
|
||||||
|
|
||||||
privatePort = mkOption {
|
privatePort = mkOption {
|
||||||
|
|
Loading…
Reference in a new issue