Compare commits
No commits in common. "3350d19a45ba0b6da2daa3966b72bc33fc1ea15d" and "be1df0d8267c9fb22ae68609b0ecc01d261a91ca" have entirely different histories.
3350d19a45
...
be1df0d826
80 changed files with 543 additions and 464 deletions
62
flake.lock
generated
62
flake.lock
generated
|
|
@ -112,7 +112,7 @@
|
||||||
"devshell_2": {
|
"devshell_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
@ -198,7 +198,7 @@
|
||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
@ -291,18 +291,18 @@
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"gitignore": "gitignore_2",
|
"gitignore": "gitignore_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": [
|
"nixpkgs-stable": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
@ -346,7 +346,7 @@
|
||||||
"gitignore_2": {
|
"gitignore_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"git-hooks",
|
"git-hooks",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
|
@ -411,7 +411,7 @@
|
||||||
"home-manager_3": {
|
"home-manager_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
@ -448,7 +448,7 @@
|
||||||
"nix-darwin": {
|
"nix-darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
@ -612,26 +612,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
|
|
@ -657,11 +637,31 @@
|
||||||
"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",
|
"nixvim-config",
|
||||||
"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": "nixvim"
|
"nixvim-config": "nixvim-config"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
|
@ -814,7 +814,7 @@
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim-config",
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
|
|
|
||||||
147
flake.nix
147
flake.nix
|
|
@ -28,87 +28,84 @@
|
||||||
|
|
||||||
# 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.url = "git+https://git.sajenim.dev/jasmine/nvim.nix.git";
|
nixvim-config.url = "git+https://git.sajenim.dev/jasmine/nvim.nix.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||||
self,
|
let
|
||||||
nixpkgs,
|
inherit (self) outputs;
|
||||||
home-manager,
|
# Supported systems for your flake packages, shell, etc.
|
||||||
...
|
systems = [
|
||||||
} @ inputs: let
|
"aarch64-linux"
|
||||||
inherit (self) outputs;
|
"i686-linux"
|
||||||
# Supported systems for your flake packages, shell, etc.
|
"x86_64-linux"
|
||||||
systems = [
|
"aarch64-darwin"
|
||||||
"aarch64-linux"
|
"x86_64-darwin"
|
||||||
"i686-linux"
|
];
|
||||||
"x86_64-linux"
|
# This is a function that generates an attribute by calling a function you
|
||||||
"aarch64-darwin"
|
# pass to it, with each system as an argument
|
||||||
"x86_64-darwin"
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
];
|
in
|
||||||
# This is a function that generates an attribute by calling a function you
|
{
|
||||||
# pass to it, with each system as an argument
|
# Your custom packages
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
# Acessible through 'nix build', 'nix shell', etc
|
||||||
in {
|
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
||||||
# Your custom packages
|
# Formatter for your nix files, available through 'nix fmt'
|
||||||
# Acessible through 'nix build', 'nix shell', etc
|
# Other options beside 'alejandra' include 'nixpkgs-fmt'
|
||||||
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
||||||
# 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
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
viridian = nixpkgs.lib.nixosSystem {
|
# NixOS configuration entrypoint
|
||||||
specialArgs = {inherit inputs outputs;};
|
# Available through 'nixos-rebuild --flake .#your-hostname'
|
||||||
modules = [
|
nixosConfigurations = {
|
||||||
./nixos/viridian/configuration.nix
|
fuchsia = nixpkgs.lib.nixosSystem {
|
||||||
];
|
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,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./git.nix
|
./git.nix
|
||||||
./nvim.nix
|
./nvim.nix
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
lazygit
|
lazygit
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Install our nixvim configuration for neovim.
|
# Install our nixvim configuration for neovim.
|
||||||
home.packages = [inputs.nixvim.packages.${pkgs.system}.default];
|
home.packages = [ inputs.nixvim-config.packages.x86_64-linux.default ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
fzf # command-line fuzzy finder
|
fzf # command-line fuzzy finder
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# Enable extra features
|
# Enable extra features
|
||||||
autosuggestion = {
|
autosuggestion = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -15,17 +17,17 @@
|
||||||
};
|
};
|
||||||
enableCompletion = true;
|
enableCompletion = true;
|
||||||
dotDir = ".config/zsh";
|
dotDir = ".config/zsh";
|
||||||
|
|
||||||
# Commands that should be added to to top of '.zshrc'
|
# Commands that should be added to to top of '.zshrc'
|
||||||
initExtraFirst = ''
|
initExtraFirst = ''
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# 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 ";
|
||||||
|
|
@ -38,7 +40,7 @@
|
||||||
crkbd = "$HOME/.github/qmk_keymaps/keyboards/crkbd/keymaps/sajenim";
|
crkbd = "$HOME/.github/qmk_keymaps/keyboards/crkbd/keymaps/sajenim";
|
||||||
kchrn = "$HOME/.github/qmk_keymaps/keyboards/keychron/q4/ansi_v2/keymaps/sajenim";
|
kchrn = "$HOME/.github/qmk_keymaps/keyboards/keychron/q4/ansi_v2/keymaps/sajenim";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Install plugins
|
# Install plugins
|
||||||
plugins = [
|
plugins = [
|
||||||
{
|
{
|
||||||
|
|
@ -51,7 +53,7 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Extra commands that should be added to '.zshrc'
|
# Extra commands that should be added to '.zshrc'
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
eval "$(direnv hook zsh)"
|
eval "$(direnv hook zsh)"
|
||||||
|
|
@ -64,3 +66,4 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
awesome = pkgs.awesome.overrideAttrs (oa: {
|
awesome = pkgs.awesome.overrideAttrs (oa: {
|
||||||
version = "ad0290bc1aac3ec2391aa14784146a53ebf9d1f0";
|
version = "ad0290bc1aac3ec2391aa14784146a53ebf9d1f0";
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
|
|
@ -8,18 +9,16 @@
|
||||||
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 = {
|
awesome = { source = ./config; recursive = true; };
|
||||||
source = ./config;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xsession.windowManager.awesome = {
|
xsession.windowManager.awesome = {
|
||||||
|
|
@ -27,3 +26,4 @@ in {
|
||||||
package = awesome;
|
package = awesome;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
|
{ inputs, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
./discord
|
./discord
|
||||||
./rofi
|
./rofi
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
discord = prev.discord.override {withOpenASAR = true;};
|
discord = prev.discord.override { withOpenASAR = true; };
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# protonmail-bridge requires password manager
|
# protonmail-bridge requires password manager
|
||||||
pass
|
pass
|
||||||
|
|
@ -113,3 +115,4 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
weechat
|
weechat
|
||||||
];
|
];
|
||||||
|
|
@ -14,3 +16,4 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.picom = {
|
services.picom = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shadow = true;
|
shadow = true;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = "Fisa Code 10";
|
font = "Fisa Code 10";
|
||||||
|
|
@ -14,3 +16,4 @@
|
||||||
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 = {
|
wezterm = { source = ./config; recursive = true; };
|
||||||
source = ./config;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./mangohud.nix
|
./mangohud.nix
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
programs.mangohud = {
|
programs.mangohud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.mangohud;
|
package = pkgs.mangohud;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
blender
|
blender
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
./features/desktop
|
./features/desktop
|
||||||
|
|
@ -49,3 +51,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
{
|
{ inputs, outputs, ... }: {
|
||||||
inputs,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.impermanence.nixosModules.home-manager.impermanence
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
../features/cli
|
../features/cli
|
||||||
|
|
@ -16,10 +12,10 @@
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
allowUnfreePredicate = _: true;
|
allowUnfreePredicate = (_: true);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# 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,5 +1,6 @@
|
||||||
# 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,11 +1,8 @@
|
||||||
{
|
{ config, pkgs, inputs, ... }:
|
||||||
config,
|
let
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.agenix-rekey.nixosModules.default
|
inputs.agenix-rekey.nixosModules.default
|
||||||
|
|
@ -23,7 +20,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,4 +1,6 @@
|
||||||
{outputs, ...}: {
|
{ outputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./age.nix
|
./age.nix
|
||||||
./env.nix
|
./env.nix
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,35 @@
|
||||||
{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,9 +1,6 @@
|
||||||
|
{ 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.
|
||||||
|
|
@ -14,7 +11,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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
@ -6,7 +8,7 @@
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
LogLevel = "VERBOSE";
|
LogLevel = "VERBOSE";
|
||||||
};
|
};
|
||||||
ports = [22];
|
ports = [ 22 ];
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
{
|
{ lib, config, ... }:
|
||||||
lib,
|
let
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./persist.nix
|
./persist.nix
|
||||||
];
|
];
|
||||||
|
|
@ -38,26 +36,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,4 +1,6 @@
|
||||||
{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
|
||||||
|
|
@ -15,7 +17,7 @@
|
||||||
pinentryPackage = pkgs.pinentry-curses;
|
pinentryPackage = pkgs.pinentry-curses;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Use our yubikey as a user login or for sudo access
|
# Use our yubikey as a user login or for sudo access
|
||||||
security.pam.services = {
|
security.pam.services = {
|
||||||
login.u2fAuth = true;
|
login.u2fAuth = true;
|
||||||
sudo.u2fAuth = true;
|
sudo.u2fAuth = true;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{inputs, ...}: {
|
{ inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,22 @@
|
||||||
|
{ 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,14 +1,12 @@
|
||||||
|
{ 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";
|
||||||
|
|
@ -16,10 +14,12 @@
|
||||||
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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
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,15 +1,13 @@
|
||||||
|
{ 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,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../common/global
|
../common/global
|
||||||
|
|
||||||
|
|
@ -13,18 +15,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;
|
||||||
|
|
@ -47,7 +49,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Networking configuration
|
/* Networking configuration */
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "fuchsia";
|
hostName = "fuchsia";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,14 @@
|
||||||
|
{ 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;
|
||||||
|
|
@ -27,9 +25,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{
|
{ device = "/swap/swapfile";
|
||||||
device = "/swap/swapfile";
|
size = 16*1024;
|
||||||
size = 16 * 1024;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
programs = {
|
programs = {
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
# Load and unload environment variables.
|
# Load and unload environment variables.
|
||||||
|
|
@ -7,3 +9,4 @@
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# Our custom power state
|
# Our custom power state
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"default/amdgpu-custom-states.card0" = {
|
"default/amdgpu-custom-states.card0" = {
|
||||||
|
|
@ -24,5 +26,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Install our overclocking script.
|
# Install our overclocking script.
|
||||||
environment.systemPackages = with pkgs; [amdgpu-clocks];
|
environment.systemPackages = with pkgs; [ amdgpu-clocks ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./amdgpu-clocks.nix
|
./amdgpu-clocks.nix
|
||||||
./flatpak.nix
|
./flatpak.nix
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
{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,7 +1,9 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# 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,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# Enable necessary udev rules.
|
# Enable necessary udev rules.
|
||||||
services.udev.packages = with pkgs; [
|
services.udev.packages = with pkgs; [
|
||||||
openrgb
|
openrgb
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# 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,4 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../common/global
|
../common/global
|
||||||
../common/users/sajenim
|
../common/users/sajenim
|
||||||
|
|
@ -31,24 +33,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -63,3 +65,4 @@
|
||||||
# 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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./jellyseerr.nix
|
./jellyseerr.nix
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
{...}: 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 = {
|
||||||
|
|
@ -33,7 +35,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"
|
||||||
];
|
];
|
||||||
|
|
@ -46,7 +48,8 @@ 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,6 +1,8 @@
|
||||||
{...}: let
|
{ ... }:
|
||||||
|
let
|
||||||
port = "5055";
|
port = "5055";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
# Request management
|
# Request management
|
||||||
jellyseerr = {
|
jellyseerr = {
|
||||||
|
|
@ -37,7 +39,8 @@ 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,6 +1,8 @@
|
||||||
{...}: 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 = {
|
||||||
|
|
@ -40,7 +42,8 @@ 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,6 +1,8 @@
|
||||||
{...}: let
|
{ ... }:
|
||||||
|
let
|
||||||
port = "9925";
|
port = "9925";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
mealie = {
|
mealie = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
|
|
@ -27,7 +29,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"
|
||||||
];
|
];
|
||||||
|
|
@ -41,7 +43,9 @@ 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,11 +1,13 @@
|
||||||
{config, ...}: let
|
{ config, ... }:
|
||||||
|
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 = {
|
||||||
|
|
@ -41,7 +43,8 @@ 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,6 +1,8 @@
|
||||||
{...}: 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 = {
|
||||||
|
|
@ -34,10 +36,11 @@ in {
|
||||||
service = "prowlarr";
|
service = "prowlarr";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
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,14 +1,16 @@
|
||||||
{...}: 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
|
||||||
|
|
@ -40,7 +42,8 @@ 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,6 +1,8 @@
|
||||||
{...}: 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 = {
|
||||||
|
|
@ -39,7 +41,8 @@ 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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
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,6 +1,8 @@
|
||||||
{...}: 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 = {
|
||||||
|
|
@ -40,7 +42,8 @@ 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,18 +1,16 @@
|
||||||
{
|
{ config, lib, ... }:
|
||||||
config,
|
let
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
in {
|
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;
|
||||||
|
|
@ -23,12 +21,12 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-label/ESP";
|
device = "/dev/disk/by-label/ESP";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/srv/multimedia" = {
|
fileSystems."/srv/multimedia" = {
|
||||||
device = "/dev/disk/by-label/multimedia";
|
device = "/dev/disk/by-label/multimedia";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
@ -36,31 +34,30 @@ 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";
|
||||||
device = "/swap/swapfile";
|
size = 16*1024;
|
||||||
size = 16 * 1024;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.borgbackup.jobs = {
|
services.borgbackup.jobs = {
|
||||||
containers = {
|
containers = {
|
||||||
paths = [
|
paths = [
|
||||||
|
|
@ -31,3 +33,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,8 @@
|
||||||
{
|
{ config, inputs, pkgs, ... }:
|
||||||
config,
|
let
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
port = "8080";
|
port = "8080";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.crowdsec.nixosModules.crowdsec
|
inputs.crowdsec.nixosModules.crowdsec
|
||||||
inputs.crowdsec.nixosModules.crowdsec-firewall-bouncer
|
inputs.crowdsec.nixosModules.crowdsec-firewall-bouncer
|
||||||
|
|
@ -89,12 +86,9 @@ 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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./traefik
|
./traefik
|
||||||
./crowdsec
|
./crowdsec
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.forgejo = {
|
services.forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
stateDir = "/srv/services/forgejo";
|
stateDir = "/srv/services/forgejo";
|
||||||
|
|
@ -32,7 +34,8 @@
|
||||||
|
|
||||||
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,4 +1,6 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
# Setup grafana our grafana instance.
|
# Setup grafana our grafana instance.
|
||||||
services.grafana = {
|
services.grafana = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -22,15 +24,13 @@
|
||||||
|
|
||||||
# Setup our database for grafana.
|
# Setup our database for grafana.
|
||||||
services.mysql = {
|
services.mysql = {
|
||||||
ensureUsers = [
|
ensureUsers = [{
|
||||||
{
|
name = "grafana";
|
||||||
name = "grafana";
|
ensurePermissions = {
|
||||||
ensurePermissions = {
|
"grafana.*" = "ALL PRIVILEGES";
|
||||||
"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,4 +1,6 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.lighttpd = {
|
services.lighttpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 5624;
|
port = 5624;
|
||||||
|
|
@ -21,7 +23,8 @@
|
||||||
|
|
||||||
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,10 +1,5 @@
|
||||||
{
|
{ inputs, pkgs, lib, config, ... }:
|
||||||
inputs,
|
let
|
||||||
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";
|
||||||
|
|
@ -12,8 +7,9 @@
|
||||||
};
|
};
|
||||||
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
|
||||||
];
|
];
|
||||||
|
|
@ -31,7 +27,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 = {
|
||||||
|
|
@ -50,10 +46,10 @@ in {
|
||||||
server-port = 25565;
|
server-port = 25565;
|
||||||
white-list = true;
|
white-list = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# 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.
|
||||||
|
|
@ -94,7 +90,8 @@ 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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.mpd = {
|
services.mpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
musicDirectory = "/srv/multimedia/library/music";
|
musicDirectory = "/srv/multimedia/library/music";
|
||||||
|
|
@ -26,7 +28,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,7 +1,10 @@
|
||||||
{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,7 +1,9 @@
|
||||||
{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 = {
|
||||||
|
|
@ -12,7 +14,7 @@
|
||||||
exporters = {
|
exporters = {
|
||||||
node = {
|
node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enabledCollectors = ["systemd" "processes"];
|
enabledCollectors = [ "systemd" "processes" ];
|
||||||
port = 9100;
|
port = 9100;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -21,12 +23,11 @@
|
||||||
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,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.samba = {
|
services.samba = {
|
||||||
enable = true;
|
enable = true;
|
||||||
securityType = "user";
|
securityType = "user";
|
||||||
|
|
@ -7,7 +9,7 @@
|
||||||
workgroup = WORKGROUP
|
workgroup = WORKGROUP
|
||||||
server string = smbnix
|
server string = smbnix
|
||||||
netbios name = smbnix
|
netbios name = smbnix
|
||||||
security = user
|
security = user
|
||||||
#use sendfile = yes
|
#use sendfile = yes
|
||||||
#max protocol = smb2
|
#max protocol = smb2
|
||||||
# note: localhost is the ipv6 localhost ::1
|
# note: localhost is the ipv6 localhost ::1
|
||||||
|
|
@ -45,5 +47,5 @@
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.persistence."/persist".directories = ["/var/lib/samba"];
|
environment.persistence."/persist".directories = [ "/var/lib/samba" ];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
|
{ inputs, config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
inputs,
|
disabledModules = [ "services/web-servers/traefik.nix" ];
|
||||||
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"
|
||||||
|
|
@ -89,14 +86,12 @@
|
||||||
# List of domains in our network
|
# List of domains in our network
|
||||||
domains = [
|
domains = [
|
||||||
# Internal services
|
# Internal services
|
||||||
{
|
{ main = "kanto.dev";
|
||||||
main = "kanto.dev";
|
sans = [ "*.kanto.dev" ];
|
||||||
sans = ["*.kanto.dev"];
|
|
||||||
}
|
}
|
||||||
# Public services
|
# Public services
|
||||||
{
|
{ main = "sajenim.dev";
|
||||||
main = "sajenim.dev";
|
sans = [ "*.sajenim.dev" ];
|
||||||
sans = ["*.sajenim.dev"];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
@ -111,7 +106,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;
|
||||||
|
|
@ -149,33 +144,20 @@
|
||||||
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/lib/traefik";
|
{ directory = "/var/log/traefik"; user = "traefik"; group = "traefik"; }
|
||||||
user = "traefik";
|
{ directory = "/plugins-storage"; user = "traefik"; group = "traefik"; }
|
||||||
group = "traefik";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
directory = "/var/log/traefik";
|
|
||||||
user = "traefik";
|
|
||||||
group = "traefik";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
directory = "/plugins-storage";
|
|
||||||
user = "traefik";
|
|
||||||
group = "traefik";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{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;
|
||||||
|
|
@ -10,7 +12,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
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -47,7 +49,7 @@
|
||||||
crowdsec.plugin.bouncer = {
|
crowdsec.plugin.bouncer = {
|
||||||
enabled = "true";
|
enabled = "true";
|
||||||
crowdsecMode = "appsec";
|
crowdsecMode = "appsec";
|
||||||
crowdsecLapiKeyFile = config.age.secrets.traefik-bouncer-key.path;
|
crowdsecLapiKeyFile = config.age.secrets.traefik-bouncer-key.path;
|
||||||
crowdsecLapiScheme = "http";
|
crowdsecLapiScheme = "http";
|
||||||
crowdsecLapiHost = "127.0.0.1:8080";
|
crowdsecLapiHost = "127.0.0.1:8080";
|
||||||
crowdsecAppsecEnabled = "true";
|
crowdsecAppsecEnabled = "true";
|
||||||
|
|
@ -55,3 +57,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
services.traefik.dynamicConfigOptions.http.routers = {
|
services.traefik.dynamicConfigOptions.http.routers = {
|
||||||
traefik-dashboard = {
|
traefik-dashboard = {
|
||||||
rule = "Host(`traefik.kanto.dev`)";
|
rule = "Host(`traefik.kanto.dev`)";
|
||||||
|
|
@ -23,3 +25,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
{...}: {
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
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,5 +1,7 @@
|
||||||
# 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
|
||||||
stdenv,
|
, lib
|
||||||
lib,
|
, fetchFromGitHub
|
||||||
fetchFromGitHub,
|
, bash
|
||||||
bash,
|
, subversion
|
||||||
subversion,
|
, makeWrapper
|
||||||
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,7 +1,8 @@
|
||||||
# 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,4 +1,5 @@
|
||||||
{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,10 +1,12 @@
|
||||||
{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…
Add table
Add a link
Reference in a new issue