Compare commits
54 Commits
Author | SHA1 | Date |
---|---|---|
Sam | 2ef417b6b1 | |
Sam | 592309f30a | |
Sam | c85215b5b4 | |
Sam | d224d55c1a | |
Sam | cdc75090ff | |
Sam | 2d78446105 | |
Sam | d058b2cf72 | |
Sam | 86c59bb27b | |
Sam | ac6a9d2c21 | |
Sam | a154d2df79 | |
Sam | a95ac4ef25 | |
Sam | de5c1edf1b | |
Sam | ac5833c8af | |
Sam | b9c0b70fc8 | |
Sam | b2f849d80b | |
Sam | 4d0335d99a | |
Sam | ec7f879c6d | |
Sam | 2c44487796 | |
Sam | 45ee82da0e | |
Sam | 5d0b1b9be7 | |
Sam | 7be587d7b1 | |
Sam | 7e4f15496f | |
Sam | 9a26bbe7c5 | |
Sam | d725852387 | |
Sam | 4bee1bffbd | |
Sam | 8561f44963 | |
Sam | dde54c9aa7 | |
Sam | 16436da1e4 | |
Sam | 13dad7b532 | |
Sam | a9f321a847 | |
Sam | 7cffeffca9 | |
Sam | 70a788f588 | |
Sam | 4e6f1f6f01 | |
Sam | 8242c29cf7 | |
Sam | bd3f24056e | |
Sam | 71ac9901dd | |
Sam | b106d1cb6e | |
Sam | ca9dff8442 | |
Sam | 2516f9de21 | |
Sam | a9fc820d61 | |
Sam | c255cdbb2c | |
Sam | 6f4187b95e | |
Sam | 89141ff555 | |
Sam | e6c3917942 | |
Sam | 2793c3cfe0 | |
Sam | 2005bc293f | |
Sam | d9fce8a1c9 | |
Sam | 37768683d7 | |
Sam | 3092630c08 | |
Sam | dbd3dd5584 | |
Sam | 92fb9f5519 | |
Sam | 00d5c7db47 | |
Sam | 8eeea08472 | |
Sam | 5430e70bd4 |
77
flake.lock
77
flake.lock
|
@ -46,11 +46,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722113426,
|
"lastModified": 1728330715,
|
||||||
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
|
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "devshell",
|
||||||
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
|
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -230,11 +230,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727854478,
|
"lastModified": 1729104314,
|
||||||
"narHash": "sha256-/odH2nUMAwkMgOS2nG2z0exLQNJS4S2LfMW0teqU7co=",
|
"narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "5f58871c9657b5fc0a7f65670fe2ba99c26c1d79",
|
"rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -348,11 +348,11 @@
|
||||||
},
|
},
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727649413,
|
"lastModified": 1730403150,
|
||||||
"narHash": "sha256-FA53of86DjFdeQzRDVtvgWF9o52rWK70VHGx0Y8fElQ=",
|
"narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "impermanence",
|
"repo": "impermanence",
|
||||||
"rev": "d0b38e550039a72aff896ee65b0918e975e6d48e",
|
"rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -412,11 +412,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727707210,
|
"lastModified": 1729826725,
|
||||||
"narHash": "sha256-8XZp5XO2FC6INZEZ2WlwErtvFVpl45ACn8CJ2hfTA0Y=",
|
"narHash": "sha256-w3WNlYxqWYsuzm/jgFPyhncduoDNjot28aC8j39TW0U=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "f61d5f2051a387a15817007220e9fb3bbead57b3",
|
"rev": "7840909b00fbd5a183008a6eb251ea307fe4a76e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -426,13 +426,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-secrets": {
|
"nix-secrets": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728169228,
|
"lastModified": 1730130467,
|
||||||
"narHash": "sha256-WT6kWWqMQE4KBdziZ/uuJ9sPcVg+6QJoOdBPdKAD0gI=",
|
"narHash": "sha256-mcyG1iu8hNmkDjgDEdFQyCZ3bBxBHFKd4nxT8NreMmY=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "e9709bbb9adc91fb6b4dab5b16e15546cc596695",
|
"rev": "c82ff6f7e995503acabb9cf2478e5b4e401968ce",
|
||||||
"revCount": 165,
|
"revCount": 188,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
||||||
},
|
},
|
||||||
|
@ -474,11 +473,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725762081,
|
"lastModified": 1729973466,
|
||||||
"narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=",
|
"narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05",
|
"rev": "cd3e8833d70618c4eea8df06f95b364b016d4950",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -506,11 +505,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable_2": {
|
"nixpkgs-unstable_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728018373,
|
"lastModified": 1730200266,
|
||||||
"narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
|
"narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
|
"rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -522,16 +521,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728067476,
|
"lastModified": 1730481737,
|
||||||
"narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=",
|
"narHash": "sha256-HaUCfqLIFX/4wiSKkKKSTwUNmZd1EMy+lGB+faadQXU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030",
|
"rev": "f18ab3b08f56abc54bcc2ef9bbca627d45926fee",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.05",
|
"ref": "release-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -550,11 +549,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728083208,
|
"lastModified": 1729945968,
|
||||||
"narHash": "sha256-jaoWQm2+oAUDU1ft+RWrxcgc/4lHGE0AkZlIBiVjQiQ=",
|
"narHash": "sha256-4u+nbBSMuXWGCtXxUPPEflRm54+y/HLIbhIep9do8Ew=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "e246bd57da2a09b18b0667f7de40dc1c55a94667",
|
"rev": "c05ac01070425ed0797b1ff678dc690c333cea74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -566,11 +565,11 @@
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728121595,
|
"lastModified": 1730472538,
|
||||||
"narHash": "sha256-e9kRLdv2D4Lk6obeLEzm/m2TYcnZuMnVtqtQUKBCMVs=",
|
"narHash": "sha256-3m4OVGKsbPzMlnS0gVptIZBRlxgqQz+WhfwT+rT823Y=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "b638dbc3cd5ecae15140d2de7897dc9395cd128e",
|
"rev": "52c21ec8fde46366b1a5555e18d854ee18012ac8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -603,11 +602,11 @@
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727734513,
|
"lastModified": 1729999681,
|
||||||
"narHash": "sha256-i47LQwoGCVQq4upV2YHV0OudkauHNuFsv306ualB/Sw=",
|
"narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=",
|
||||||
"owner": "mic92",
|
"owner": "mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "3198a242e547939c5e659353551b0668ec150268",
|
"rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -639,11 +638,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727984844,
|
"lastModified": 1729613947,
|
||||||
"narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=",
|
"narHash": "sha256-XGOvuIPW1XRfPgHtGYXd5MAmJzZtOuwlfKDgxX5KT3s=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64",
|
"rev": "aac86347fb5063960eccb19493e0cadcdb4205ca",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
165
flake.nix
165
flake.nix
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Nixpkgs
|
# Nixpkgs
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
nixpkgs.url = "github:nixos/nixpkgs/release-24.05";
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# NUR
|
# NUR
|
||||||
|
@ -53,99 +53,84 @@
|
||||||
|
|
||||||
nix-secrets = {
|
nix-secrets = {
|
||||||
url = "git+ssh://git@git.bitlab21.com/sam/nix-secrets.git";
|
url = "git+ssh://git@git.bitlab21.com/sam/nix-secrets.git";
|
||||||
flake = false;
|
inputs = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = {
|
||||||
{ self
|
self,
|
||||||
, nixpkgs
|
nixpkgs,
|
||||||
, home-manager
|
home-manager,
|
||||||
, ...
|
...
|
||||||
} @ inputs:
|
} @ inputs: let
|
||||||
let
|
inherit (self) outputs;
|
||||||
inherit (self) outputs;
|
systems = [
|
||||||
systems = [
|
"x86_64-linux"
|
||||||
"x86_64-linux"
|
];
|
||||||
];
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
forAllSystems = nixpkgs.lib.genAttrs systems;
|
inherit (nixpkgs) lib;
|
||||||
specialArgs = { inherit inputs outputs; };
|
configVars = import ./vars {inherit inputs lib;};
|
||||||
in
|
specialArgs = {
|
||||||
{
|
inherit
|
||||||
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
inputs
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
outputs
|
||||||
overlays = import ./overlays { inherit inputs; };
|
configVars
|
||||||
nixosModules = import ./modules/nixos;
|
;
|
||||||
homeManagerModules = import ./modules/home-manager;
|
};
|
||||||
|
in {
|
||||||
|
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
|
||||||
|
overlays = import ./overlays {inherit inputs;};
|
||||||
|
nixosModules = import ./modules/nixos;
|
||||||
|
homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
# System level configs
|
# System level configs
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixdev = nixpkgs.lib.nixosSystem {
|
bootstrap = nixpkgs.lib.nixosSystem {
|
||||||
inherit specialArgs;
|
inherit specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/nixdev
|
./hosts/bootstrap
|
||||||
home-manager.nixosModules.home-manager
|
];
|
||||||
{
|
};
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
sparky = nixpkgs.lib.nixosSystem {
|
||||||
}
|
inherit specialArgs;
|
||||||
];
|
modules = [
|
||||||
};
|
./hosts/sparky
|
||||||
fileserver = nixpkgs.lib.nixosSystem {
|
home-manager.nixosModules.home-manager
|
||||||
inherit specialArgs;
|
{
|
||||||
modules = [
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
./hosts/fileserver
|
}
|
||||||
home-manager.nixosModules.home-manager
|
];
|
||||||
{
|
};
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
semita = nixpkgs.lib.nixosSystem {
|
||||||
}
|
inherit specialArgs;
|
||||||
];
|
modules = [
|
||||||
};
|
./hosts/semita
|
||||||
bootstrap = nixpkgs.lib.nixosSystem {
|
home-manager.nixosModules.home-manager
|
||||||
inherit specialArgs;
|
{
|
||||||
modules = [
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
./hosts/bootstrap
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
sparky = nixpkgs.lib.nixosSystem {
|
merlin = nixpkgs.lib.nixosSystem {
|
||||||
inherit specialArgs;
|
inherit specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/sparky
|
./hosts/nebula
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
semita = nixpkgs.lib.nixosSystem {
|
citadel = nixpkgs.lib.nixosSystem {
|
||||||
inherit specialArgs;
|
inherit specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/semita
|
./hosts/citadel
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
|
||||||
nebula = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = [
|
|
||||||
./hosts/nebula
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
citadel = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = [
|
|
||||||
./hosts/citadel
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{config, ...}: {
|
{config, pkgs, ...}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Import users
|
# Import users
|
||||||
./users/sam
|
./users/sam
|
||||||
|
@ -15,6 +15,10 @@
|
||||||
./common/optional/yazi.nix
|
./common/optional/yazi.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.qgis
|
||||||
|
];
|
||||||
|
|
||||||
colorScheme = {
|
colorScheme = {
|
||||||
slug = "serene";
|
slug = "serene";
|
||||||
name = "Serene";
|
name = "Serene";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, inputs, outputs, ... }:
|
{ pkgs, inputs, outputs, lib, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nix-colors.homeManagerModules.default
|
inputs.nix-colors.homeManagerModules.default
|
||||||
|
@ -18,13 +18,15 @@
|
||||||
ripgrep
|
ripgrep
|
||||||
fzf
|
fzf
|
||||||
eza
|
eza
|
||||||
|
bat
|
||||||
|
killall
|
||||||
pciutils
|
pciutils
|
||||||
tree
|
tree
|
||||||
jq
|
jq
|
||||||
coreutils
|
coreutils
|
||||||
btop
|
btop
|
||||||
htop
|
htop
|
||||||
postgresql
|
postgresql_16
|
||||||
libqalculate
|
libqalculate
|
||||||
tmux
|
tmux
|
||||||
;
|
;
|
||||||
|
|
|
@ -25,9 +25,11 @@
|
||||||
pkgs.shellharden
|
pkgs.shellharden
|
||||||
pkgs.shfmt
|
pkgs.shfmt
|
||||||
pkgs.stylua
|
pkgs.stylua
|
||||||
|
pkgs.glow
|
||||||
];
|
];
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.neovim-unwrapped;
|
||||||
enableMan = true; # install man pages for nixvim options
|
enableMan = true; # install man pages for nixvim options
|
||||||
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
||||||
globals.mapleader = " ";
|
globals.mapleader = " ";
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
{
|
{
|
||||||
programs.nixvim.keymaps = [
|
programs.nixvim.keymaps = [
|
||||||
# Switching buffers
|
# Switching buffers
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = ["n"];
|
||||||
action = "<C-w>h";
|
action = "<C-w>h";
|
||||||
key = "<S-h>";
|
key = "<S-h>";
|
||||||
options = {
|
options = {silent = true;};
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = ["n"];
|
||||||
|
@ -52,35 +50,6 @@
|
||||||
options = {noremap = true;};
|
options = {noremap = true;};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Telescope Plugin
|
|
||||||
{
|
|
||||||
# find files
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Leader>ff";
|
|
||||||
action = "<cmd>Telescope find_files<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# live grep
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Leader>fg";
|
|
||||||
action = "<cmd>Telescope live_grep<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# buffers
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Leader>fb";
|
|
||||||
action = "<cmd>Telescope buffers<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# help tags
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Leader>fh";
|
|
||||||
action = "<cmd>Telescope help_tags<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
# paste over selected text without yanking it
|
# paste over selected text without yanking it
|
||||||
{
|
{
|
||||||
mode = ["v"];
|
mode = ["v"];
|
||||||
|
@ -113,5 +82,33 @@
|
||||||
action = ": resize +1<CR>";
|
action = ": resize +1<CR>";
|
||||||
options = {noremap = true;};
|
options = {noremap = true;};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# indent line in or out
|
||||||
|
{
|
||||||
|
mode = ["v"];
|
||||||
|
key = "<";
|
||||||
|
action = "<gv";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = ["v"];
|
||||||
|
key = ">";
|
||||||
|
action = ">gv";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
|
||||||
|
# move selected line up or down
|
||||||
|
{
|
||||||
|
mode = ["v"];
|
||||||
|
key = "J";
|
||||||
|
action = ":m '>+1<CR>gv=gv";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = ["v"];
|
||||||
|
key = "K";
|
||||||
|
action = ":m '<-2<CR>gv=gv";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
cmp-emoji = { enable = true; };
|
cmp-emoji = { enable = true; };
|
||||||
cmp = {
|
cmp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
cmdline = {};
|
||||||
settings = {
|
settings = {
|
||||||
autoEnableSources = true;
|
autoEnableSources = true;
|
||||||
experimental = { ghost_text = true; };
|
experimental = { ghost_text = true; };
|
||||||
|
@ -11,7 +12,7 @@
|
||||||
fetchingTimeout = 200;
|
fetchingTimeout = 200;
|
||||||
maxViewEntries = 30;
|
maxViewEntries = 30;
|
||||||
};
|
};
|
||||||
snippet = { expand = "luasnip"; };
|
snippet = { expand = "function(args) require('luasnip').lsp_expand(args.body) end"; };
|
||||||
formatting = {
|
formatting = {
|
||||||
fields = [ "kind" "abbr" "menu" ];
|
fields = [ "kind" "abbr" "menu" ];
|
||||||
format = ''
|
format = ''
|
||||||
|
@ -43,14 +44,10 @@
|
||||||
};
|
};
|
||||||
mapping = {
|
mapping = {
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
"<S-Tab>" = "cmp.mapping.select_prev_item()";
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-e>" = "cmp.mapping.abort()";
|
|
||||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||||
"<C-Space>" = "cmp.mapping.complete()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||||
"<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -58,7 +55,7 @@
|
||||||
cmp-buffer = { enable = true; };
|
cmp-buffer = { enable = true; };
|
||||||
cmp-path = { enable = true; }; # file system paths
|
cmp-path = { enable = true; }; # file system paths
|
||||||
cmp_luasnip = { enable = true; }; # snippets
|
cmp_luasnip = { enable = true; }; # snippets
|
||||||
cmp-cmdline = { enable = false; }; # autocomplete for cmdline
|
cmp-cmdline = { enable = true; }; # autocomplete for cmdline
|
||||||
};
|
};
|
||||||
programs.nixvim.extraConfigLua = ''
|
programs.nixvim.extraConfigLua = ''
|
||||||
luasnip = require("luasnip")
|
luasnip = require("luasnip")
|
||||||
|
@ -94,22 +91,15 @@
|
||||||
|
|
||||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||||
cmp.setup.cmdline({'/', "?" }, {
|
cmp.setup.cmdline({'/', "?" }, {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
sources = {
|
sources = {
|
||||||
{ name = 'buffer' }
|
{ name = 'buffer' }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Set configuration for specific filetype.
|
|
||||||
cmp.setup.filetype('gitcommit', {
|
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
|
|
||||||
}, {
|
|
||||||
{ name = 'buffer' },
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
cmp.setup.cmdline(':', {
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
sources = cmp.config.sources({
|
sources = cmp.config.sources({
|
||||||
{ name = 'path' }
|
{ name = 'path' }
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -38,4 +38,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
'';
|
'';
|
||||||
|
programs.nixvim.keymaps = [
|
||||||
|
# format document with Conform
|
||||||
|
{
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<leader>cf";
|
||||||
|
action = "<CMD>Format<CR>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Conform auto-format document";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
}: let
|
}: let
|
||||||
user = config.home.username;
|
user = config.home.username;
|
||||||
in {
|
in {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./cmp.nix
|
./cmp.nix
|
||||||
./colorizer.nix
|
./colorizer.nix
|
||||||
|
@ -32,6 +33,18 @@ in {
|
||||||
pkgs.vimPlugins.vim-dadbod-ui
|
pkgs.vimPlugins.vim-dadbod-ui
|
||||||
pkgs.vimPlugins.vim-dadbod-completion
|
pkgs.vimPlugins.vim-dadbod-completion
|
||||||
pkgs.vimPlugins.fugitive
|
pkgs.vimPlugins.fugitive
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
|
{
|
||||||
|
name = "glow.nvim";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "ellisonleao";
|
||||||
|
repo = "glow.nvim";
|
||||||
|
rev = "238070a";
|
||||||
|
sha256 = "sha256-GsNcASzVvY0066kak2nvUY5luzanoBclqcUOsODww8g=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
(pkgs.vimUtils.buildVimPlugin
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
{
|
{
|
||||||
name = "buffer_manager.nvim";
|
name = "buffer_manager.nvim";
|
||||||
|
@ -58,6 +71,18 @@ in {
|
||||||
pkgs.vimPlugins.vim-devicons
|
pkgs.vimPlugins.vim-devicons
|
||||||
];
|
];
|
||||||
programs.nixvim.extraConfigLua = ''
|
programs.nixvim.extraConfigLua = ''
|
||||||
|
-- function to read api key from secrets file
|
||||||
|
local function read_api_key(file_path)
|
||||||
|
local file = io.open(file_path, "r")
|
||||||
|
if file then
|
||||||
|
local api_key = file:read("*all")
|
||||||
|
file:close()
|
||||||
|
return api_key
|
||||||
|
else
|
||||||
|
error("Failed to open file: " .. file_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- buffer_manager.nvim
|
-- buffer_manager.nvim
|
||||||
local opts = {noremap = true}
|
local opts = {noremap = true}
|
||||||
|
|
||||||
|
@ -84,6 +109,16 @@ in {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
require('glow').setup({
|
||||||
|
border = "shadow",
|
||||||
|
style = "dark",
|
||||||
|
pager = false,
|
||||||
|
width = 80,
|
||||||
|
height = 100,
|
||||||
|
width_ratio = 0.7,
|
||||||
|
height_ratio = 0.7,
|
||||||
|
})
|
||||||
|
|
||||||
-- Custom color for modified buffers
|
-- Custom color for modified buffers
|
||||||
vim.api.nvim_set_hl(0, "BufferManagerModified", { fg = "#988100" })
|
vim.api.nvim_set_hl(0, "BufferManagerModified", { fg = "#988100" })
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
keymaps = {
|
keymaps = {
|
||||||
toggleQuickMenu = "<leader>h";
|
toggleQuickMenu = "<leader>h";
|
||||||
|
addFile = "<leader>a";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,25 @@
|
||||||
|
{ osConfig , ... }:
|
||||||
|
let
|
||||||
|
hostname = osConfig.networking.hostName;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.nixvim.plugins = {
|
programs.nixvim.plugins = {
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
servers = {
|
servers = {
|
||||||
lua-ls = {enable = true;};
|
lua-ls = {enable = true;};
|
||||||
nixd = {enable = true;};
|
nixd = {
|
||||||
|
enable = true;
|
||||||
|
cmd = ["nixd"];
|
||||||
|
settings = {
|
||||||
|
nixpkgs.expr = "import <nixpkgs> { }";
|
||||||
|
options = {
|
||||||
|
nixos.expr = "(builtins.getFlake \"/etc/nixos\").nixosConfigurations.${hostname}.options";
|
||||||
|
# TODO get home-manager options working when hm imported as submodule
|
||||||
|
# home_manager.expr = "(builtins.getFlake \"github:nix-community/home-manager\").homeConfigurations.${hostname}.options";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
bashls = {enable = true;};
|
bashls = {enable = true;};
|
||||||
pyright = {enable = true;};
|
pyright = {enable = true;};
|
||||||
html = {enable = true;};
|
html = {enable = true;};
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
{
|
{
|
||||||
programs.nixvim.plugins.oil = {
|
programs.nixvim.plugins.oil = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
columns = ["icon"];
|
||||||
|
view_options.show_hidden = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,4 +3,48 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
extensions.fzy-native.enable = true;
|
extensions.fzy-native.enable = true;
|
||||||
};
|
};
|
||||||
|
programs.nixvim.keymaps = [
|
||||||
|
{
|
||||||
|
# find files
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>ff";
|
||||||
|
action = "<cmd>Telescope find_files<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# live grep
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>fg";
|
||||||
|
action = "<cmd>Telescope live_grep<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# grep string under cursor
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>fs";
|
||||||
|
action = "<cmd>Telescope string_grep<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# buffers
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>fb";
|
||||||
|
action = "<cmd>Telescope buffers<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# help tags
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>fh";
|
||||||
|
action = "<cmd>Telescope help_tags<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# show recently opened files
|
||||||
|
mode = ["n"];
|
||||||
|
key = "<Leader>fo";
|
||||||
|
action = "<cmd>Telescope oldfiles<CR>";
|
||||||
|
options = {noremap = true;};
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ll = "ls -l";
|
ll = "ls -l";
|
||||||
src = "cd ~/.local/share/src";
|
src = "cd ~/.local/share/src";
|
||||||
|
no = "cd /etc/nixos";
|
||||||
|
cat = "bat --decorations=never";
|
||||||
|
ls = "eza";
|
||||||
};
|
};
|
||||||
history.size = 10000;
|
history.size = 10000;
|
||||||
history.path = "${config.xdg.dataHome}/zsh/history";
|
history.path = "${config.xdg.dataHome}/zsh/history";
|
||||||
|
|
|
@ -15,8 +15,20 @@
|
||||||
pkgs.kcolorchooser
|
pkgs.kcolorchooser
|
||||||
pkgs.zotero
|
pkgs.zotero
|
||||||
pkgs.transmission
|
pkgs.transmission
|
||||||
pkgs.qgis
|
|
||||||
pkgs.mpv
|
pkgs.mpv
|
||||||
pkgs.gnome.simple-scan
|
pkgs.gnome.simple-scan
|
||||||
|
pkgs.pandoc
|
||||||
|
pkgs.texlive.combined.scheme-small
|
||||||
|
pkgs.libreoffice-fresh
|
||||||
|
pkgs.hunspell
|
||||||
|
pkgs.hunspellDicts.en-gb-large
|
||||||
|
pkgs.hunspellDicts.en-gb-large
|
||||||
|
pkgs.hunspellDicts.en_US
|
||||||
|
pkgs.set_wm_class
|
||||||
|
pkgs.xorg.xkill
|
||||||
|
pkgs.krita
|
||||||
|
pkgs.R
|
||||||
|
pkgs.gimp
|
||||||
|
pkgs.gajim
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +1,53 @@
|
||||||
{ pkgs, config, ... }:
|
|
||||||
let
|
|
||||||
user = config.home.username;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
configVars,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
user = config.home.username;
|
||||||
|
jellyfinIp = configVars.networking.addresses.jellyfin.ip;
|
||||||
|
jellyfinPort = configVars.networking.addresses.jellyfin.port;
|
||||||
|
bitcoinNodeIp = configVars.networking.addresses.bitcoin-node.ip;
|
||||||
|
mempoolPort = configVars.networking.addresses.bitcoin-node.services.mempool.port;
|
||||||
|
in {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles.${user} = {
|
profiles.${user} = {
|
||||||
search = {
|
search = {
|
||||||
force = true;
|
force = true;
|
||||||
default = "Searx";
|
default = "Searx";
|
||||||
order = [ "Searx" "DuckDuckGo" ];
|
order = ["Searx" "DuckDuckGo"];
|
||||||
engines = {
|
engines = {
|
||||||
"Nix Packages" = {
|
"Nix Packages" = {
|
||||||
urls = [{
|
urls = [
|
||||||
template = "https://search.nixos.org/packages";
|
{
|
||||||
params = [
|
template = "https://search.nixos.org/packages";
|
||||||
{ name = "type"; value = "packages"; }
|
params = [
|
||||||
{ name = "query"; value = "{searchTerms}"; }
|
{
|
||||||
];
|
name = "type";
|
||||||
}];
|
value = "packages";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "query";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
definedAliases = [ "@np" ];
|
definedAliases = ["@np"];
|
||||||
};
|
};
|
||||||
"NixOS Wiki" = {
|
"NixOS Wiki" = {
|
||||||
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
|
urls = [{template = "https://nixos.wiki/index.php?search={searchTerms}";}];
|
||||||
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||||
definedAliases = [ "@nw" ];
|
definedAliases = ["@nw"];
|
||||||
};
|
};
|
||||||
"Searx" = {
|
"Searx" = {
|
||||||
urls = [{ template = "http://10.0.10.35:8855/?q={searchTerms}"; }];
|
urls = [{template = "http://10.0.10.35:8855/?q={searchTerms}";}];
|
||||||
iconUpdateURL = "https://docs.searxng.org/_static/searxng-wordmark.svg";
|
iconUpdateURL = "https://docs.searxng.org/_static/searxng-wordmark.svg";
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||||
definedAliases = [ "@searx" ];
|
definedAliases = ["@searx"];
|
||||||
};
|
};
|
||||||
"Bing".metaData.hidden = true;
|
"Bing".metaData.hidden = true;
|
||||||
"Google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
|
"Google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
|
||||||
|
@ -41,16 +56,22 @@ in
|
||||||
|
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "wikipedia";
|
name = "toolbar";
|
||||||
tags = [ "wiki" ];
|
toolbar = true;
|
||||||
keyword = "wiki";
|
bookmarks = [
|
||||||
url = "https://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go";
|
{
|
||||||
}
|
name = "Jellyfin";
|
||||||
{
|
url = "http://${jellyfinIp}:${jellyfinPort}";
|
||||||
name = "bitlab21";
|
}
|
||||||
tags = [ "bitcoin" ];
|
{
|
||||||
keyword = "bitcoin";
|
name = "Mempool";
|
||||||
url = "https://bitlab21.com";
|
url = "http://${bitcoinNodeIp}:${toString mempoolPort}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Nixos Package Search";
|
||||||
|
url = "https://search.nixos.org/packages";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -75,7 +96,6 @@ in
|
||||||
privacy-badger
|
privacy-badger
|
||||||
zotero-connector
|
zotero-connector
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.kodi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kodi.withPackages (kodiPkgs:
|
||||||
|
with kodiPkgs; [
|
||||||
|
netflix
|
||||||
|
jellycon
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
}
|
|
@ -11,4 +11,9 @@
|
||||||
pkgs.feh
|
pkgs.feh
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.brave;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
./scripts/aichat-wrapper.nix
|
./scripts/aichat-wrapper.nix
|
||||||
./scripts/dmenu-wifi.nix
|
./scripts/dmenu-wifi.nix
|
||||||
./scripts/battery-status.nix
|
./scripts/battery-status.nix
|
||||||
|
./scripts/dmenu-set-wm-class.nix
|
||||||
|
./scripts/key-remaps.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(writeShellScriptBin "dmenu-set-wm-class" ''
|
||||||
|
${libnotify}/bin/notify-send "Set Window Class" "Select window..."
|
||||||
|
winid=$(${xorg.xwininfo}/bin/xwininfo | grep "Window id:" | grep -o "0x[0-9a-fA-F]*")
|
||||||
|
class=$(${xorg.xprop}/bin/xprop -id "$winid" WM_CLASS | grep -o "\".*\"$")
|
||||||
|
new_class=$( echo "" | ${dmenu}/bin/dmenu -p "Selected: $class. Set class name of window:")
|
||||||
|
[ -z "$new_class" ] && ${libnotify}/bin/notify-send "Set Window Class" "Nothing set, exiting" && exit
|
||||||
|
${set_wm_class}/bin/set_wm_class "$winid" "$new_class"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(writeShellScriptBin "key-remaps" ''
|
||||||
|
${xorg.xmodmap}/bin/xmodmap -e "keycode 64 = Mode_switch"
|
||||||
|
${xorg.xmodmap}/bin/xmodmap -e "keycode 43 = h H Left H"
|
||||||
|
${xorg.xmodmap}/bin/xmodmap -e "keycode 44 = j J Down J"
|
||||||
|
${xorg.xmodmap}/bin/xmodmap -e "keycode 45 = k K Up K"
|
||||||
|
${xorg.xmodmap}/bin/xmodmap -e "keycode 46 = l L Right L"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
|
@ -26,6 +26,9 @@
|
||||||
|
|
||||||
control + F7
|
control + F7
|
||||||
emoji-picker
|
emoji-picker
|
||||||
|
|
||||||
|
control + F4
|
||||||
|
dmenu-set-wm-class
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{pkgs, ...}: {
|
{...}: {
|
||||||
# TODO: configure x11 to look in .config/x11
|
# TODO: configure x11 to look in .config/x11
|
||||||
home.file.".xinitrc" = {
|
home.file.".xinitrc" = {
|
||||||
recursive = true;
|
recursive = true;
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
picom -b --config ~/.config/picom/picom.conf
|
picom -b --config ~/.config/picom/picom.conf
|
||||||
xrdb -merge ~/.Xresources
|
xrdb -merge ~/.Xresources
|
||||||
|
|
||||||
autostart="clipboard-save dwmblocks feh-wallpaper-changer sxhkd"
|
autostart="clipboard-save dwmblocks feh-wallpaper-changer sxhkd key-remaps"
|
||||||
|
|
||||||
for program in $autostart; do
|
for program in $autostart; do
|
||||||
pidof -sx "$program" || "$program" &
|
pidof -sx "$program" || "$program" &
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, configVars, ... }:
|
||||||
|
let
|
||||||
|
email = configVars.email.user;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.gitAndTools.gitFull;
|
package = pkgs.gitAndTools.gitFull;
|
||||||
userName = "Sam";
|
userName = "Sam";
|
||||||
userEmail = "samual.shop@proton.me";
|
userEmail = "${email}";
|
||||||
aliases = { };
|
aliases = { };
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
pull.rebase = false;
|
pull.rebase = false;
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
{ ...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Import users
|
|
||||||
./users/admin
|
|
||||||
|
|
||||||
./common/core
|
|
||||||
./common/optional/sops.nix
|
|
||||||
|
|
||||||
# Import optional
|
|
||||||
./common/optional/git.nix
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ ...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Import users
|
|
||||||
./users/admin
|
|
||||||
|
|
||||||
./common/core
|
|
||||||
|
|
||||||
# Import optional
|
|
||||||
./common/optional/git.nix
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{ ...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Import users
|
|
||||||
./users/sam
|
|
||||||
|
|
||||||
./common/core
|
|
||||||
./common/optional/desktop/hyprland
|
|
||||||
./common/optional/desktop/waybar.nix
|
|
||||||
./common/optional/sops.nix
|
|
||||||
|
|
||||||
# Import optional
|
|
||||||
./common/optional/git.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# ------
|
|
||||||
# | DP-1
|
|
||||||
# ------
|
|
||||||
monitors = [
|
|
||||||
{
|
|
||||||
name = "Virtual-1";
|
|
||||||
width = 2048;
|
|
||||||
height = 1152;
|
|
||||||
x = 0;
|
|
||||||
workspace = "1";
|
|
||||||
primary = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -20,6 +20,10 @@
|
||||||
./common/optional/transmission.nix
|
./common/optional/transmission.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.qgis
|
||||||
|
];
|
||||||
|
|
||||||
colorScheme = {
|
colorScheme = {
|
||||||
slug = "serene";
|
slug = "serene";
|
||||||
name = "Serene";
|
name = "Serene";
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
./common/optional/git.nix
|
./common/optional/git.nix
|
||||||
./common/optional/syncthing.nix
|
./common/optional/syncthing.nix
|
||||||
./common/optional/desktop/cinnamon
|
./common/optional/desktop/cinnamon
|
||||||
|
./common/optional/desktop/common/kodi.nix
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
configVars,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
# Disko setup
|
# Disko setup
|
||||||
|
@ -15,6 +16,8 @@
|
||||||
else "/dev/root_vg/root";
|
else "/dev/root_vg/root";
|
||||||
user = "sam";
|
user = "sam";
|
||||||
impermanence = true;
|
impermanence = true;
|
||||||
|
pieholeIp = configVars.networking.addresses.piehole.ip;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
# Create users for this host
|
# Create users for this host
|
||||||
|
@ -50,6 +53,8 @@ in {
|
||||||
../common/optional/printing.nix
|
../common/optional/printing.nix
|
||||||
../common/optional/backlight.nix
|
../common/optional/backlight.nix
|
||||||
../common/optional/xmodmap-arrow-remaps.nix
|
../common/optional/xmodmap-arrow-remaps.nix
|
||||||
|
../common/optional/nix-ld.nix
|
||||||
|
../common/optional/gaming.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
@ -67,15 +72,34 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/.swapvol/swapfile";
|
||||||
|
size = 32 * 1024;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
libinput.touchpad.accelSpeed = "0.5";
|
libinput.touchpad.accelSpeed = "0.5";
|
||||||
xserver = {
|
xserver = {
|
||||||
xkb.options = "caps:swapescape";
|
xkb.options = "caps:swapescape";
|
||||||
dpi = 196;
|
dpi = 196;
|
||||||
upscaleDefaultCursor = true;
|
upscaleDefaultCursor = true;
|
||||||
|
# FIXME this doesnt work for some reason
|
||||||
|
# displayManager.sessionCommands = pkgs.writeShellScriptBin "key-remaps" ''
|
||||||
|
# ${pkgs.xorg.xmodmap}/bin/xmodmap -e "keycode 64 = Mode_switch"
|
||||||
|
# ${pkgs.xorg.xmodmap}/bin/xmodmap -e "keycode 43 = h H Left H"
|
||||||
|
# ${pkgs.xorg.xmodmap}/bin/xmodmap -e "keycode 44 = j J Down J"
|
||||||
|
# ${pkgs.xorg.xmodmap}/bin/xmodmap -e "keycode 45 = k K Up K"
|
||||||
|
# ${pkgs.xorg.xmodmap}/bin/xmodmap -e "keycode 46 = l L Right L"
|
||||||
|
# '';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# fix cpu throttling on Lenovo Thinkpad
|
||||||
|
# see: https://github.com/erpalma/throttled
|
||||||
|
services.throttled.enable = true;
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
GDK_SCALE = "2.2";
|
GDK_SCALE = "2.2";
|
||||||
GDK_DPI_SCALE = "0.8";
|
GDK_DPI_SCALE = "0.8";
|
||||||
|
@ -84,16 +108,16 @@ in {
|
||||||
XCURSOR_SIZE = "64";
|
XCURSOR_SIZE = "64";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.tlp = {
|
# services.tlp = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
settings = {
|
# settings = {
|
||||||
CPU_SCALING_GOVERNOR_ON_AC = "ondemand";
|
# CPU_SCALING_GOVERNOR_ON_AC = "ondemand";
|
||||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
# CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||||
|
#
|
||||||
START_CHARGE_THRESH_BAT0 = 50;
|
# START_CHARGE_THRESH_BAT0 = 50;
|
||||||
STOP_CHARGE_THRESH_BAT0 = 95;
|
# STOP_CHARGE_THRESH_BAT0 = 95;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
bluetooth = {
|
bluetooth = {
|
||||||
|
@ -106,11 +130,72 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# nvidia
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
prime = {
|
||||||
|
offload = {
|
||||||
|
enable = true;
|
||||||
|
enableOffloadCmd = true;
|
||||||
|
};
|
||||||
|
intelBusId = "PCI:0:2:0";
|
||||||
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
|
};
|
||||||
|
nvidiaPersistenced = true;
|
||||||
|
modesetting.enable = true;
|
||||||
|
powerManagement.enable = false;
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
open = false;
|
||||||
|
nvidiaSettings = true;
|
||||||
|
# FIXME issue with stable nvidia driver and latest linux kernel
|
||||||
|
# use mkDriver to specify newer nvidia driver that is compatible
|
||||||
|
# see: https://github.com/NixOS/nixpkgs/issues/341844#issuecomment-2351075413
|
||||||
|
# and https://discourse.nixos.org/t/builder-for-nvidia-x11-550-78-6-10-drv-failed-with-exit-code-2/49360/32
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||||||
|
version = "555.58.02";
|
||||||
|
sha256_64bit = "sha256-xctt4TPRlOJ6r5S54h5W6PT6/3Zy2R4ASNFPu8TSHKM=";
|
||||||
|
sha256_aarch64 = "sha256-wb20isMrRg8PeQBU96lWJzBMkjfySAUaqt4EgZnhyF8=";
|
||||||
|
openSha256 = "sha256-8hyRiGB+m2hL3c9MDA/Pon+Xl6E788MZ50WrrAGUVuY=";
|
||||||
|
settingsSha256 = "sha256-ZpuVZybW6CFN/gz9rx+UJvQ715FZnAOYfHn5jt5Z2C8=";
|
||||||
|
persistencedSha256 = "sha256-a1D7ZZmcKFWfPjjH1REqPM5j/YLWKnbkP9qfRyIyxAw=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# https://bbs.archlinux.org/viewtopic.php?id=297276 for NVreg_EnableGpuFirmware fix
|
||||||
|
# https://discourse.nixos.org/t/how-to-use-nvidia-prime-offload-to-run-the-x-server-on-the-integrated-board/9091/15
|
||||||
|
# for udev rules to disable dGPU when not in use
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options nvidia NVreg_DynamicPowerManagement=0x02
|
||||||
|
options nvidia NVreg_EnableGpuFirmware=0
|
||||||
|
'';
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
# Remove NVIDIA USB xHCI Host Controller devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
|
||||||
|
|
||||||
|
# Remove NVIDIA USB Type-C UCSI devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{remove}="1"
|
||||||
|
|
||||||
|
# Remove NVIDIA Audio devices, if present
|
||||||
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{remove}="1"
|
||||||
|
|
||||||
|
# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
|
||||||
|
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
|
||||||
|
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"
|
||||||
|
|
||||||
|
# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
|
||||||
|
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
|
||||||
|
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
|
||||||
|
'';
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "citadel";
|
hostName = "citadel";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
enableIPv6 = false;
|
enableIPv6 = false;
|
||||||
nameservers = ["10.0.10.60" "8.8.8.8"];
|
nameservers = ["${pieholeIp}" "${gatewayIp}" "8.8.8.8"];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.libinput.enable = true;
|
services.libinput.enable = true;
|
||||||
|
|
|
@ -37,12 +37,19 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.rsync
|
pkgs.rsync
|
||||||
pkgs.curl
|
pkgs.curl
|
||||||
pkgs.just
|
pkgs.just
|
||||||
pkgs.git
|
pkgs.git
|
||||||
pkgs.vim
|
pkgs.vim
|
||||||
|
pkgs.linuxKernel.packages.linux_zen.cpupower
|
||||||
];
|
];
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{ pkgs, lib, inputs, config, ... }:
|
{
|
||||||
|
lib,
|
||||||
let
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
secretsDirectory = builtins.toString inputs.nix-secrets;
|
secretsDirectory = builtins.toString inputs.nix-secrets;
|
||||||
secretsFile = "${secretsDirectory}/secrets.yaml";
|
secretsFile = "${secretsDirectory}/secrets.yaml";
|
||||||
hasOptinPersistence = config.environment.persistence ? "/persist";
|
hasOptinPersistence = config.environment.persistence ? "/persist";
|
||||||
hostname = config.networking.hostName;
|
in {
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
];
|
];
|
||||||
|
@ -17,7 +17,7 @@ in
|
||||||
validateSopsFiles = false;
|
validateSopsFiles = false;
|
||||||
|
|
||||||
age = {
|
age = {
|
||||||
sshKeyPaths = [ "${lib.optionalString hasOptinPersistence "/persist"}/etc/ssh/ssh_host_ed25519_key" ];
|
sshKeyPaths = ["${lib.optionalString hasOptinPersistence "/persist"}/etc/ssh/ssh_host_ed25519_key"];
|
||||||
};
|
};
|
||||||
secrets = {
|
secrets = {
|
||||||
"passwords/root".neededForUsers = true;
|
"passwords/root".neededForUsers = true;
|
||||||
|
|
|
@ -12,12 +12,12 @@
|
||||||
windowManager.dwm = {
|
windowManager.dwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.dwm.overrideAttrs {
|
package = pkgs.dwm.overrideAttrs {
|
||||||
#src = /home/sam/.local/share/src/dwm;
|
# src = /home/sam/.local/share/src/dwm;
|
||||||
src = pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
url = "https://git.bitlab21.com/sam/dwm";
|
url = "https://git.bitlab21.com/sam/dwm";
|
||||||
rev = "49dd30c0d9970ce480ada51dfcaac1a071804c64";
|
rev = "3e0601b29d879e589703239e064f0baaabb3474b";
|
||||||
sha256 = "0ywca25a1pdjvb4cgv5gx36x3yd6922pqvn9a5f60lcn5fv2a96n";
|
sha256 = "sha256-7Hq0vo6YnXKhEUdKjvaAeKodq2l8wwJRzCYJfdHDNMQ=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
# Steam
|
# Steam
|
||||||
mangohud
|
mangohud
|
||||||
gamemode
|
gamemode
|
||||||
gamescope
|
|
||||||
|
|
||||||
# WINE
|
# WINE
|
||||||
wine
|
wine
|
||||||
|
@ -41,11 +40,9 @@
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.gamemode.enable = true;
|
programs.gamemode.enable = true;
|
||||||
programs.gamescope.enable = true;
|
|
||||||
|
|
||||||
nixpkgs.config.packageOverrides = pkgs: {
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
steam = pkgs.steam.override {
|
steam = pkgs.steam.override {
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
# Using non-Nix Python Packages with Binaries on NixOS https://github.com/mcdonc/.nixconfig/blob/e7885ad18b7980f221e59a21c91b8eb02795b541/videos/pydev/script.rst
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
programs.nix-ld.libraries = with pkgs; [
|
||||||
|
zlib # numpy
|
||||||
|
libgcc # sqlalchemy
|
||||||
|
expat # pyosmium
|
||||||
|
# that's where the shared libs go, you can find which one you need using
|
||||||
|
# nix-locate --top-level libstdc++.so.6 (replace this with your lib)
|
||||||
|
# ^ this requires `nix-index` pkg
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
NIX_LD_LIBRARY_PATH="/run/current-system/sw/share/nix-ld/lib";
|
||||||
|
NIX_LD="/run/current-system/sw/share/nix-ld/lib/ld.so";
|
||||||
|
LD_LIBRARY_PATH=lib.mkForce "$NIX_LD_LIBRARY_PATH";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,274 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
configVars,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
||||||
|
containerName = "bd-worker";
|
||||||
|
containerIp = configVars.networking.addresses.bd-worker.ip;
|
||||||
|
mongodbIp = configVars.networking.addresses.mongodb.ip;
|
||||||
|
mongodbPort = toString configVars.networking.addresses.mongodb.port;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
|
postgresIp = configVars.networking.addresses.postgres.ip;
|
||||||
|
postgresPort = toString configVars.networking.addresses.postgres.port;
|
||||||
|
bitcoindIp = configVars.networking.addresses.bitcoin-node.ip;
|
||||||
|
bitcoindPort = toString configVars.networking.addresses.bitcoin-node.services.bitcoind.port;
|
||||||
|
|
||||||
|
#secrets
|
||||||
|
sshKeyFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."ssh_keys/baseddata-models-access/id_ed25519".path;
|
||||||
|
notifybotUsername = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."comms/xmpp/notifybot/username".path;
|
||||||
|
notifybotPwd = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."comms/xmpp/notifybot/password".path;
|
||||||
|
recipientUsername = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."comms/xmpp/mrsu/username".path;
|
||||||
|
mongoclientAuth = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/mongodb/baseddata/auth".path;
|
||||||
|
mongoclientUser = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/mongodb/baseddata/username".path;
|
||||||
|
mongoclientPassword = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/mongodb/baseddata/password".path;
|
||||||
|
postgresUser = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/baseddata/user_username".path;
|
||||||
|
postgresPassword = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/baseddata/user_password".path;
|
||||||
|
bitcoindRPCUsername = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/username".path;
|
||||||
|
bitcoindRPCPassword= lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-rpcpassword-public".path;
|
||||||
|
baseddataEnv = "dev";
|
||||||
|
in {
|
||||||
|
sops.secrets = {
|
||||||
|
"ssh_keys/baseddata-models-access/id_ed25519" = {};
|
||||||
|
"comms/xmpp/notifybot/username" = {};
|
||||||
|
"comms/xmpp/notifybot/password" = {};
|
||||||
|
"comms/xmpp/mrsu/username" = {};
|
||||||
|
"software/mongodb/baseddata/auth" = {};
|
||||||
|
"software/mongodb/baseddata/username" = {};
|
||||||
|
"software/mongodb/baseddata/password" = {};
|
||||||
|
"software/postgres/baseddata/user_password" = {};
|
||||||
|
"software/postgres/baseddata/user_username" = {};
|
||||||
|
"software/bitcoind/username" = {};
|
||||||
|
"software/bitcoind/bitcoin-rpcpassword-public" = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.persistence."/persist" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/var/lib/nixos-containers/${containerName}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.nat.enable = true;
|
||||||
|
networking.nat.internalInterfaces = ["ve-+"];
|
||||||
|
networking.nat.externalInterface = "br0";
|
||||||
|
|
||||||
|
containers.${containerName} = {
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
hostBridge = "br0";
|
||||||
|
nixpkgs = pkgs.path;
|
||||||
|
bindMounts = {
|
||||||
|
"/root/.ssh/id_ed25519" = {
|
||||||
|
hostPath = "${sshKeyFile}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/notifybotUsername" = {
|
||||||
|
hostPath = "${notifybotUsername}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/notifybotPassword" = {
|
||||||
|
hostPath = "${notifybotPwd}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/recipientUsername" = {
|
||||||
|
hostPath = "${recipientUsername}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/mongoclientAuth" = {
|
||||||
|
hostPath = "${mongoclientAuth}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/mongoclientUser" = {
|
||||||
|
hostPath = "${mongoclientUser}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/mongoclientPassword" = {
|
||||||
|
hostPath = "${mongoclientPassword}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/postgresPassword" = {
|
||||||
|
hostPath = "${postgresPassword}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/postgresUser" = {
|
||||||
|
hostPath = "${postgresUser}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/bitcoindRPCPassword" = {
|
||||||
|
hostPath = "${bitcoindRPCPassword}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/run/secrets/bitcoindRPCUsername" = {
|
||||||
|
hostPath = "${bitcoindRPCUsername}";
|
||||||
|
isReadOnly = true;
|
||||||
|
};
|
||||||
|
"/media/baseddata-data" = {
|
||||||
|
hostPath = "/media/main-ssd/baseddata-data";
|
||||||
|
isReadOnly = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking = {
|
||||||
|
defaultGateway = "${gatewayIp}";
|
||||||
|
interfaces.eth0.ipv4.addresses = [
|
||||||
|
{
|
||||||
|
"address" = "${containerIp}";
|
||||||
|
"prefixLength" = 24;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [
|
||||||
|
4200
|
||||||
|
];
|
||||||
|
};
|
||||||
|
useHostResolvConf = lib.mkForce false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.resolved.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.vim
|
||||||
|
pkgs.git
|
||||||
|
pkgs.python311
|
||||||
|
pkgs.poetry
|
||||||
|
pkgs.aria2
|
||||||
|
pkgs.osmctools
|
||||||
|
pkgs.osmium-tool
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
BASEDDATA_ENVIRONMENT = "dev";
|
||||||
|
NIX_LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||||
|
NIX_LD = "/run/current-system/sw/share/nix-ld/lib/ld.so";
|
||||||
|
LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.baseddata-deploy-service = {
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
after = ["network.target"];
|
||||||
|
description = "Initiates deployment of application and builds python environment using Poetry";
|
||||||
|
environment = {
|
||||||
|
BASEDDATA_ENVIRONMENT = "${baseddataEnv}";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = pkgs.writeShellScript "baseddata-deploy-service" ''
|
||||||
|
GITCMD="${pkgs.openssh}/bin/ssh -i /root/.ssh/id_ed25519"
|
||||||
|
if [ ! -d "/srv/baseddata-models" ]; then
|
||||||
|
GIT_SSH_COMMAND=$GITCMD ${pkgs.git}/bin/git clone --branch $BASEDDATA_ENVIRONMENT git@git.bitlab21.com:sam/baseddata-models.git /srv/baseddata-models
|
||||||
|
else
|
||||||
|
cd /srv/baseddata-models
|
||||||
|
GIT_SSH_COMMAND=$GITCMD ${pkgs.git}/bin/git stash --include-untracked
|
||||||
|
GIT_SSH_COMMAND=$GITCMD ${pkgs.git}/bin/git pull
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /srv/baseddata-models
|
||||||
|
mkdir .venv
|
||||||
|
${pkgs.poetry}/bin/poetry install
|
||||||
|
'';
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.baseddata-prefect-server = {
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
after = ["baseddata-deploy-service.target"];
|
||||||
|
description = "Initates the Prefect server";
|
||||||
|
environment = {
|
||||||
|
NIX_LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||||
|
NIX_LD = "/run/current-system/sw/share/nix-ld/lib/ld.so";
|
||||||
|
LD_LIBRARY_PATH = "/run/current-system/sw/share/nix-ld/lib";
|
||||||
|
PREFECT_API_URL = "http://${containerIp}:4200/api";
|
||||||
|
BASEDDATA_ENVIRONMENT = "${baseddataEnv}";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
WorkingDirectory = "/srv/baseddata-models";
|
||||||
|
ExecStart = pkgs.writeShellScript "baseddata-prefect-server" ''
|
||||||
|
|
||||||
|
# run prefect server
|
||||||
|
.venv/bin/prefect server start --host 0.0.0.0
|
||||||
|
|
||||||
|
'';
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.baseddata-serve-flows = {
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
after = ["baseddata-prefect-server.target"];
|
||||||
|
description = "Serves the Prefect flows";
|
||||||
|
environment = {
|
||||||
|
PREFECT_API_URL = "http://${containerIp}:4200/api";
|
||||||
|
BASEDDATA_ENVIRONMENT = "${baseddataEnv}";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
Environment = "PATH=/run/current-system/sw/bin/";
|
||||||
|
WorkingDirectory = "/srv/baseddata-models";
|
||||||
|
ExecStartPre = "${pkgs.coreutils}/bin/timeout 120 ${pkgs.bash}/bin/bash -c 'until ${pkgs.netcat-openbsd}/bin/nc -z ${containerIp} 4200; do sleep 3; done'";
|
||||||
|
ExecStart = pkgs.writeShellScript "baseddata-serve-flows" ''
|
||||||
|
|
||||||
|
# set prefect environment variables
|
||||||
|
.venv/bin/prefect variable set "xmpp_jid" $(cat /run/secrets/notifybotUsername) --overwrite
|
||||||
|
.venv/bin/prefect variable set "xmpp_password" $(cat /run/secrets/notifybotPassword) --overwrite
|
||||||
|
.venv/bin/prefect variable set "xmpp_recipient" $(cat /run/secrets/recipientUsername) --overwrite
|
||||||
|
.venv/bin/prefect variable set "mongoclient_auth" $(cat /run/secrets/mongoclientAuth) --overwrite
|
||||||
|
.venv/bin/prefect variable set "mongoclient_host" "${mongodbIp}:${mongodbPort}" --overwrite
|
||||||
|
.venv/bin/prefect variable set "mongoclient_user" $(cat /run/secrets/mongoclientUser) --overwrite
|
||||||
|
.venv/bin/prefect variable set "mongoclient_pwd" $(cat /run/secrets/mongoclientPassword) --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_host" ${postgresIp} --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_port" ${postgresPort} --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_user" $(cat /run/secrets/postgresUser) --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_pwd" $(cat /run/secrets/postgresPassword) --overwrite
|
||||||
|
.venv/bin/prefect variable set "bitcoin_rpc_password" $(cat /run/secrets/bitcoindRPCPassword) --overwrite
|
||||||
|
.venv/bin/prefect variable set "bitcoin_rpc_username" $(cat /run/secrets/bitcoindRPCUsername) --overwrite
|
||||||
|
.venv/bin/prefect variable set "bitcoind_ip" ${bitcoindIp} --overwrite
|
||||||
|
.venv/bin/prefect variable set "bitcoind_port" ${bitcoindPort} --overwrite
|
||||||
|
|
||||||
|
.venv/bin/prefect variable set "osm_dir" "/media/baseddata-data/osm" --overwrite
|
||||||
|
.venv/bin/prefect variable set "wdpa_dir" "/media/baseddata-data/wdpa" --overwrite
|
||||||
|
.venv/bin/prefect variable set "mongo_db_name" "baseddata" --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_dbname" "baseddata" --overwrite
|
||||||
|
.venv/bin/prefect variable set "postgres_schema" "models_final" --overwrite
|
||||||
|
.venv/bin/prefect variable set "unique_key" "row_uuid" --overwrite
|
||||||
|
|
||||||
|
# serve flows
|
||||||
|
.venv/bin/python automation/flows/serve-flows.py
|
||||||
|
'';
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nix-ld.enable = true;
|
||||||
|
programs.nix-ld.libraries = with pkgs; [
|
||||||
|
zlib
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.ssh.knownHosts = {
|
||||||
|
"git.bitlab21.com" = {
|
||||||
|
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIALNd2BGf64heYjWT9yt0fVmngepiHRIMsL7au/MRteg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.root = {
|
||||||
|
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,16 +1,18 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
configVars,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
||||||
container_name = "jellyfin";
|
containerName = "jellyfin";
|
||||||
container_ip = "10.0.10.6";
|
containerIp = configVars.networking.addresses.jellyfin.ip;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
in {
|
in {
|
||||||
environment.persistence."/persist" = {
|
environment.persistence."/persist" = {
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
directories = [
|
directories = [
|
||||||
"/var/lib/nixos-containers/${container_name}"
|
"/var/lib/nixos-containers/${containerName}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,7 +20,7 @@ in {
|
||||||
networking.nat.internalInterfaces = ["ve-+"];
|
networking.nat.internalInterfaces = ["ve-+"];
|
||||||
networking.nat.externalInterface = "br0";
|
networking.nat.externalInterface = "br0";
|
||||||
|
|
||||||
containers.${container_name} = {
|
containers.${containerName} = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
privateNetwork = true;
|
privateNetwork = true;
|
||||||
hostBridge = "br0";
|
hostBridge = "br0";
|
||||||
|
@ -40,17 +42,17 @@ in {
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
networking = {
|
networking = {
|
||||||
defaultGateway = "10.0.10.1";
|
defaultGateway = "${gatewayIp}";
|
||||||
interfaces.eth0.ipv4.addresses = [
|
interfaces.eth0.ipv4.addresses = [
|
||||||
{
|
{
|
||||||
"address" = "${container_ip}";
|
"address" = "${containerIp}";
|
||||||
"prefixLength" = 24;
|
"prefixLength" = 24;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
5432
|
8096
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
useHostResolvConf = lib.mkForce false;
|
useHostResolvConf = lib.mkForce false;
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
configVars,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
mongodbPasswordPath = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/mongodb/baseddata/password".path;
|
||||||
|
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
||||||
|
containerName = "mongodb";
|
||||||
|
containerIp = configVars.networking.addresses.mongodb.ip;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
|
in {
|
||||||
|
sops.secrets = {
|
||||||
|
"software/postgres/postgres/password" = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.persistence."/persist" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/var/lib/nixos-containers/${containerName}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.nat.enable = true;
|
||||||
|
networking.nat.internalInterfaces = ["ve-+"];
|
||||||
|
networking.nat.externalInterface = "br0";
|
||||||
|
|
||||||
|
containers.${containerName} = {
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
hostBridge = "br0";
|
||||||
|
nixpkgs = pkgs.path;
|
||||||
|
bindMounts = {
|
||||||
|
# "/var/db/mongodb" = {
|
||||||
|
# hostPath = "/media/main-ssd/mongodb";
|
||||||
|
# isReadOnly = false;
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking = {
|
||||||
|
defaultGateway = "${gatewayIp}";
|
||||||
|
interfaces.eth0.ipv4.addresses = [
|
||||||
|
{
|
||||||
|
"address" = "${containerIp}";
|
||||||
|
"prefixLength" = 24;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [
|
||||||
|
27017
|
||||||
|
];
|
||||||
|
};
|
||||||
|
useHostResolvConf = lib.mkForce false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.resolved.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
mongosh
|
||||||
|
];
|
||||||
|
|
||||||
|
# allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfreePredicate = let
|
||||||
|
whitelist = map lib.getName [
|
||||||
|
pkgs.mongodb
|
||||||
|
];
|
||||||
|
in
|
||||||
|
pkg: builtins.elem (lib.getName pkg) whitelist;
|
||||||
|
|
||||||
|
services.mongodb = {
|
||||||
|
enable = true;
|
||||||
|
# enableAuth = true;
|
||||||
|
# initialRootPassword = mongodbPasswordPath;
|
||||||
|
bind_ip = "0.0.0.0";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.root = {
|
||||||
|
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
configVars,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
@ -9,8 +10,11 @@
|
||||||
bitcoin-rpcpassword-public = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-rpcpassword-public".path;
|
bitcoin-rpcpassword-public = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-rpcpassword-public".path;
|
||||||
bitcoin-HMAC-privileged = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-HMAC-privileged".path;
|
bitcoin-HMAC-privileged = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-HMAC-privileged".path;
|
||||||
bitcoin-HMAC-public = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-HMAC-public".path;
|
bitcoin-HMAC-public = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/bitcoind/bitcoin-HMAC-public".path;
|
||||||
container_name = "bitcoin-node";
|
containerName = "bitcoin-node";
|
||||||
container_ip = "10.0.10.4";
|
containerIp = configVars.networking.addresses.bitcoin-node.ip;
|
||||||
|
mempoolPort = configVars.networking.addresses.bitcoin-node.services.mempool.port;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
|
allowip = configVars.networking.addresses.bitcoin-node.services.bitcoind.allowip;
|
||||||
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
||||||
in {
|
in {
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
|
@ -23,7 +27,7 @@ in {
|
||||||
environment.persistence."/persist" = {
|
environment.persistence."/persist" = {
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
directories = [
|
directories = [
|
||||||
"/var/lib/nixos-containers/${container_name}"
|
"/var/lib/nixos-containers/${containerName}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,7 +35,7 @@ in {
|
||||||
networking.nat.internalInterfaces = ["ve-+"];
|
networking.nat.internalInterfaces = ["ve-+"];
|
||||||
networking.nat.externalInterface = "br0";
|
networking.nat.externalInterface = "br0";
|
||||||
|
|
||||||
containers.${container_name} = {
|
containers.${containerName} = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
privateNetwork = true;
|
privateNetwork = true;
|
||||||
hostBridge = "br0";
|
hostBridge = "br0";
|
||||||
|
@ -85,8 +89,8 @@ in {
|
||||||
jq
|
jq
|
||||||
];
|
];
|
||||||
networking = {
|
networking = {
|
||||||
defaultGateway = "10.0.10.1";
|
defaultGateway = "${gatewayIp}";
|
||||||
interfaces.eth0.ipv4.addresses = [ { "address" = "${container_ip}"; "prefixLength" = 24; } ];
|
interfaces.eth0.ipv4.addresses = [ { "address" = "${containerIp}"; "prefixLength" = 24; } ];
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
|
@ -120,7 +124,7 @@ in {
|
||||||
rpc = {
|
rpc = {
|
||||||
address = "0.0.0.0";
|
address = "0.0.0.0";
|
||||||
threads = 6;
|
threads = 6;
|
||||||
allowip = ["10.0.0.0/8"];
|
allowip = allowip;
|
||||||
users = let
|
users = let
|
||||||
name = "bitcoin";
|
name = "bitcoin";
|
||||||
in {
|
in {
|
||||||
|
@ -143,7 +147,7 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
electrumServer = "electrs";
|
electrumServer = "electrs";
|
||||||
frontend = {
|
frontend = {
|
||||||
port = 4080;
|
port = mempoolPort;
|
||||||
address = "0.0.0.0";
|
address = "0.0.0.0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,13 +2,16 @@
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
configVars,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
postgresPasswordPath = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/postgres/password".path;
|
postgresPasswordPath = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/postgres/password".path;
|
||||||
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
pubKeys = lib.filesystem.listFilesRecursive ../../users/keys;
|
||||||
container_name = "postgres";
|
containerName = "postgres";
|
||||||
container_ip = "10.0.10.5";
|
containerIp = configVars.networking.addresses.postgres.ip;
|
||||||
|
subnetIp = configVars.networking.addresses.subnet.ip;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
in {
|
in {
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"software/postgres/postgres/password" = {
|
"software/postgres/postgres/password" = {
|
||||||
|
@ -18,7 +21,7 @@ in {
|
||||||
environment.persistence."/persist" = {
|
environment.persistence."/persist" = {
|
||||||
hideMounts = true;
|
hideMounts = true;
|
||||||
directories = [
|
directories = [
|
||||||
"/var/lib/nixos-containers/${container_name}"
|
"/var/lib/nixos-containers/${containerName}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,7 +29,7 @@ in {
|
||||||
networking.nat.internalInterfaces = ["ve-+"];
|
networking.nat.internalInterfaces = ["ve-+"];
|
||||||
networking.nat.externalInterface = "br0";
|
networking.nat.externalInterface = "br0";
|
||||||
|
|
||||||
containers.${container_name} = {
|
containers.${containerName} = {
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
privateNetwork = true;
|
privateNetwork = true;
|
||||||
hostBridge = "br0";
|
hostBridge = "br0";
|
||||||
|
@ -44,10 +47,10 @@ in {
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
networking = {
|
networking = {
|
||||||
defaultGateway = "10.0.10.1";
|
defaultGateway = "${gatewayIp}";
|
||||||
interfaces.eth0.ipv4.addresses = [
|
interfaces.eth0.ipv4.addresses = [
|
||||||
{
|
{
|
||||||
"address" = "${container_ip}";
|
"address" = "${containerIp}";
|
||||||
"prefixLength" = 24;
|
"prefixLength" = 24;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -71,6 +74,7 @@ in {
|
||||||
enableJIT = true;
|
enableJIT = true;
|
||||||
package = pkgs.postgresql_16;
|
package = pkgs.postgresql_16;
|
||||||
extraPlugins = with pkgs.postgresql_16.pkgs; [ postgis ];
|
extraPlugins = with pkgs.postgresql_16.pkgs; [ postgis ];
|
||||||
|
enableTCPIP = true;
|
||||||
settings = {
|
settings = {
|
||||||
max_worker_processes = "12";
|
max_worker_processes = "12";
|
||||||
max_parallel_workers = "8";
|
max_parallel_workers = "8";
|
||||||
|
@ -82,8 +86,11 @@ in {
|
||||||
maintenance_work_mem = "64MB";
|
maintenance_work_mem = "64MB";
|
||||||
};
|
};
|
||||||
authentication = pkgs.lib.mkOverride 10 ''
|
authentication = pkgs.lib.mkOverride 10 ''
|
||||||
#type database DBuser auth-method
|
#type database DBuser origin-address auth-method
|
||||||
local all all trust
|
local all postgres peer
|
||||||
|
host all all ${subnetIp}/24 scram-sha-256
|
||||||
|
local replication all peer
|
||||||
|
host replication all 127.0.0.1/32 scram-sha-256
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
|
pkgs,
|
||||||
|
configVars,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
serverIp = configVars.networking.addresses.merlin.ip;
|
||||||
|
in {
|
||||||
services = {
|
services = {
|
||||||
udev.packages = [pkgs.sane-airscan];
|
udev.packages = [pkgs.sane-airscan];
|
||||||
printing = {
|
printing = {
|
||||||
|
@ -16,7 +22,7 @@
|
||||||
sane = {
|
sane = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraBackends = [pkgs.sane-airscan];
|
extraBackends = [pkgs.sane-airscan];
|
||||||
netConf = "10.0.10.2";
|
netConf = "${serverIp}";
|
||||||
};
|
};
|
||||||
printers = {
|
printers = {
|
||||||
ensurePrinters = [
|
ensurePrinters = [
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
configVars,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
|
@ -10,6 +11,7 @@
|
||||||
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/sam".path;
|
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/sam".path;
|
||||||
secretsDirectory = builtins.toString inputs.nix-secrets;
|
secretsDirectory = builtins.toString inputs.nix-secrets;
|
||||||
secretsFile = "${secretsDirectory}/secrets.yaml";
|
secretsFile = "${secretsDirectory}/secrets.yaml";
|
||||||
|
baseddataPostgresIp = configVars.networking.addresses.postgres.ip;
|
||||||
username = "sam";
|
username = "sam";
|
||||||
in {
|
in {
|
||||||
users.users.${username} = {
|
users.users.${username} = {
|
||||||
|
@ -27,7 +29,7 @@ in {
|
||||||
"podman"
|
"podman"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
services.tailscale.enable = true;
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"passwords/${username}" = {
|
"passwords/${username}" = {
|
||||||
sopsFile = "${secretsFile}";
|
sopsFile = "${secretsFile}";
|
||||||
|
@ -55,6 +57,8 @@ in {
|
||||||
"software/postgres/bitcoin/password" = {};
|
"software/postgres/bitcoin/password" = {};
|
||||||
"software/postgres/bitcoin/ip" = {};
|
"software/postgres/bitcoin/ip" = {};
|
||||||
"software/postgres/bitcoin/username" = {};
|
"software/postgres/bitcoin/username" = {};
|
||||||
|
"software/postgres/baseddata/user_password" = {};
|
||||||
|
"software/postgres/baseddata/user_username" = {};
|
||||||
"software/zotero/username" = {};
|
"software/zotero/username" = {};
|
||||||
"software/zotero/password" = {};
|
"software/zotero/password" = {};
|
||||||
"software/zotero/guid" = {};
|
"software/zotero/guid" = {};
|
||||||
|
@ -85,6 +89,10 @@ in {
|
||||||
{
|
{
|
||||||
"url": "postgresql://${config.sops.placeholder."software/postgres/bitcoin/username"}:${config.sops.placeholder."software/postgres/bitcoin/password"}@${config.sops.placeholder."software/postgres/bitcoin/ip"}/bitcoin",
|
"url": "postgresql://${config.sops.placeholder."software/postgres/bitcoin/username"}:${config.sops.placeholder."software/postgres/bitcoin/password"}@${config.sops.placeholder."software/postgres/bitcoin/ip"}/bitcoin",
|
||||||
"name": "bitcoin"
|
"name": "bitcoin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "postgresql://${config.sops.placeholder."software/postgres/baseddata/user_username"}:${config.sops.placeholder."software/postgres/baseddata/user_password"}@${baseddataPostgresIp}/baseddata",
|
||||||
|
"name": "baseddata"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
'';
|
'';
|
||||||
|
@ -99,23 +107,23 @@ in {
|
||||||
target: dev
|
target: dev
|
||||||
outputs:
|
outputs:
|
||||||
dev:
|
dev:
|
||||||
dbname: dev_baseddata_models
|
dbname: dev_baseddata
|
||||||
host: ${config.sops.placeholder."software/postgres/baseddata_models/ip"}
|
host: ${baseddataPostgresIp}
|
||||||
pass: '${config.sops.placeholder."software/postgres/baseddata_models/password"}'
|
pass: '${config.sops.placeholder."software/postgres/baseddata/user_password"}'
|
||||||
port: 5432
|
port: 5432
|
||||||
schema: models
|
schema: models
|
||||||
threads: 6
|
threads: 6
|
||||||
type: postgres
|
type: postgres
|
||||||
user: ${config.sops.placeholder."software/postgres/baseddata_models/username"}
|
user: ${config.sops.placeholder."software/postgres/baseddata/user_username"}
|
||||||
prod:
|
prod:
|
||||||
dbname: baseddata_models
|
dbname: baseddata
|
||||||
host: ${config.sops.placeholder."software/postgres/baseddata_models/ip"}
|
host: ${baseddataPostgresIp}
|
||||||
pass: '${config.sops.placeholder."software/postgres/baseddata_models/password"}'
|
pass: '${config.sops.placeholder."software/postgres/baseddata/user_password"}'
|
||||||
port: 5432
|
port: 5432
|
||||||
schema: models
|
schema: models
|
||||||
threads: 6
|
threads: 6
|
||||||
type: postgres
|
type: postgres
|
||||||
user: ${config.sops.placeholder."software/postgres/baseddata_models/username"}
|
user: ${config.sops.placeholder."software/postgres/baseddata/user_username"}
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -152,8 +160,4 @@ in {
|
||||||
${username} = import ../../../../home/${hostname}.nix;
|
${username} = import ../../../../home/${hostname}.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
#inputs.sqlfmt.packages.x86_64-linux.sqlfmt
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "nebula";
|
hostName = "merlin";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
enableIPv6 = false;
|
enableIPv6 = false;
|
||||||
};
|
};
|
|
@ -2,6 +2,7 @@
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
configVars,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
# Disko setup
|
# Disko setup
|
||||||
|
@ -14,6 +15,10 @@
|
||||||
else "/dev/root_vg/root";
|
else "/dev/root_vg/root";
|
||||||
user = "sam";
|
user = "sam";
|
||||||
impermanence = true;
|
impermanence = true;
|
||||||
|
pieholeIp = configVars.networking.addresses.piehole.ip;
|
||||||
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
|
semitaIp = configVars.networking.addresses.semita.ip;
|
||||||
|
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
# Create users for this host
|
# Create users for this host
|
||||||
|
@ -50,6 +55,9 @@ in {
|
||||||
../common/optional/nixos-containers/nix-bitcoin.nix
|
../common/optional/nixos-containers/nix-bitcoin.nix
|
||||||
../common/optional/nixos-containers/postgres.nix
|
../common/optional/nixos-containers/postgres.nix
|
||||||
../common/optional/nixos-containers/jellyfin.nix
|
../common/optional/nixos-containers/jellyfin.nix
|
||||||
|
../common/optional/nixos-containers/baseddata-worker.nix
|
||||||
|
../common/optional/nixos-containers/mongodb.nix
|
||||||
|
../common/optional/nix-ld.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
fileSystems."/media/main-ssd" = {
|
fileSystems."/media/main-ssd" = {
|
||||||
|
@ -91,6 +99,11 @@ in {
|
||||||
vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};
|
vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
swapDevices = [ {
|
||||||
|
device = "/.swapvol/swapfile";
|
||||||
|
size = 32*1024;
|
||||||
|
} ];
|
||||||
|
|
||||||
hardware.opengl = {
|
hardware.opengl = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
|
@ -107,8 +120,8 @@ in {
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "semita";
|
hostName = "semita";
|
||||||
nameservers = ["10.0.10.60" "10.0.10.1" "8.8.8.8"];
|
nameservers = ["${pieholeIp}" "${gatewayIp}" "8.8.8.8"];
|
||||||
defaultGateway = "10.0.10.1";
|
defaultGateway = "${gatewayIp}";
|
||||||
useDHCP = false;
|
useDHCP = false;
|
||||||
bridges = {
|
bridges = {
|
||||||
br0 = {
|
br0 = {
|
||||||
|
@ -118,7 +131,7 @@ in {
|
||||||
interfaces.br0 = {
|
interfaces.br0 = {
|
||||||
ipv4.addresses = [
|
ipv4.addresses = [
|
||||||
{
|
{
|
||||||
"address" = "10.0.10.3";
|
"address" = "${semitaIp}";
|
||||||
"prefixLength" = 24;
|
"prefixLength" = 24;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,37 +1,52 @@
|
||||||
{ inputs, config, lib, pkgs, outputs, ... }:
|
{
|
||||||
let
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
configVars,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
# Disko setup
|
# Disko setup
|
||||||
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
||||||
dev = "/dev/sda"; # depends on target hardware
|
dev = "/dev/sda"; # depends on target hardware
|
||||||
encrypted = false; # currrently only applies to btrfs
|
encrypted = false; # currrently only applies to btrfs
|
||||||
btrfsMountDevice = if encrypted then "/dev/mapper/crypted" else "/dev/root_vg/root";
|
btrfsMountDevice =
|
||||||
|
if encrypted
|
||||||
|
then "/dev/mapper/crypted"
|
||||||
|
else "/dev/root_vg/root";
|
||||||
impermanence = true;
|
impermanence = true;
|
||||||
in
|
pieholeIp = configVars.networking.addresses.piehole.ip;
|
||||||
{
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
||||||
imports =
|
in {
|
||||||
[
|
imports = [
|
||||||
# Create users for this host
|
# Create users for this host
|
||||||
../common/users/media
|
../common/users/media
|
||||||
|
|
||||||
# Disk configuration
|
# Disk configuration
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
(import ../common/disks { device = dev; impermanence = impermanence; fsType = fsType; encrypted = encrypted; })
|
(import ../common/disks {
|
||||||
|
device = dev;
|
||||||
|
impermanence = impermanence;
|
||||||
|
fsType = fsType;
|
||||||
|
encrypted = encrypted;
|
||||||
|
})
|
||||||
|
|
||||||
# Impermanence
|
# Impermanence
|
||||||
(import ../common/disks/btrfs/impermanence.nix { btrfsMountDevice = btrfsMountDevice; lib = lib; })
|
(import ../common/disks/btrfs/impermanence.nix {
|
||||||
|
btrfsMountDevice = btrfsMountDevice;
|
||||||
|
lib = lib;
|
||||||
|
})
|
||||||
|
|
||||||
# Import core options
|
# Import core options
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../common/core
|
../common/core
|
||||||
|
|
||||||
# Import optional options
|
# Import optional options
|
||||||
../common/optional/openssh.nix
|
../common/optional/openssh.nix
|
||||||
../common/optional/persistence.nix
|
../common/optional/persistence.nix
|
||||||
../common/optional/nfs-mounts/media.nix
|
../common/optional/nfs-mounts/media.nix
|
||||||
../common/optional/gaming.nix
|
../common/optional/gaming.nix
|
||||||
../common/optional/printing.nix
|
../common/optional/printing.nix
|
||||||
|
];
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
loader = {
|
||||||
|
@ -40,12 +55,13 @@ in
|
||||||
timeout = 3;
|
timeout = 3;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
boot.kernelParams = [ "i915.enable_psr=0" ];
|
boot.kernelParams = ["i915.enable_psr=0"];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "sparky";
|
hostName = "sparky";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
enableIPv6 = false;
|
enableIPv6 = false;
|
||||||
|
nameservers = ["${pieholeIp}" "${gatewayIp}" "8.8.8.8"];
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg:
|
nixpkgs.config.allowUnfreePredicate = pkg:
|
||||||
|
@ -61,7 +77,7 @@ in
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
videoDrivers = [ "nvidia" ];
|
videoDrivers = ["nvidia"];
|
||||||
displayManager.lightdm.enable = true;
|
displayManager.lightdm.enable = true;
|
||||||
exportConfiguration = true;
|
exportConfiguration = true;
|
||||||
deviceSection = ''
|
deviceSection = ''
|
||||||
|
|
5
justfile
5
justfile
|
@ -14,6 +14,11 @@ rebuild-system:
|
||||||
git add *.nix
|
git add *.nix
|
||||||
sudo nixos-rebuild switch --option eval-cache false --flake .#$(hostname)
|
sudo nixos-rebuild switch --option eval-cache false --flake .#$(hostname)
|
||||||
|
|
||||||
|
# test full system rebuild from flake (stages changes and automatically detects host)
|
||||||
|
rebuild-system-test:
|
||||||
|
git add *.nix
|
||||||
|
sudo nixos-rebuild test --option eval-cache false --flake .#$(hostname)
|
||||||
|
|
||||||
# updates all flake inputs for system
|
# updates all flake inputs for system
|
||||||
update-flake:
|
update-flake:
|
||||||
nix flake update
|
nix flake update
|
||||||
|
|
|
@ -6,4 +6,5 @@ pkgs: {
|
||||||
nsxiv = pkgs.callPackage ./nsxiv {};
|
nsxiv = pkgs.callPackage ./nsxiv {};
|
||||||
sqlfmt = pkgs.callPackage ./sqlfmt {};
|
sqlfmt = pkgs.callPackage ./sqlfmt {};
|
||||||
kunst = pkgs.callPackage ./kunst {};
|
kunst = pkgs.callPackage ./kunst {};
|
||||||
|
set_wm_class = pkgs.callPackage ./set_wm_class {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
{ pkgs ? import <nixpkgs> { }
|
||||||
|
, fetchFromGitea ? pkgs.fetchFromGitea
|
||||||
|
, pkg-config ? pkgs.pkg-config
|
||||||
|
, libX11 ? pkgs.xorg.libX11
|
||||||
|
}:
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "set_wm_class";
|
||||||
|
name = "set_wm_class";
|
||||||
|
|
||||||
|
src = fetchFromGitea {
|
||||||
|
domain = "git.bitlab21.com";
|
||||||
|
owner = "sam";
|
||||||
|
repo = "set_wm_class";
|
||||||
|
rev = "b39fb4b360";
|
||||||
|
sha256 = "sha256-5z2YQof4jbfa1dQll5GLt2OL54UhDKZ4Dzzte7vT0zM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
mv set_wm_class $out/bin
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
|
@ -12,8 +12,8 @@ pkgs.stdenv.mkDerivation {
|
||||||
domain = "git.bitlab21.com";
|
domain = "git.bitlab21.com";
|
||||||
owner = "sam";
|
owner = "sam";
|
||||||
repo = "st";
|
repo = "st";
|
||||||
rev = "31e0ba8cb2086fb12741afc5fc3dfd938ca1f59b";
|
rev = "0e926487c85227aad9eed6667b91e149018014b8";
|
||||||
sha256 = "sha256-dbkXFbNr/lJveMeR7qXo7jGgF5+79S9vqKsLM7XM250=";
|
sha256 = "sha256-aUquoUotLKJDxOISIcx0RUybNvBrytc7+EF7PE1MRJU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
inherit (inputs.nix-secrets)
|
||||||
|
networking
|
||||||
|
email
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue