Compare commits
2 commits
be1df0d826
...
3350d19a45
Author | SHA1 | Date | |
---|---|---|---|
♥ Minnie ♥ | 3350d19a45 | ||
♥ Minnie ♥ | 53378cdfc9 |
62
flake.lock
62
flake.lock
|
@ -112,7 +112,7 @@
|
||||||
"devshell_2": {
|
"devshell_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -291,18 +291,18 @@
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"gitignore": "gitignore_2",
|
"gitignore": "gitignore_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": [
|
"nixpkgs-stable": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -346,7 +346,7 @@
|
||||||
"gitignore_2": {
|
"gitignore_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"git-hooks",
|
"git-hooks",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
@ -411,7 +411,7 @@
|
||||||
"home-manager_3": {
|
"home-manager_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -448,7 +448,7 @@
|
||||||
"nix-darwin": {
|
"nix-darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -612,6 +612,26 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"nixvim": "nixvim_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1723012155,
|
||||||
|
"narHash": "sha256-7AlUEGsbIOCQmIRc+lH/k2CJ32pdEkFszyMekTOVoJc=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "e3dc3f07d69bcb0c9df5875aefd7dbf3877be794",
|
||||||
|
"revCount": 14,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.sajenim.dev/jasmine/nvim.nix.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.sajenim.dev/jasmine/nvim.nix.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixvim_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell_2",
|
"devshell": "devshell_2",
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-compat": "flake-compat_3",
|
||||||
|
@ -637,31 +657,11 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixvim-config": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": "nixpkgs_4",
|
|
||||||
"nixvim": "nixvim"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1723012155,
|
|
||||||
"narHash": "sha256-7AlUEGsbIOCQmIRc+lH/k2CJ32pdEkFszyMekTOVoJc=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "e3dc3f07d69bcb0c9df5875aefd7dbf3877be794",
|
|
||||||
"revCount": 14,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.sajenim.dev/jasmine/nvim.nix.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.sajenim.dev/jasmine/nvim.nix.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nuschtosSearch": {
|
"nuschtosSearch": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_4",
|
"flake-utils": "flake-utils_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
@ -718,7 +718,7 @@
|
||||||
"nix-minecraft": "nix-minecraft",
|
"nix-minecraft": "nix-minecraft",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixvim-config": "nixvim-config"
|
"nixvim": "nixvim"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
@ -814,7 +814,7 @@
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim-config",
|
"nixvim",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
147
flake.nix
147
flake.nix
|
@ -28,84 +28,87 @@
|
||||||
|
|
||||||
# Add any other flake you might need.
|
# Add any other flake you might need.
|
||||||
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
||||||
nixvim-config.url = "git+https://git.sajenim.dev/jasmine/nvim.nix.git";
|
nixvim.url = "git+https://git.sajenim.dev/jasmine/nvim.nix.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
outputs = {
|
||||||
let
|
self,
|
||||||
inherit (self) outputs;
|
nixpkgs,
|
||||||
# Supported systems for your flake packages, shell, etc.
|
home-manager,
|
||||||
systems = [
|
...
|
||||||
"aarch64-linux"
|
} @ inputs: let
|
||||||
"i686-linux"
|
inherit (self) outputs;
|
||||||
"x86_64-linux"
|
# Supported systems for your flake packages, shell, etc.
|
||||||
"aarch64-darwin"
|
systems = [
|
||||||
"x86_64-darwin"
|
"aarch64-linux"
|
||||||
];
|
"i686-linux"
|
||||||
# This is a function that generates an attribute by calling a function you
|
"x86_64-linux"
|
||||||
# pass to it, with each system as an argument
|
"aarch64-darwin"
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
"x86_64-darwin"
|
||||||
in
|
];
|
||||||
{
|
# This is a function that generates an attribute by calling a function you
|
||||||
# Your custom packages
|
# pass to it, with each system as an argument
|
||||||
# Acessible through 'nix build', 'nix shell', etc
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
in {
|
||||||
# Formatter for your nix files, available through 'nix fmt'
|
# Your custom packages
|
||||||
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
# Acessible through 'nix build', 'nix shell', etc
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
||||||
|
# Formatter for your nix files, available through 'nix fmt'
|
||||||
|
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
||||||
|
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
||||||
|
|
||||||
# Your custom packages and modifications, exported as overlays
|
# Your custom packages and modifications, exported as overlays
|
||||||
overlays = import ./overlays { inherit inputs; };
|
overlays = import ./overlays {inherit inputs;};
|
||||||
# Reusable nixos modules you might want to export
|
# Reusable nixos modules you might want to export
|
||||||
# These are usually stuff you would upstream into nixpkgs
|
# These are usually stuff you would upstream into nixpkgs
|
||||||
nixosModules = import ./modules/nixos;
|
nixosModules = import ./modules/nixos;
|
||||||
# Reusable home-manager modules you might want to export
|
# Reusable home-manager modules you might want to export
|
||||||
# These are usually stuff you would upstream into home-manager
|
# These are usually stuff you would upstream into home-manager
|
||||||
homeManagerModules = import ./modules/home-manager;
|
homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
# Expose the necessary information in your flake so agenix-rekey
|
# Expose the necessary information in your flake so agenix-rekey
|
||||||
# knows where it has too look for secrets and paths.
|
# knows where it has too look for secrets and paths.
|
||||||
agenix-rekey = inputs.agenix-rekey.configure {
|
agenix-rekey = inputs.agenix-rekey.configure {
|
||||||
userFlake = self;
|
userFlake = self;
|
||||||
nodes = self.nixosConfigurations;
|
nodes = self.nixosConfigurations;
|
||||||
|
};
|
||||||
|
|
||||||
|
# NixOS configuration entrypoint
|
||||||
|
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||||
|
nixosConfigurations = {
|
||||||
|
fuchsia = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [
|
||||||
|
./nixos/fuchsia/configuration.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# NixOS configuration entrypoint
|
viridian = nixpkgs.lib.nixosSystem {
|
||||||
# Available through 'nixos-rebuild --flake .#your-hostname'
|
specialArgs = {inherit inputs outputs;};
|
||||||
nixosConfigurations = {
|
modules = [
|
||||||
fuchsia = nixpkgs.lib.nixosSystem {
|
./nixos/viridian/configuration.nix
|
||||||
specialArgs = { inherit inputs outputs; };
|
];
|
||||||
modules = [
|
|
||||||
./nixos/fuchsia/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
viridian = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = { inherit inputs outputs; };
|
|
||||||
modules = [
|
|
||||||
./nixos/viridian/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Standalone home-manager configuration entrypoint
|
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
|
||||||
homeConfigurations = {
|
|
||||||
"sajenim@fuchsia" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
|
||||||
modules = [
|
|
||||||
./home-manager/sajenim/fuchsia.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"sajenim@viridian" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
|
||||||
modules = [
|
|
||||||
./home-manager/sajenim/viridian.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Standalone home-manager configuration entrypoint
|
||||||
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
|
homeConfigurations = {
|
||||||
|
"sajenim@fuchsia" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [
|
||||||
|
./home-manager/sajenim/fuchsia.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"sajenim@viridian" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
|
modules = [
|
||||||
|
./home-manager/sajenim/viridian.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./git.nix
|
./git.nix
|
||||||
./nvim.nix
|
./nvim.nix
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
lazygit
|
lazygit
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
# Install our nixvim configuration for neovim.
|
# Install our nixvim configuration for neovim.
|
||||||
home.packages = [ inputs.nixvim-config.packages.x86_64-linux.default ];
|
home.packages = [inputs.nixvim.packages.${pkgs.system}.default];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
fzf # command-line fuzzy finder
|
fzf # command-line fuzzy finder
|
||||||
];
|
];
|
||||||
|
@ -24,10 +22,10 @@
|
||||||
|
|
||||||
# Aliases
|
# Aliases
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
c = "clear";
|
c = "clear";
|
||||||
r = "cd ~/.repositories";
|
r = "cd ~/.repositories";
|
||||||
p = "cd ~/.print";
|
p = "cd ~/.print";
|
||||||
d = "cd ~/.repositories/dotfiles.nix";
|
d = "cd ~/.repositories/dotfiles.nix";
|
||||||
la = "ls -a";
|
la = "ls -a";
|
||||||
ll = "ls -l";
|
ll = "ls -l";
|
||||||
tt = "wezterm cli set-tab-title ";
|
tt = "wezterm cli set-tab-title ";
|
||||||
|
@ -66,4 +64,3 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: let
|
||||||
let
|
|
||||||
awesome = pkgs.awesome.overrideAttrs (oa: {
|
awesome = pkgs.awesome.overrideAttrs (oa: {
|
||||||
version = "ad0290bc1aac3ec2391aa14784146a53ebf9d1f0";
|
version = "ad0290bc1aac3ec2391aa14784146a53ebf9d1f0";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
|
@ -9,16 +8,18 @@ let
|
||||||
hash = "sha256-uaskBbnX8NgxrprI4UbPfb5cRqdRsJZv0YXXshfsxFU=";
|
hash = "sha256-uaskBbnX8NgxrprI4UbPfb5cRqdRsJZv0YXXshfsxFU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ];
|
patches = [];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs tests/examples/_postprocess.lua
|
patchShebangs tests/examples/_postprocess.lua
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
awesome = { source = ./config; recursive = true; };
|
awesome = {
|
||||||
|
source = ./config;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xsession.windowManager.awesome = {
|
xsession.windowManager.awesome = {
|
||||||
|
@ -26,4 +27,3 @@ in
|
||||||
package = awesome;
|
package = awesome;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{ inputs, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
./discord
|
./discord
|
||||||
./rofi
|
./rofi
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
discord = prev.discord.override { withOpenASAR = true; };
|
discord = prev.discord.override {withOpenASAR = true;};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# protonmail-bridge requires password manager
|
# protonmail-bridge requires password manager
|
||||||
pass
|
pass
|
||||||
|
@ -115,4 +113,3 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
weechat
|
weechat
|
||||||
];
|
];
|
||||||
|
@ -16,4 +14,3 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.mpd = {
|
services.mpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
musicDirectory = "nfs://viridian.kanto.dev/srv/multimedia/library/music";
|
musicDirectory = "nfs://viridian.kanto.dev/srv/multimedia/library/music";
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.picom = {
|
services.picom = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shadow = true;
|
shadow = true;
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = "Fisa Code 10";
|
font = "Fisa Code 10";
|
||||||
|
@ -16,4 +14,3 @@
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs.unstable; [
|
home.packages = with pkgs.unstable; [
|
||||||
wezterm
|
wezterm
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
wezterm = { source = ./config; recursive = true; };
|
wezterm = {
|
||||||
|
source = ./config;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./mangohud.nix
|
./mangohud.nix
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.mangohud = {
|
programs.mangohud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.mangohud;
|
package = pkgs.mangohud;
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
blender
|
blender
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
./features/desktop
|
./features/desktop
|
||||||
|
@ -51,4 +49,3 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{ inputs, outputs, ... }: {
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.impermanence.nixosModules.home-manager.impermanence
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
../features/cli
|
../features/cli
|
||||||
|
@ -12,7 +16,7 @@
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
allowUnfreePredicate = (_: true);
|
allowUnfreePredicate = _: true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
# These should be stuff you would like to share with others, not your personal configurations.
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
|
||||||
{
|
{
|
||||||
# List your module files here
|
# List your module files here
|
||||||
# my-module = import ./my-module.nix;
|
# my-module = import ./my-module.nix;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
# These should be stuff you would like to share with others, not your personal configurations.
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
|
||||||
{
|
{
|
||||||
# List your module files here
|
# List your module files here
|
||||||
# my-module = import ./my-module.nix;
|
# my-module = import ./my-module.nix;
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
{ config, pkgs, inputs, ... }:
|
|
||||||
let
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hostname = config.networking.hostName;
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.agenix-rekey.nixosModules.default
|
inputs.agenix-rekey.nixosModules.default
|
||||||
|
@ -20,7 +23,7 @@ in
|
||||||
# Pubkey for rekeying
|
# Pubkey for rekeying
|
||||||
hostPubkey = ../../${hostname}/ssh_host_ed25519_key.pub;
|
hostPubkey = ../../${hostname}/ssh_host_ed25519_key.pub;
|
||||||
# Master identity used for decryption
|
# Master identity used for decryption
|
||||||
masterIdentities = [ ../users/sajenim/agenix-rekey.pub ];
|
masterIdentities = [../users/sajenim/agenix-rekey.pub];
|
||||||
# Where we store the rekeyed secrets
|
# Where we store the rekeyed secrets
|
||||||
storageMode = "local";
|
storageMode = "local";
|
||||||
localStorageDir = ./. + "/secrets/rekeyed/${config.networking.hostName}";
|
localStorageDir = ./. + "/secrets/rekeyed/${config.networking.hostName}";
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ outputs, ... }:
|
{outputs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./age.nix
|
./age.nix
|
||||||
./env.nix
|
./env.nix
|
||||||
|
|
|
@ -1,35 +1,33 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
environment = {
|
environment = {
|
||||||
binsh = "${pkgs.bash}/bin/bash";
|
binsh = "${pkgs.bash}/bin/bash";
|
||||||
shells = with pkgs; [ zsh ];
|
shells = with pkgs; [zsh];
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
# Ensure home-manager is on all systems
|
# Ensure home-manager is on all systems
|
||||||
home-manager
|
home-manager
|
||||||
|
|
||||||
# Useful system utilities
|
# Useful system utilities
|
||||||
tree # directory structure
|
tree # directory structure
|
||||||
bc # basic calculator
|
bc # basic calculator
|
||||||
vim # editor
|
vim # editor
|
||||||
ranger # console file manager
|
ranger # console file manager
|
||||||
htop # system monitor
|
htop # system monitor
|
||||||
scrot # screenshot
|
scrot # screenshot
|
||||||
direnv # load environment
|
direnv # load environment
|
||||||
jq # JSON processor
|
jq # JSON processor
|
||||||
git # version control
|
git # version control
|
||||||
nmap # network mapper
|
nmap # network mapper
|
||||||
xclip # clipboard
|
xclip # clipboard
|
||||||
ripgrep # searches the current directory for a regex pattern
|
ripgrep # searches the current directory for a regex pattern
|
||||||
|
|
||||||
# HTTP
|
# HTTP
|
||||||
curl # transfer dato to/from server
|
curl # transfer dato to/from server
|
||||||
wget # download files from web
|
wget # download files from web
|
||||||
|
|
||||||
# Archive
|
# Archive
|
||||||
unrar # extract roshal archive
|
unrar # extract roshal archive
|
||||||
unzip # extract zip archive
|
unzip # extract zip archive
|
||||||
];
|
];
|
||||||
pathsToLink = [ "/share/zsh" ];
|
pathsToLink = ["/share/zsh"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
{ config, inputs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
nix = {
|
nix = {
|
||||||
gc = {
|
gc = {
|
||||||
# Automatically run the garbage collector an a specified time.
|
# Automatically run the garbage collector an a specified time.
|
||||||
|
@ -11,7 +14,7 @@
|
||||||
|
|
||||||
# This will add each flake input as a registry
|
# This will add each flake input as a registry
|
||||||
# To make nix commands consistent with your flake
|
# To make nix commands consistent with your flake
|
||||||
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
|
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
|
||||||
|
|
||||||
# This will additionally add your inputs to the system's legacy channels
|
# This will additionally add your inputs to the system's legacy channels
|
||||||
# Making legacy nix commands consistent as well, awesome!
|
# Making legacy nix commands consistent as well, awesome!
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -8,7 +6,7 @@
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
LogLevel = "VERBOSE";
|
LogLevel = "VERBOSE";
|
||||||
};
|
};
|
||||||
ports = [ 22 ];
|
ports = [22];
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hostname = config.networking.hostName;
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./persist.nix
|
./persist.nix
|
||||||
];
|
];
|
||||||
|
@ -36,26 +38,26 @@ in
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=root" "compress=zstd" ];
|
options = ["subvol=root" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/nix" = {
|
"/nix" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=nix" "compress=zstd" ];
|
options = ["subvol=nix" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"/persist" = {
|
"/persist" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=persist" "compress=zstd" ];
|
options = ["subvol=persist" "compress=zstd"];
|
||||||
neededForBoot = true;
|
neededForBoot = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
"/swap" = {
|
"/swap" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=swap" "compress=zstd" ];
|
options = ["subvol=swap" "compress=zstd"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# Enables files to be encrypted to age identities stored on YubiKeys
|
# Enables files to be encrypted to age identities stored on YubiKeys
|
||||||
age-plugin-yubikey
|
age-plugin-yubikey
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ inputs, ... }:
|
{inputs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,22 +1,26 @@
|
||||||
{ inputs, outputs, pkgs, config, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
users.users.sajenim = {
|
users.users.sajenim = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "audio" "docker" "networkmanager" "wheel" "adbusers" ];
|
extraGroups = ["audio" "docker" "networkmanager" "wheel" "adbusers"];
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
openssh.authorizedKeys.keyFiles = [
|
openssh.authorizedKeys.keyFiles = [
|
||||||
"${inputs.self}/home-manager/sajenim/sajenim_sk.pub"
|
"${inputs.self}/home-manager/sajenim/sajenim_sk.pub"
|
||||||
];
|
];
|
||||||
hashedPassword = "$y$j9T$qIhW5qL9J9w.w6JWa.bGo/$oddG3HJyOZ1mwHzYnYPJ/MzN38oHEBEvPDc0sB3rAf9";
|
hashedPassword = "$y$j9T$qIhW5qL9J9w.w6JWa.bGo/$oddG3HJyOZ1mwHzYnYPJ/MzN38oHEBEvPDc0sB3rAf9";
|
||||||
};
|
};
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
extraSpecialArgs = {inherit inputs outputs;};
|
||||||
users = {
|
users = {
|
||||||
sajenim = import "${inputs.self}/home-manager/sajenim/${config.networking.hostName}.nix";
|
sajenim = import "${inputs.self}/home-manager/sajenim/${config.networking.hostName}.nix";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
{ pkgs, config, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
age.secrets.smb-secrets = {
|
age.secrets.smb-secrets = {
|
||||||
rekeyFile = ./smb-secrets.age;
|
rekeyFile = ./smb-secrets.age;
|
||||||
};
|
};
|
||||||
|
|
||||||
# For mount.cifs, required unless domain name resolution is not needed.
|
# For mount.cifs, required unless domain name resolution is not needed.
|
||||||
environment.systemPackages = [ pkgs.cifs-utils ];
|
environment.systemPackages = [pkgs.cifs-utils];
|
||||||
|
|
||||||
fileSystems."/home/sajenim/.backup" = {
|
fileSystems."/home/sajenim/.backup" = {
|
||||||
device = "//192.168.20.4/sajenim";
|
device = "//192.168.20.4/sajenim";
|
||||||
|
@ -14,12 +16,10 @@
|
||||||
options = let
|
options = let
|
||||||
# this line prevents hanging on network split
|
# this line prevents hanging on network split
|
||||||
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s,user,users";
|
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s,user,users";
|
||||||
|
in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
|
||||||
in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"nixos/smb-secrets".source = config.age.secrets.smb-secrets.path;
|
"nixos/smb-secrets".source = config.age.secrets.smb-secrets.path;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
fileSystems."/home/sajenim/.local/share/Steam" = {
|
fileSystems."/home/sajenim/.local/share/Steam" = {
|
||||||
device = "/dev/disk/by-label/data";
|
device = "/dev/disk/by-label/data";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
{ inputs, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
users.users.spectre = {
|
users.users.spectre = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
hashedPassword = "$y$j9T$eCJ0MDPsx3tww9LP0LU8..$sE8u5keO7QNKNAR1t2R6GqsDzvGD0Xn9Fi3to14Gf9/";
|
hashedPassword = "$y$j9T$eCJ0MDPsx3tww9LP0LU8..$sE8u5keO7QNKNAR1t2R6GqsDzvGD0Xn9Fi3to14Gf9/";
|
||||||
};
|
};
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
../common/global
|
../common/global
|
||||||
|
|
||||||
|
@ -15,18 +13,18 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
/* Boot configuration */
|
# Boot configuration
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
# Enable amdgpu driver sysfs API that allows fine grain control of GPU
|
# Enable amdgpu driver sysfs API that allows fine grain control of GPU
|
||||||
"amdgpu.ppfeaturemask=0xffffffff"
|
"amdgpu.ppfeaturemask=0xffffffff"
|
||||||
];
|
];
|
||||||
kernelModules = [ "i2c-dev" "i2c-piix4" ];
|
kernelModules = ["i2c-dev" "i2c-piix4"];
|
||||||
initrd.kernelModules = [ "amdgpu" ];
|
initrd.kernelModules = ["amdgpu"];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Hardware configuration */
|
# Hardware configuration
|
||||||
hardware = {
|
hardware = {
|
||||||
bluetooth = {
|
bluetooth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -49,7 +47,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Networking configuration */
|
# Networking configuration
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "fuchsia";
|
hostName = "fuchsia";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../common/optional/ephemeral-btrfs.nix
|
../common/optional/ephemeral-btrfs.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
|
||||||
kernelModules = [ "kvm-amd" ];
|
kernelModules = ["kvm-amd"];
|
||||||
};
|
};
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
|
@ -25,8 +27,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{ device = "/swap/swapfile";
|
{
|
||||||
size = 16*1024;
|
device = "/swap/swapfile";
|
||||||
|
size = 16 * 1024;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs = {
|
programs = {
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
# Load and unload environment variables.
|
# Load and unload environment variables.
|
||||||
|
@ -9,4 +7,3 @@
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Our custom power state
|
# Our custom power state
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"default/amdgpu-custom-states.card0" = {
|
"default/amdgpu-custom-states.card0" = {
|
||||||
|
@ -26,6 +24,5 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Install our overclocking script.
|
# Install our overclocking script.
|
||||||
environment.systemPackages = with pkgs; [ amdgpu-clocks ];
|
environment.systemPackages = with pkgs; [amdgpu-clocks];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./amdgpu-clocks.nix
|
./amdgpu-clocks.nix
|
||||||
./flatpak.nix
|
./flatpak.nix
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Required to install flatpak
|
# Required to install flatpak
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config.common.default = [ "gtk" ];
|
config.common.default = ["gtk"];
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
|
extraPortals = [pkgs.xdg-desktop-portal-wlr];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.flatpak.enable = true;
|
services.flatpak.enable = true;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.libinput = {
|
services.libinput = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mouse = { accelProfile = "flat"; };
|
mouse = {accelProfile = "flat";};
|
||||||
};
|
};
|
||||||
|
|
||||||
# DBus daemon to configure input devices.
|
# DBus daemon to configure input devices.
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Get up and running with large language models locally.
|
# Get up and running with large language models locally.
|
||||||
services.ollama = {
|
services.ollama = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Enable necessary udev rules.
|
# Enable necessary udev rules.
|
||||||
services.udev.packages = with pkgs; [
|
services.udev.packages = with pkgs; [
|
||||||
openrgb
|
openrgb
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Setup our display server
|
# Setup our display server
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xkb.layout = "au";
|
xkb.layout = "au";
|
||||||
videoDrivers = [ "amdgpu" ];
|
videoDrivers = ["amdgpu"];
|
||||||
displayManager.startx.enable = true;
|
displayManager.startx.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
../common/global
|
../common/global
|
||||||
../common/users/sajenim
|
../common/users/sajenim
|
||||||
|
@ -33,24 +31,24 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
allowPing = true;
|
allowPing = true;
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
53 # adguardhome (DNS)
|
53 # adguardhome (DNS)
|
||||||
80 # traefik (HTTP)
|
80 # traefik (HTTP)
|
||||||
443 # traefik (HTTPS)
|
443 # traefik (HTTPS)
|
||||||
32372 # qbittorrent
|
32372 # qbittorrent
|
||||||
6600 # mpd
|
6600 # mpd
|
||||||
];
|
];
|
||||||
allowedUDPPorts = [
|
allowedUDPPorts = [
|
||||||
53 # adguardhome (DNS)
|
53 # adguardhome (DNS)
|
||||||
80 # traefik (HTTP)
|
80 # traefik (HTTP)
|
||||||
443 # traefik (HTTPS)
|
443 # traefik (HTTPS)
|
||||||
32372 # qbittorrent
|
32372 # qbittorrent
|
||||||
51820 # Wireguard
|
51820 # Wireguard
|
||||||
6600 # mpd
|
6600 # mpd
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,4 +63,3 @@
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./jellyseerr.nix
|
./jellyseerr.nix
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "8096";
|
port = "8096";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Volunteer-built media solution that puts you in control of your media
|
# Volunteer-built media solution that puts you in control of your media
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
|
@ -35,7 +33,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.routers = {
|
services.traefik.dynamicConfigOptions.http.routers = {
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
rule = "Host(`jellyfin.kanto.dev`)";
|
rule = "Host(`jellyfin.kanto.dev`)";
|
||||||
entryPoints = [
|
entryPoints = [
|
||||||
"websecure"
|
"websecure"
|
||||||
];
|
];
|
||||||
|
@ -48,8 +46,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
jellyfin.loadBalancer.servers = [
|
jellyfin.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "5055";
|
port = "5055";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Request management
|
# Request management
|
||||||
jellyseerr = {
|
jellyseerr = {
|
||||||
|
@ -39,8 +37,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
jellyseerr.loadBalancer.servers = [
|
jellyseerr.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "8686";
|
port = "8686";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# # Music collection manager for Usenet and BitTorrent users
|
# # Music collection manager for Usenet and BitTorrent users
|
||||||
lidarr = {
|
lidarr = {
|
||||||
|
@ -42,8 +40,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
lidarr.loadBalancer.servers = [
|
lidarr.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "9925";
|
port = "9925";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
mealie = {
|
mealie = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
|
@ -29,7 +27,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.routers = {
|
services.traefik.dynamicConfigOptions.http.routers = {
|
||||||
mealie = {
|
mealie = {
|
||||||
rule = "Host(`mealie.kanto.dev`)";
|
rule = "Host(`mealie.kanto.dev`)";
|
||||||
entryPoints = [
|
entryPoints = [
|
||||||
"websecure"
|
"websecure"
|
||||||
];
|
];
|
||||||
|
@ -43,9 +41,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
mealie.loadBalancer.servers = [
|
mealie.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
{ config, ... }:
|
{config, ...}: let
|
||||||
let
|
|
||||||
port = "8181";
|
port = "8181";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
age.secrets.microbin = {
|
age.secrets.microbin = {
|
||||||
# Environment variables for microbin
|
# Environment variables for microbin
|
||||||
rekeyFile = ./environment.age;
|
rekeyFile = ./environment.age;
|
||||||
owner = "sajenim";
|
owner = "sajenim";
|
||||||
group = "users";
|
group = "users";
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
|
@ -43,8 +41,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
microbin.loadBalancer.servers = [
|
microbin.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "9696";
|
port = "9696";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps.
|
# Indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps.
|
||||||
prowlarr = {
|
prowlarr = {
|
||||||
|
@ -39,8 +37,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
prowlarr.loadBalancer.servers = [
|
prowlarr.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "8487";
|
port = "8487";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# # Open-source software alternative to µTorrent
|
# # Open-source software alternative to µTorrent
|
||||||
qbittorrent = {
|
qbittorrent = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
image = "ghcr.io/hotio/qbittorrent:release-4.6.5";
|
image = "ghcr.io/hotio/qbittorrent:release-4.6.5";
|
||||||
ports = [
|
ports = [
|
||||||
"${port}:8080/tcp" # WebUI
|
"${port}:8080/tcp" # WebUI
|
||||||
"32372:32372/tcp" # Transport protocol
|
"32372:32372/tcp" # Transport protocol
|
||||||
];
|
];
|
||||||
volumes = [
|
volumes = [
|
||||||
# Seedbox
|
# Seedbox
|
||||||
|
@ -42,8 +40,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
qbittorrent.loadBalancer.servers = [
|
qbittorrent.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "7878";
|
port = "7878";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Movie collection manager for Usenet and BitTorrent users
|
# Movie collection manager for Usenet and BitTorrent users
|
||||||
radarr = {
|
radarr = {
|
||||||
|
@ -41,8 +39,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
radarr.loadBalancer.servers = [
|
radarr.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Automatically synchronize recommended settings from the TRaSH guides to your Sonarr/Radarr instances
|
# Automatically synchronize recommended settings from the TRaSH guides to your Sonarr/Radarr instances
|
||||||
recyclarr = {
|
recyclarr = {
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ ... }:
|
{...}: let
|
||||||
let
|
|
||||||
port = "8989";
|
port = "8989";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# PVR for Usenet and BitTorrent users
|
# PVR for Usenet and BitTorrent users
|
||||||
sonarr = {
|
sonarr = {
|
||||||
|
@ -42,8 +40,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
sonarr.loadBalancer.servers = [
|
sonarr.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${port}"; }
|
{url = "http://127.0.0.1:${port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
let
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hostname = config.networking.hostName;
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
../common/optional/ephemeral-btrfs.nix
|
../common/optional/ephemeral-btrfs.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
||||||
kernelModules = [ "kvm-intel" ];
|
kernelModules = ["kvm-intel"];
|
||||||
};
|
};
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
|
@ -34,30 +36,31 @@ in
|
||||||
fileSystems."/srv/containers" = {
|
fileSystems."/srv/containers" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=containers" "compress=zstd" ];
|
options = ["subvol=containers" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/srv/services" = {
|
fileSystems."/srv/services" = {
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
device = "/dev/disk/by-label/${hostname}";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=services" "compress=zstd" ];
|
options = ["subvol=services" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/srv/shares" = {
|
fileSystems."/srv/shares" = {
|
||||||
device = "/dev/disk/by-label/data";
|
device = "/dev/disk/by-label/data";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=shares" "compress=zstd" ];
|
options = ["subvol=shares" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/srv/backup" = {
|
fileSystems."/srv/backup" = {
|
||||||
device = "/dev/disk/by-label/data";
|
device = "/dev/disk/by-label/data";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = [ "subvol=backup" "compress=zstd" ];
|
options = ["subvol=backup" "compress=zstd"];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{ device = "/swap/swapfile";
|
{
|
||||||
size = 16*1024;
|
device = "/swap/swapfile";
|
||||||
|
size = 16 * 1024;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.borgbackup.jobs = {
|
services.borgbackup.jobs = {
|
||||||
containers = {
|
containers = {
|
||||||
paths = [
|
paths = [
|
||||||
|
@ -33,4 +31,3 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
{ config, inputs, pkgs, ... }:
|
|
||||||
let
|
|
||||||
port = "8080";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
port = "8080";
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.crowdsec.nixosModules.crowdsec
|
inputs.crowdsec.nixosModules.crowdsec
|
||||||
inputs.crowdsec.nixosModules.crowdsec-firewall-bouncer
|
inputs.crowdsec.nixosModules.crowdsec-firewall-bouncer
|
||||||
|
@ -86,9 +89,12 @@ in
|
||||||
|
|
||||||
environment.persistence."/persist" = {
|
environment.persistence."/persist" = {
|
||||||
directories = [
|
directories = [
|
||||||
{ directory = "/var/lib/crowdsec"; user = "crowdsec"; group = "crowdsec"; }
|
{
|
||||||
|
directory = "/var/lib/crowdsec";
|
||||||
|
user = "crowdsec";
|
||||||
|
group = "crowdsec";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./traefik
|
./traefik
|
||||||
./crowdsec
|
./crowdsec
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.forgejo = {
|
services.forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
stateDir = "/srv/services/forgejo";
|
stateDir = "/srv/services/forgejo";
|
||||||
|
@ -34,8 +32,7 @@
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
forgejo.loadBalancer.servers = [
|
forgejo.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}"; }
|
{url = "http://127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Setup grafana our grafana instance.
|
# Setup grafana our grafana instance.
|
||||||
services.grafana = {
|
services.grafana = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -24,13 +22,15 @@
|
||||||
|
|
||||||
# Setup our database for grafana.
|
# Setup our database for grafana.
|
||||||
services.mysql = {
|
services.mysql = {
|
||||||
ensureUsers = [{
|
ensureUsers = [
|
||||||
name = "grafana";
|
{
|
||||||
ensurePermissions = {
|
name = "grafana";
|
||||||
"grafana.*" = "ALL PRIVILEGES";
|
ensurePermissions = {
|
||||||
};
|
"grafana.*" = "ALL PRIVILEGES";
|
||||||
}];
|
};
|
||||||
ensureDatabases = [ "grafana" ];
|
}
|
||||||
|
];
|
||||||
|
ensureDatabases = ["grafana"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Setup our traefik router.
|
# Setup our traefik router.
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
# Setup our traefik service.
|
# Setup our traefik service.
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
grafana.loadBalancer.servers = [
|
grafana.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${toString config.services.grafana.settings.server.http_port}"; }
|
{url = "http://127.0.0.1:${toString config.services.grafana.settings.server.http_port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.lighttpd = {
|
services.lighttpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 5624;
|
port = 5624;
|
||||||
|
@ -23,8 +21,7 @@
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
lighttpd.loadBalancer.servers = [
|
lighttpd.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${toString config.services.lighttpd.port}"; }
|
{url = "http://127.0.0.1:${toString config.services.lighttpd.port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{ inputs, pkgs, lib, config, ... }:
|
{
|
||||||
let
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
modpack = pkgs.fetchPackwizModpack rec {
|
modpack = pkgs.fetchPackwizModpack rec {
|
||||||
version = "7091175a49";
|
version = "7091175a49";
|
||||||
url = "https://git.sajenim.dev/jasmine/minecraft-modpack/raw/commit/${version}/pack.toml";
|
url = "https://git.sajenim.dev/jasmine/minecraft-modpack/raw/commit/${version}/pack.toml";
|
||||||
|
@ -7,9 +12,8 @@ let
|
||||||
};
|
};
|
||||||
mcVersion = modpack.manifest.versions.minecraft;
|
mcVersion = modpack.manifest.versions.minecraft;
|
||||||
fabricVersion = modpack.manifest.versions.fabric;
|
fabricVersion = modpack.manifest.versions.fabric;
|
||||||
serverVersion = lib.replaceStrings [ "." ] [ "_" ] "fabric-${mcVersion}";
|
serverVersion = lib.replaceStrings ["."] ["_"] "fabric-${mcVersion}";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||||
];
|
];
|
||||||
|
@ -27,7 +31,7 @@ in
|
||||||
kanto = {
|
kanto = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# The minecraft server package to use.
|
# The minecraft server package to use.
|
||||||
package = pkgs.fabricServers.${serverVersion}.override { loaderVersion = fabricVersion; }; # Specific fabric loader version.
|
package = pkgs.fabricServers.${serverVersion}.override {loaderVersion = fabricVersion;}; # Specific fabric loader version.
|
||||||
|
|
||||||
# Allowed players
|
# Allowed players
|
||||||
whitelist = {
|
whitelist = {
|
||||||
|
@ -49,7 +53,7 @@ in
|
||||||
|
|
||||||
# Things to symlink into this server's data directory.
|
# Things to symlink into this server's data directory.
|
||||||
symlinks = {
|
symlinks = {
|
||||||
"mods" = "${modpack}/mods";
|
"mods" = "${modpack}/mods";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Things to copy into this server's data directory.
|
# Things to copy into this server's data directory.
|
||||||
|
@ -90,8 +94,7 @@ in
|
||||||
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
minecraft.loadBalancer.servers = [
|
minecraft.loadBalancer.servers = [
|
||||||
{ url = "http://127.0.0.1:${toString config.services.minecraft-servers.servers.kanto.serverProperties.server-port}"; }
|
{url = "http://127.0.0.1:${toString config.services.minecraft-servers.servers.kanto.serverProperties.server-port}";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.mpd = {
|
services.mpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
musicDirectory = "/srv/multimedia/library/music";
|
musicDirectory = "/srv/multimedia/library/music";
|
||||||
|
@ -28,7 +26,7 @@
|
||||||
};
|
};
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
# # for NFSv3; view with `rpcinfo -p`
|
# # for NFSv3; view with `rpcinfo -p`
|
||||||
allowedTCPPorts = [ 111 2049 4000 4001 4002 20048 ];
|
allowedTCPPorts = [111 2049 4000 4001 4002 20048];
|
||||||
allowedUDPPorts = [ 111 2049 4000 4001 4002 20048 ];
|
allowedUDPPorts = [111 2049 4000 4001 4002 20048];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.mysql = {
|
services.mysql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.mariadb;
|
package = pkgs.mariadb;
|
||||||
dataDir = "/srv/services/mysql";
|
dataDir = "/srv/services/mysql";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.prometheus = {
|
services.prometheus = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 9001; # Port to listen on.
|
port = 9001; # Port to listen on.
|
||||||
|
|
||||||
# Valid in all configuration contexts, defaults for other configuration sections.
|
# Valid in all configuration contexts, defaults for other configuration sections.
|
||||||
globalConfig = {
|
globalConfig = {
|
||||||
|
@ -14,7 +12,7 @@
|
||||||
exporters = {
|
exporters = {
|
||||||
node = {
|
node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enabledCollectors = [ "systemd" "processes" ];
|
enabledCollectors = ["systemd" "processes"];
|
||||||
port = 9100;
|
port = 9100;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -23,11 +21,12 @@
|
||||||
scrapeConfigs = [
|
scrapeConfigs = [
|
||||||
{
|
{
|
||||||
job_name = "node";
|
job_name = "node";
|
||||||
static_configs = [{
|
static_configs = [
|
||||||
targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" ];
|
{
|
||||||
}];
|
targets = ["127.0.0.1:${toString config.services.prometheus.exporters.node.port}"];
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.samba = {
|
services.samba = {
|
||||||
enable = true;
|
enable = true;
|
||||||
securityType = "user";
|
securityType = "user";
|
||||||
|
@ -47,5 +45,5 @@
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.persistence."/persist".directories = [ "/var/lib/samba" ];
|
environment.persistence."/persist".directories = ["/var/lib/samba"];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
{ inputs, config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
disabledModules = [ "services/web-servers/traefik.nix" ];
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
disabledModules = ["services/web-servers/traefik.nix"];
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
"${inputs.nixpkgs-unstable}/nixos/modules/services/web-servers/traefik.nix"
|
"${inputs.nixpkgs-unstable}/nixos/modules/services/web-servers/traefik.nix"
|
||||||
|
@ -86,12 +89,14 @@
|
||||||
# List of domains in our network
|
# List of domains in our network
|
||||||
domains = [
|
domains = [
|
||||||
# Internal services
|
# Internal services
|
||||||
{ main = "kanto.dev";
|
{
|
||||||
sans = [ "*.kanto.dev" ];
|
main = "kanto.dev";
|
||||||
|
sans = ["*.kanto.dev"];
|
||||||
}
|
}
|
||||||
# Public services
|
# Public services
|
||||||
{ main = "sajenim.dev";
|
{
|
||||||
sans = [ "*.sajenim.dev" ];
|
main = "sajenim.dev";
|
||||||
|
sans = ["*.sajenim.dev"];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -106,7 +111,7 @@
|
||||||
metrics = {
|
metrics = {
|
||||||
prometheus = {
|
prometheus = {
|
||||||
entryPoint = "metrics";
|
entryPoint = "metrics";
|
||||||
buckets = [ "0.1" "0.3" "1.2" "5.0" ];
|
buckets = ["0.1" "0.3" "1.2" "5.0"];
|
||||||
addEntryPointsLabels = true;
|
addEntryPointsLabels = true;
|
||||||
addRoutersLabels = true;
|
addRoutersLabels = true;
|
||||||
addServicesLabels = true;
|
addServicesLabels = true;
|
||||||
|
@ -144,20 +149,33 @@
|
||||||
services.prometheus.scrapeConfigs = [
|
services.prometheus.scrapeConfigs = [
|
||||||
{
|
{
|
||||||
job_name = "traefik";
|
job_name = "traefik";
|
||||||
static_configs = [{
|
static_configs = [
|
||||||
targets = [ "127.0.0.1:8082" ];
|
{
|
||||||
}];
|
targets = ["127.0.0.1:8082"];
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Persist our traefik data & logs
|
# Persist our traefik data & logs
|
||||||
environment.persistence."/persist" = {
|
environment.persistence."/persist" = {
|
||||||
directories = [
|
directories = [
|
||||||
{ directory = "/var/lib/traefik"; user = "traefik"; group = "traefik"; }
|
{
|
||||||
{ directory = "/var/log/traefik"; user = "traefik"; group = "traefik"; }
|
directory = "/var/lib/traefik";
|
||||||
{ directory = "/plugins-storage"; user = "traefik"; group = "traefik"; }
|
user = "traefik";
|
||||||
|
group = "traefik";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
directory = "/var/log/traefik";
|
||||||
|
user = "traefik";
|
||||||
|
group = "traefik";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
directory = "/plugins-storage";
|
||||||
|
user = "traefik";
|
||||||
|
group = "traefik";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ config, ... }:
|
{config, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# Crowdsec Local API key for the bouncer.
|
# Crowdsec Local API key for the bouncer.
|
||||||
age.secrets.traefik-bouncer-key = {
|
age.secrets.traefik-bouncer-key = {
|
||||||
rekeyFile = ../crowdsec/traefik-bouncer-key.age;
|
rekeyFile = ../crowdsec/traefik-bouncer-key.age;
|
||||||
|
@ -12,7 +10,7 @@
|
||||||
services.traefik.dynamicConfigOptions.http.middlewares = {
|
services.traefik.dynamicConfigOptions.http.middlewares = {
|
||||||
# Restrict access to internal networks
|
# Restrict access to internal networks
|
||||||
internal.ipwhitelist.sourcerange = [
|
internal.ipwhitelist.sourcerange = [
|
||||||
"127.0.0.1/32" # localhost
|
"127.0.0.1/32" # localhost
|
||||||
"192.168.20.1/24" # lan
|
"192.168.20.1/24" # lan
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -57,4 +55,3 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.traefik.dynamicConfigOptions.http.routers = {
|
services.traefik.dynamicConfigOptions.http.routers = {
|
||||||
traefik-dashboard = {
|
traefik-dashboard = {
|
||||||
rule = "Host(`traefik.kanto.dev`)";
|
rule = "Host(`traefik.kanto.dev`)";
|
||||||
|
@ -25,4 +23,3 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
{ ... }:
|
{...}: {
|
||||||
|
|
||||||
{
|
|
||||||
services.traefik.dynamicConfigOptions.http.services = {
|
services.traefik.dynamicConfigOptions.http.services = {
|
||||||
ender1.loadBalancer.servers = [
|
ender1.loadBalancer.servers = [
|
||||||
{ url = "http://192.168.1.103:80"; }
|
{url = "http://192.168.1.103:80";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
# This file defines overlays
|
# This file defines overlays
|
||||||
{ inputs, ... }:
|
{inputs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
# This one brings our custom packages from the 'pkgs' directory
|
# This one brings our custom packages from the 'pkgs' directory
|
||||||
additions = final: _prev: import ../pkgs final.pkgs;
|
additions = final: _prev: import ../pkgs final.pkgs;
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
{ stdenv
|
{
|
||||||
, lib
|
stdenv,
|
||||||
, fetchFromGitHub
|
lib,
|
||||||
, bash
|
fetchFromGitHub,
|
||||||
, subversion
|
bash,
|
||||||
, makeWrapper
|
subversion,
|
||||||
|
makeWrapper,
|
||||||
}:
|
}:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "amdgpu-clocks";
|
pname = "amdgpu-clocks";
|
||||||
version = "973139a";
|
version = "973139a";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
# https://github.com/sibradzic/amdgpu-clocks
|
# https://github.com/sibradzic/amdgpu-clocks
|
||||||
owner = "sibradzic";
|
owner = "sibradzic";
|
||||||
repo = "amdgpu-clocks";
|
repo = "amdgpu-clocks";
|
||||||
rev = "973139a5933bd315aa99332b642305ef5ef49a32";
|
rev = "973139a5933bd315aa99332b642305ef5ef49a32";
|
||||||
sha256 = "sha256-mZV4ECNG9X6SDIWl6P0nHrxa4kGU1h/hFdMcswbEYrk=";
|
sha256 = "sha256-mZV4ECNG9X6SDIWl6P0nHrxa4kGU1h/hFdMcswbEYrk=";
|
||||||
};
|
};
|
||||||
buildInputs = [ bash subversion ];
|
buildInputs = [bash subversion];
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [makeWrapper];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp amdgpu-clocks $out/bin/amdgpu-clocks
|
cp amdgpu-clocks $out/bin/amdgpu-clocks
|
||||||
wrapProgram $out/bin/amdgpu-clocks \
|
wrapProgram $out/bin/amdgpu-clocks \
|
||||||
--prefix PATH : ${lib.makeBinPath [ bash subversion ]}
|
--prefix PATH : ${lib.makeBinPath [bash subversion]}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
# Custom packages, that can be defined similarly to ones from nixpkgs
|
# Custom packages, that can be defined similarly to ones from nixpkgs
|
||||||
# You can build them using 'nix build .#example'
|
# You can build them using 'nix build .#example'
|
||||||
|
|
||||||
pkgs: {
|
pkgs: {
|
||||||
xmobar = pkgs.callPackage ./xmobar-config { };
|
xmobar = pkgs.callPackage ./xmobar-config {};
|
||||||
xmonad = pkgs.callPackage ./xmonad-config { };
|
xmonad = pkgs.callPackage ./xmonad-config {};
|
||||||
amdgpu-clocks = pkgs.callPackage ./amdgpu-clocks { };
|
amdgpu-clocks = pkgs.callPackage ./amdgpu-clocks {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{ pkgs }:
|
{pkgs}:
|
||||||
|
|
||||||
pkgs.haskellPackages.developPackage {
|
pkgs.haskellPackages.developPackage {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{pkgs ? import <nixpkgs> {}}:
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
nativeBuildInputs = with pkgs.buildPackages; [ cabal-install ghc ];
|
nativeBuildInputs = with pkgs.buildPackages; [cabal-install ghc];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
{ pkgs }:
|
{pkgs}:
|
||||||
|
|
||||||
pkgs.haskellPackages.developPackage {
|
pkgs.haskellPackages.developPackage {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
source-overrides = {
|
source-overrides = {
|
||||||
xmonad = (builtins.fetchTarball {
|
xmonad = builtins.fetchTarball {
|
||||||
url = "https://github.com/xmonad/xmonad/archive/refs/tags/v0.18.0.tar.gz";
|
url = "https://github.com/xmonad/xmonad/archive/refs/tags/v0.18.0.tar.gz";
|
||||||
sha256 = "0jlc60n5jarcxgjxm1vcsgc3s2lwmn3c3n56hialhzx54wfskkbc";
|
sha256 = "0jlc60n5jarcxgjxm1vcsgc3s2lwmn3c3n56hialhzx54wfskkbc";
|
||||||
});
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{pkgs ? import <nixpkgs> {}}:
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
nativeBuildInputs = with pkgs.buildPackages; [ cabal-install ghc ];
|
nativeBuildInputs = with pkgs.buildPackages; [cabal-install ghc];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue