Compare commits
4 commits
2d311af09f
...
034bc87e37
Author | SHA1 | Date | |
---|---|---|---|
034bc87e37 | |||
83f4b12cfe | |||
159346814b | |||
b342cafde7 |
75 changed files with 2048 additions and 755 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
result
|
result
|
||||||
|
.pre-commit-config.yaml
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
when:
|
|
||||||
- event: [push]
|
|
||||||
- branch: master
|
|
||||||
- path:
|
|
||||||
include: ['**.nix']
|
|
||||||
exclude: ['**.md', 'docs/**', '.woodpecker/*.yaml', '**.js', '**.lua', '**.scss', '**.nu']
|
|
||||||
steps:
|
|
||||||
check:
|
|
||||||
image: nixos/nix
|
|
||||||
commands:
|
|
||||||
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
|
||||||
- nix flake check
|
|
||||||
fmt:
|
|
||||||
image: nixos/nix
|
|
||||||
commands:
|
|
||||||
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
|
||||||
- nix run nixpkgs#alejandra -- -c .
|
|
|
@ -3,25 +3,16 @@ when:
|
||||||
- event: [pull_request_closed]
|
- event: [pull_request_closed]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
attic-push:
|
|
||||||
image: git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic
|
|
||||||
settings:
|
|
||||||
binary_cache: https://cache.flake.sh/
|
|
||||||
binary_cache_public_key: kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o=
|
|
||||||
binary_cache_token:
|
|
||||||
from_secret: kyasshu_access_token
|
|
||||||
script: |
|
|
||||||
attic login kyasshu $PLUGIN_BINARY_CACHE_TOKEN
|
|
||||||
deploy:
|
deploy:
|
||||||
image: nixos/nix
|
image: nixos/nix
|
||||||
commands: |
|
commands: |
|
||||||
echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
||||||
echo "access-tokens = github.com=$${GH_PAT}" >> /etc/nix/nix.conf
|
echo "access-tokens = github.com=$${GH_PAT}" >> /etc/nix/nix.conf
|
||||||
echo 'builders-use-substitutes = true' >> /etc/nix/nix.conf
|
echo 'builders-use-substitutes = true' >> /etc/nix/nix.conf
|
||||||
echo 'substituters = https://cache.flake.sh/kyasshu https://hyprland.cachix.org https://cache.nixos.org https://nix-gaming.cachix.org https://anyrun.cachix.org https://viperml.cachix.org https://nix-community.cachix.org https://cache.nixos.org/' >> /etc/nix/nix.conf
|
echo 'substituters = https://cache.flake.sh/kyasshu https://hyprland.cachix.org https://cache.nixos.org https://nix-gaming.cachix.org https://anyrun.cachix.org https://viperml.cachix.org https://nix-community.cachix.org https://cache.nixos.org/' >> /etc/nix/nix.conf
|
||||||
echo 'trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4= anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s= viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' >> /etc/nix/nix.conf
|
echo 'trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4= anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s= viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' >> /etc/nix/nix.conf
|
||||||
mkdir -p .ssh && cd .ssh
|
mkdir -p .ssh && cd .ssh
|
||||||
echo "$${SSH_KEY}" > forgejo
|
echo "$${SSH_KEY}" > forgejo
|
||||||
chmod 400 forgejo
|
chmod 400 forgejo
|
||||||
nix run github:serokell/deploy-rs -- --ssh-opts="-i forgejo -o StrictHostKeyChecking=no" --skip-checks --targets .#arashi .#kariru .#sakura .#sora .#yuki .#haru .#kaze
|
nix run github:serokell/deploy-rs -- --ssh-opts="-i forgejo -o StrictHostKeyChecking=no" --skip-checks --targets .#arashi .#kariru .#sakura .#sora .#yuki .#haru .#kaze
|
||||||
secrets: [ssh_key, gh_pat]
|
secrets: [ssh_key, gh_pat]
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
+ multiple fully declarative self hosted services (and some containerized ones, with a docker backend)
|
+ multiple fully declarative self hosted services (and some containerized ones, with a docker backend)
|
||||||
+ wayland config for hyprland
|
+ wayland config for hyprland
|
||||||
+ custom packages not found in nixpkgs
|
+ custom packages not found in nixpkgs
|
||||||
|
+ linted & styled with [alejandra](https://github.com/kamadorueda/alejandra), [deadnix](https://github.com/astro/deadnix), and [statix](https://github.com/nerdypepper/statix)
|
||||||
|
|
||||||
## :busts_in_silhouette: Credit
|
## :busts_in_silhouette: Credit
|
||||||
#### people who've inspired me to dive into nix, and i've stolen stuff from (you guys are awesome!)
|
#### people who've inspired me to dive into nix, and i've stolen stuff from (you guys are awesome!)
|
||||||
|
|
131
flake.lock
131
flake.lock
|
@ -157,6 +157,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696426674,
|
||||||
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
|
@ -233,6 +249,24 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_4"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_5"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694529238,
|
"lastModified": 1694529238,
|
||||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
|
@ -247,6 +281,27 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1703887061,
|
||||||
|
"narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"helix": {
|
"helix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"crane": "crane_2",
|
"crane": "crane_2",
|
||||||
|
@ -487,6 +542,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable_2": {
|
"nixpkgs-stable_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1704874635,
|
||||||
|
"narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705957679,
|
"lastModified": 1705957679,
|
||||||
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
|
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
|
||||||
|
@ -583,6 +654,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_7": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1704842529,
|
||||||
|
"narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701174899,
|
"lastModified": 1701174899,
|
||||||
"narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=",
|
"narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=",
|
||||||
|
@ -613,6 +700,28 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": "nixpkgs_7",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1706424699,
|
||||||
|
"narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "pre-commit-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"ags": "ags",
|
"ags": "ags",
|
||||||
|
@ -628,6 +737,7 @@
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nixpkgs": "nixpkgs_6",
|
"nixpkgs": "nixpkgs_6",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"yazi": "yazi"
|
"yazi": "yazi"
|
||||||
}
|
}
|
||||||
|
@ -687,7 +797,7 @@
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-stable": "nixpkgs-stable_2"
|
"nixpkgs-stable": "nixpkgs-stable_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706410821,
|
"lastModified": 1706410821,
|
||||||
|
@ -763,6 +873,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"utils": {
|
"utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
@ -832,8 +957,8 @@
|
||||||
},
|
},
|
||||||
"yazi": {
|
"yazi": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_3",
|
"flake-utils": "flake-utils_4",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_8",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
27
flake.nix
27
flake.nix
|
@ -10,6 +10,7 @@
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
yazi.url = "github:sxyazi/yazi";
|
yazi.url = "github:sxyazi/yazi";
|
||||||
helix.url = "github:helix-editor/helix";
|
helix.url = "github:helix-editor/helix";
|
||||||
|
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
|
||||||
hyprland-plugins = {
|
hyprland-plugins = {
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
inputs.hyprland.follows = "hyprland";
|
inputs.hyprland.follows = "hyprland";
|
||||||
|
@ -39,18 +40,42 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
outputs = {nixpkgs, ...} @ inputs: let
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
pre-commit-hooks,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
checks = {
|
||||||
|
pre-commit-check = pre-commit-hooks.lib.${system}.run {
|
||||||
|
src = ./.;
|
||||||
|
hooks = {
|
||||||
|
stylua.enable = true;
|
||||||
|
eslint.enable = true;
|
||||||
|
statix.enable = true;
|
||||||
|
alejandra.enable = true;
|
||||||
|
deadnix = {
|
||||||
|
enable = true;
|
||||||
|
excludes = ["overlays.nix"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
devShells.${system}.default = pkgs.mkShell {
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
name = "snowflake";
|
name = "snowflake";
|
||||||
|
inherit (self.checks.pre-commit-check) shellHook;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
git
|
git
|
||||||
sops
|
sops
|
||||||
alejandra
|
alejandra
|
||||||
|
statix
|
||||||
|
deadnix
|
||||||
|
stylua
|
||||||
yaml-language-server
|
yaml-language-server
|
||||||
lua-language-server
|
lua-language-server
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
|
|
|
@ -25,3 +25,4 @@ name | description
|
||||||
`yazi` | terminal file manager
|
`yazi` | terminal file manager
|
||||||
`zathura` | pdf viewer
|
`zathura` | pdf viewer
|
||||||
`zellij` | terminal multiplexer
|
`zellij` | terminal multiplexer
|
||||||
|
`zoxide` | a smarter cd command
|
||||||
|
|
26
home/ags/config/.eslintrc.js
Normal file
26
home/ags/config/.eslintrc.js
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
module.exports = {
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
"extends": "eslint:recommended",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
".eslintrc.{js,cjs}"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"sourceType": "script"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": "latest",
|
||||||
|
"sourceType": "module"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
import { App, Utils } from './import.js';
|
import { App, Utils } from "./import.js";
|
||||||
import { Bar } from './js/main.js'
|
import { Bar } from "./js/main.js";
|
||||||
|
|
||||||
|
const scss = App.configDir + "/main.scss";
|
||||||
const scss = App.configDir + '/main.scss'
|
const css = App.configDir + "/style.css";
|
||||||
const css = App.configDir + '/style.css'
|
|
||||||
|
|
||||||
Utils.exec(`sass ${scss} ${css}`);
|
Utils.exec(`sass ${scss} ${css}`);
|
||||||
|
|
||||||
|
@ -19,6 +18,6 @@ Utils.monitorFile(`${App.configDir}/scss`, reloadCss, "directory");
|
||||||
export default {
|
export default {
|
||||||
style: css,
|
style: css,
|
||||||
windows: [
|
windows: [
|
||||||
Bar(2)
|
Bar(2),
|
||||||
]
|
],
|
||||||
}
|
};
|
|
@ -7,17 +7,17 @@ import Audio from "resource:///com/github/Aylur/ags/service/audio.js";
|
||||||
import Hyprland from "resource:///com/github/Aylur/ags/service/hyprland.js";
|
import Hyprland from "resource:///com/github/Aylur/ags/service/hyprland.js";
|
||||||
import Network from "resource:///com/github/Aylur/ags/service/network.js";
|
import Network from "resource:///com/github/Aylur/ags/service/network.js";
|
||||||
import SystemTray from "resource:///com/github/Aylur/ags/service/systemtray.js";
|
import SystemTray from "resource:///com/github/Aylur/ags/service/systemtray.js";
|
||||||
import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js';
|
import Mpris from "resource:///com/github/Aylur/ags/service/mpris.js";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
App,
|
App,
|
||||||
Audio,
|
Audio,
|
||||||
Hyprland,
|
Hyprland,
|
||||||
|
Mpris,
|
||||||
Network,
|
Network,
|
||||||
Service,
|
Service,
|
||||||
SystemTray,
|
SystemTray,
|
||||||
Utils,
|
Utils,
|
||||||
Variable,
|
Variable,
|
||||||
Widget,
|
Widget,
|
||||||
Mpris,
|
|
||||||
};
|
};
|
|
@ -1,40 +1,42 @@
|
||||||
import { Widget } from '../import.js';
|
import { Widget } from "../import.js";
|
||||||
import { Time } from './widgets/time.js'
|
import { Time } from "./widgets/time.js";
|
||||||
import { nixosLogo } from './widgets/images/image.js';
|
import { nixosLogo } from "./widgets/images/image.js";
|
||||||
import { Media } from './widgets/music.js';
|
import { Media } from "./widgets/music.js";
|
||||||
import { Workspaces } from './widgets/hyprland.js';
|
import { Workspaces } from "./widgets/hyprland.js";
|
||||||
|
|
||||||
const Start = () => Widget.Box({
|
const Start = () =>
|
||||||
|
Widget.Box({
|
||||||
hpack: "start",
|
hpack: "start",
|
||||||
children: [
|
children: [
|
||||||
nixosLogo(),
|
nixosLogo(),
|
||||||
Workspaces(),
|
Workspaces(),
|
||||||
]
|
],
|
||||||
});
|
});
|
||||||
const Center = () => Widget.Box({
|
const Center = () =>
|
||||||
|
Widget.Box({
|
||||||
children: [
|
children: [
|
||||||
Media(),
|
Media(),
|
||||||
]
|
],
|
||||||
});
|
});
|
||||||
const End = () => Widget.Box({
|
const End = () =>
|
||||||
|
Widget.Box({
|
||||||
hpack: "end",
|
hpack: "end",
|
||||||
children: [
|
children: [
|
||||||
Time(),
|
Time(),
|
||||||
]
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const Bar = (monitor) => Widget.Window({
|
const Bar = (monitor) =>
|
||||||
|
Widget.Window({
|
||||||
monitor,
|
monitor,
|
||||||
name: `bar`,
|
name: `bar`,
|
||||||
anchor: ['top', 'left', 'right'],
|
anchor: ["top", "left", "right"],
|
||||||
exclusivity: 'exclusive',
|
exclusivity: "exclusive",
|
||||||
child: Widget.CenterBox({
|
child: Widget.CenterBox({
|
||||||
startWidget: Start(),
|
startWidget: Start(),
|
||||||
centerWidget: Center(),
|
centerWidget: Center(),
|
||||||
endWidget: End(),
|
endWidget: End(),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export {
|
export { Bar };
|
||||||
Bar
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
import { Hyprland, Widget } from "../../import.js";
|
import { Hyprland, Widget } from "../../import.js";
|
||||||
|
|
||||||
const Workspaces = () => Widget.Box({
|
const Workspaces = () =>
|
||||||
class_name: 'workspaces',
|
Widget.Box({
|
||||||
children: Hyprland.bind('workspaces').transform(ws => {
|
class_name: "workspaces",
|
||||||
return ws.map(({ id }) => Widget.Button({
|
children: Hyprland.bind("workspaces").transform((ws) => {
|
||||||
on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`),
|
return ws.map(({ id }) =>
|
||||||
child: Widget.Label(`${id}`),
|
Widget.Button({
|
||||||
class_name: Hyprland.active.workspace.bind('id')
|
on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`),
|
||||||
.transform(i => `${i === id ? 'focused' : ''}`),
|
child: Widget.Label(`${id}`),
|
||||||
}));
|
class_name: Hyprland.active.workspace.bind("id")
|
||||||
|
.transform((i) => `${i === id ? "focused" : ""}`),
|
||||||
|
})
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export {
|
export { Workspaces };
|
||||||
Workspaces
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { Widget } from '../../../import.js';
|
import { Widget } from "../../../import.js";
|
||||||
|
|
||||||
const nixosLogo = () => Widget.Icon({
|
const nixosLogo = () =>
|
||||||
icon: '/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png'
|
Widget.Icon({
|
||||||
});
|
icon:
|
||||||
|
"/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png",
|
||||||
|
});
|
||||||
|
|
||||||
export {
|
export { nixosLogo };
|
||||||
nixosLogo
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,17 +1,16 @@
|
||||||
import { Widget, Mpris } from "../../import.js";
|
import { Mpris, Widget } from "../../import.js";
|
||||||
|
|
||||||
const Media = () => Widget.Box({
|
const Media = () =>
|
||||||
class_name: 'media',
|
Widget.Box({
|
||||||
child: Widget.Label('-').hook(Mpris, self => {
|
class_name: "media",
|
||||||
if (Mpris.players[0]) {
|
child: Widget.Label("-").hook(Mpris, (self) => {
|
||||||
const { track_artists, track_title } = Mpris.players[0];
|
if (Mpris.players[0]) {
|
||||||
self.label = `${track_artists.join(', ')} - ${track_title}`;
|
const { track_artists, track_title } = Mpris.players[0];
|
||||||
} else {
|
self.label = `${track_artists.join(", ")} - ${track_title}`;
|
||||||
self.label = 'Nothing is playing';
|
} else {
|
||||||
}
|
self.label = "Nothing is playing";
|
||||||
}, 'player-changed'),
|
}
|
||||||
});
|
}, "player-changed"),
|
||||||
|
});
|
||||||
|
|
||||||
export {
|
export { Media };
|
||||||
Media
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,18 +1,16 @@
|
||||||
import { Widget, Utils } from '../../import.js';
|
import { Utils, Widget } from "../../import.js";
|
||||||
|
|
||||||
|
const Time = () =>
|
||||||
const Time = () => Widget.Box({
|
Widget.Box({
|
||||||
child: Widget.Label({
|
child: Widget.Label({
|
||||||
className: "date"
|
className: "date",
|
||||||
}).poll(
|
}).poll(
|
||||||
1000,
|
1000,
|
||||||
(self) =>
|
(self) =>
|
||||||
Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) =>
|
Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) =>
|
||||||
self.label = time
|
self.label = time
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
export {
|
export { Time };
|
||||||
Time
|
|
||||||
}
|
|
15
home/ags/config/jsconfig.json
Normal file
15
home/ags/config/jsconfig.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "Node",
|
||||||
|
"target": "ES2020",
|
||||||
|
"jsx": "react",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"strictFunctionTypes": true
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"**/node_modules/*"
|
||||||
|
]
|
||||||
|
}
|
1135
home/ags/config/package-lock.json
generated
Normal file
1135
home/ags/config/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
15
home/ags/config/package.json
Normal file
15
home/ags/config/package.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"name": "snowflake-ags",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "snowflake ags",
|
||||||
|
"main": "config.js",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.flake.sh/notohh/snowflake"
|
||||||
|
},
|
||||||
|
"author": "notohh",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint": "^8.56.0"
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,9 +4,7 @@
|
||||||
./neofetch
|
./neofetch
|
||||||
./nushell
|
./nushell
|
||||||
./starship
|
./starship
|
||||||
./git
|
|
||||||
./lazygit
|
./lazygit
|
||||||
./direnv
|
|
||||||
./yazi
|
./yazi
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -31,21 +29,46 @@
|
||||||
p7zip
|
p7zip
|
||||||
];
|
];
|
||||||
|
|
||||||
services.gpg-agent = {
|
services = {
|
||||||
enable = true;
|
gpg-agent = {
|
||||||
defaultCacheTtl = 3600;
|
enable = true;
|
||||||
pinentryFlavor = "curses";
|
defaultCacheTtl = 3600;
|
||||||
enableSshSupport = true;
|
pinentryFlavor = "curses";
|
||||||
enableNushellIntegration = true;
|
enableSshSupport = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.bat.enable = true;
|
programs = {
|
||||||
|
bat.enable = true;
|
||||||
programs.zoxide = {
|
git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableNushellIntegration = true;
|
delta.enable = true;
|
||||||
options = [
|
userEmail = "github@notohh.dev";
|
||||||
"--cmd cdd"
|
userName = "notohh";
|
||||||
];
|
signing = {
|
||||||
|
key = "BD47506D475EE86D";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
ignores = ["*result*" ".direnv" "node_modules"];
|
||||||
|
};
|
||||||
|
gh = {
|
||||||
|
enable = true;
|
||||||
|
gitCredentialHelper.enable = true;
|
||||||
|
settings = {
|
||||||
|
editor = "hx";
|
||||||
|
prompt = "enabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
options = ["--cmd cdd"];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
_: {
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
_: {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
delta.enable = true;
|
|
||||||
userEmail = "github@notohh.dev";
|
|
||||||
userName = "notohh";
|
|
||||||
signing = {
|
|
||||||
key = "BD47506D475EE86D";
|
|
||||||
signByDefault = true;
|
|
||||||
};
|
|
||||||
ignores = ["*result*" ".direnv" "node_modules"];
|
|
||||||
};
|
|
||||||
programs.gh = {
|
|
||||||
enable = true;
|
|
||||||
gitCredentialHelper.enable = true;
|
|
||||||
settings = {
|
|
||||||
editor = "hx";
|
|
||||||
prompt = "enabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -24,7 +24,7 @@
|
||||||
name = "lua";
|
name = "lua";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter = {
|
formatter = {
|
||||||
command = lib.getExe luaformatter;
|
command = lib.getExe stylua;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
_: {
|
_: {
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
themes.catppuccin_mocha = let
|
themes.catppuccin_mocha = let
|
||||||
transparent = "none";
|
|
||||||
rosewater = "#f5e0dc";
|
rosewater = "#f5e0dc";
|
||||||
flamingo = "#f2cdcd";
|
flamingo = "#f2cdcd";
|
||||||
pink = "#f5c2e7";
|
pink = "#f5c2e7";
|
||||||
|
|
|
@ -7,20 +7,16 @@ _: {
|
||||||
light-green = "#9ece6a";
|
light-green = "#9ece6a";
|
||||||
green = "#73daca";
|
green = "#73daca";
|
||||||
turquoise = "#89ddff";
|
turquoise = "#89ddff";
|
||||||
light-cyan = "#b4f9f8";
|
|
||||||
teal = "#2ac3de";
|
teal = "#2ac3de";
|
||||||
cyan = "#7dcfff";
|
cyan = "#7dcfff";
|
||||||
blue = "#7aa2f7";
|
blue = "#7aa2f7";
|
||||||
magenta = "#bb9af7";
|
magenta = "#bb9af7";
|
||||||
white = "#c0caf5";
|
white = "#c0caf5";
|
||||||
light-gray = "#9aa5ce";
|
light-gray = "#9aa5ce";
|
||||||
parameters = "#cfc9c2";
|
|
||||||
comment = "#565f89";
|
comment = "#565f89";
|
||||||
black = "#414868";
|
black = "#414868";
|
||||||
foreground = "#a9b1d6";
|
foreground = "#a9b1d6";
|
||||||
foreground_highlight = "#c0caf5";
|
|
||||||
foreground_gutter = "#363b54";
|
foreground_gutter = "#363b54";
|
||||||
background = "#1a1b26";
|
|
||||||
background_highlight = "#30374b";
|
background_highlight = "#30374b";
|
||||||
background_menu = "#16161e";
|
background_menu = "#16161e";
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -24,9 +24,6 @@ alias sora = nix run github:serokell/deploy-rs ".#sora"
|
||||||
alias tsuru = nix run github:serokell/deploy-rs ".#tsuru"
|
alias tsuru = nix run github:serokell/deploy-rs ".#tsuru"
|
||||||
alias haru = nix run github:serokell/deploy-rs ".#haru"
|
alias haru = nix run github:serokell/deploy-rs ".#haru"
|
||||||
alias kaze = nix run github:serokell/deploy-rs ".#kaze"
|
alias kaze = nix run github:serokell/deploy-rs ".#kaze"
|
||||||
alias dx = nix run "nixpkgs#deadnix"
|
|
||||||
alias sx = nix run "nixpkgs#statix" -- check
|
|
||||||
alias sxfix = nix run "nixpkgs#statix" -- fix
|
|
||||||
alias dl = yt-dlp -P ~/Videos/downloaded
|
alias dl = yt-dlp -P ~/Videos/downloaded
|
||||||
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
|
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
|
||||||
alias dlcd = yt-dlp
|
alias dlcd = yt-dlp
|
||||||
|
|
|
@ -14,24 +14,46 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [./greetd.nix];
|
||||||
./greetd.nix
|
environment = {
|
||||||
];
|
systemPackages = with pkgs; [
|
||||||
|
dbus-hyprland-environment
|
||||||
environment.systemPackages = with pkgs; [
|
wayland
|
||||||
dbus-hyprland-environment
|
glib
|
||||||
wayland
|
grim
|
||||||
glib
|
slurp
|
||||||
grim
|
satty
|
||||||
slurp
|
wl-clipboard
|
||||||
satty
|
wlr-randr
|
||||||
wl-clipboard
|
swayidle
|
||||||
wlr-randr
|
swaylock-effects
|
||||||
swayidle
|
hyprpicker
|
||||||
swaylock-effects
|
swww
|
||||||
hyprpicker
|
];
|
||||||
swww
|
sessionVariables = {
|
||||||
];
|
GBM_BACKEND = "nvidia-drm";
|
||||||
|
__GL_GSYNC_ALLOWED = "0";
|
||||||
|
__GL_VRR_ALLOWED = "0";
|
||||||
|
WLR_DRM_NO_ATOMIC = "1";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
GDK_BACKEND = "wayland";
|
||||||
|
WLR_NO_HARDWARE_CURSORS = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
WLR_BACKEND = "vulkan";
|
||||||
|
WLR_RENDERER = "vulkan";
|
||||||
|
XCURSOR_SIZE = "24";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
EDITOR = "hx";
|
||||||
|
TERMINAL = "wezterm";
|
||||||
|
};
|
||||||
|
etc."greetd/environments".text = ''
|
||||||
|
Hyprland
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
services.dbus.enable = true;
|
services.dbus.enable = true;
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
|
@ -44,29 +66,4 @@ in {
|
||||||
common.default = "*";
|
common.default = "*";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
GBM_BACKEND = "nvidia-drm";
|
|
||||||
__GL_GSYNC_ALLOWED = "0";
|
|
||||||
__GL_VRR_ALLOWED = "0";
|
|
||||||
WLR_DRM_NO_ATOMIC = "1";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
|
||||||
_JAVA_AWT_WM_NONREPARENTING = "1";
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
GDK_BACKEND = "wayland";
|
|
||||||
WLR_NO_HARDWARE_CURSORS = "1";
|
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
|
||||||
WLR_BACKEND = "vulkan";
|
|
||||||
WLR_RENDERER = "vulkan";
|
|
||||||
XCURSOR_SIZE = "24";
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
EDITOR = "hx";
|
|
||||||
TERMINAL = "wezterm";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.etc."greetd/environments".text = ''
|
|
||||||
Hyprland
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
];
|
];
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"ags"
|
"ags"
|
||||||
"swww init && swww img ~/Pictures/wallpapers/city.png"
|
"swww init && swww img ~/Pictures/wallpapers/frieren.png"
|
||||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||||
"~/.local/bin/lock"
|
"~/.local/bin/lock"
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
local wezterm = require('wezterm')
|
local wezterm = require("wezterm")
|
||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
|
|
||||||
front_end = "WebGpu",
|
front_end = "WebGpu",
|
||||||
webgpu_preferred_adapter = {
|
webgpu_preferred_adapter = {
|
||||||
backend = "Vulkan",
|
backend = "Vulkan",
|
||||||
device_type = "DiscreteGpu",
|
device_type = "DiscreteGpu",
|
||||||
name = "NVIDIA GeForce GTX 1070 Ti"
|
name = "NVIDIA GeForce GTX 1070 Ti",
|
||||||
},
|
},
|
||||||
enable_wayland = false,
|
enable_wayland = false,
|
||||||
font = wezterm.font 'Monaspace Krypton',
|
font = wezterm.font("Monaspace Krypton"),
|
||||||
font_size = 12.0,
|
font_size = 12.0,
|
||||||
window_background_opacity = 0.6,
|
window_background_opacity = 0.6,
|
||||||
text_background_opacity = 1.0,
|
text_background_opacity = 1.0,
|
||||||
enable_tab_bar = false,
|
enable_tab_bar = false,
|
||||||
color_scheme = 'tokyonight',
|
color_scheme = "tokyonight",
|
||||||
window_padding = {top = 20, bottom = 20, left = 20, right = 20}
|
window_padding = { top = 20, bottom = 20, left = 20, right = 20 },
|
||||||
}
|
}
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
|
@ -1,159 +1,183 @@
|
||||||
function Manager:render(area)
|
function Manager:render(area)
|
||||||
self.area = area
|
self.area = area
|
||||||
|
|
||||||
local chunks = ui.Layout():direction(ui.Layout.HORIZONTAL):constraints({
|
local chunks = ui.Layout()
|
||||||
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
|
:direction(ui.Layout.HORIZONTAL)
|
||||||
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
|
:constraints({
|
||||||
ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all)
|
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
|
||||||
}):split(area)
|
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
|
||||||
|
ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all),
|
||||||
|
})
|
||||||
|
:split(area)
|
||||||
|
|
||||||
local bar = function(c, x, y)
|
local bar = function(c, x, y)
|
||||||
return ui.Bar(ui.Rect {
|
return ui.Bar(
|
||||||
x = math.max(0, x),
|
ui.Rect({
|
||||||
y = math.max(0, y),
|
x = math.max(0, x),
|
||||||
w = math.min(1, area.w),
|
y = math.max(0, y),
|
||||||
h = math.min(1, area.h)
|
w = math.min(1, area.w),
|
||||||
}, ui.Bar.TOP):symbol(c)
|
h = math.min(1, area.h),
|
||||||
end
|
}),
|
||||||
|
ui.Bar.TOP
|
||||||
|
):symbol(c)
|
||||||
|
end
|
||||||
|
|
||||||
return ya.flat {
|
return ya.flat({
|
||||||
-- Borders
|
-- Borders
|
||||||
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
|
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
|
||||||
ui.Bar(chunks[1], ui.Bar.RIGHT), ui.Bar(chunks[3], ui.Bar.LEFT),
|
ui.Bar(chunks[1], ui.Bar.RIGHT),
|
||||||
|
ui.Bar(chunks[3], ui.Bar.LEFT),
|
||||||
|
|
||||||
bar("┬", chunks[1].right - 1, chunks[1].y),
|
bar("┬", chunks[1].right - 1, chunks[1].y),
|
||||||
bar("┴", chunks[1].right - 1, chunks[1].bottom - 1),
|
bar("┴", chunks[1].right - 1, chunks[1].bottom - 1),
|
||||||
bar("┬", chunks[2].right, chunks[2].y),
|
bar("┬", chunks[2].right, chunks[2].y),
|
||||||
bar("┴", chunks[2].right, chunks[1].bottom - 1), -- Parent
|
bar("┴", chunks[2].right, chunks[1].bottom - 1), -- Parent
|
||||||
Parent:render(chunks[1]:padding(ui.Padding.xy(1))), -- Current
|
Parent:render(chunks[1]:padding(ui.Padding.xy(1))), -- Current
|
||||||
Current:render(chunks[2]:padding(ui.Padding.y(1))), -- Preview
|
Current:render(chunks[2]:padding(ui.Padding.y(1))), -- Preview
|
||||||
Preview:render(chunks[3]:padding(ui.Padding.xy(1)))
|
Preview:render(chunks[3]:padding(ui.Padding.xy(1))),
|
||||||
}
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
Status = {area = ui.Rect.default}
|
Status = { area = ui.Rect.default }
|
||||||
|
|
||||||
function Status.style()
|
function Status.style()
|
||||||
if cx.active.mode.is_select then
|
if cx.active.mode.is_select then
|
||||||
return THEME.status.mode_select
|
return THEME.status.mode_select
|
||||||
elseif cx.active.mode.is_unset then
|
elseif cx.active.mode.is_unset then
|
||||||
return THEME.status.mode_unset
|
return THEME.status.mode_unset
|
||||||
else
|
else
|
||||||
return THEME.status.mode_normal
|
return THEME.status.mode_normal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:mode()
|
function Status:mode()
|
||||||
local mode = tostring(cx.active.mode):upper()
|
local mode = tostring(cx.active.mode):upper()
|
||||||
if mode == "UNSET" then mode = "UN-SET" end
|
if mode == "UNSET" then
|
||||||
|
mode = "UN-SET"
|
||||||
|
end
|
||||||
|
|
||||||
local style = self.style()
|
local style = self.style()
|
||||||
return ui.Line {
|
return ui.Line({
|
||||||
ui.Span(THEME.status.separator_open):fg(style.bg),
|
ui.Span(THEME.status.separator_open):fg(style.bg),
|
||||||
ui.Span(" " .. mode .. " "):style(style)
|
ui.Span(" " .. mode .. " "):style(style),
|
||||||
}
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:size()
|
function Status:size()
|
||||||
local h = cx.active.current.hovered
|
local h = cx.active.current.hovered
|
||||||
if h == nil then return ui.Line {} end
|
if h == nil then
|
||||||
|
return ui.Line({})
|
||||||
|
end
|
||||||
|
|
||||||
local style = self.style()
|
local style = self.style()
|
||||||
return ui.Line {
|
return ui.Line({
|
||||||
ui.Span(" " .. ya.readable_size(h:size() or h.cha.length) .. " "):fg(
|
ui.Span(" " .. ya.readable_size(h:size() or h.cha.length) .. " ")
|
||||||
style.bg):bg(THEME.status.separator_style.bg),
|
:fg(style.bg)
|
||||||
ui.Span(THEME.status.separator_close):fg(THEME.status.separator_style.fg)
|
:bg(THEME.status.separator_style.bg),
|
||||||
}
|
ui.Span(THEME.status.separator_close):fg(THEME.status.separator_style.fg),
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:name()
|
function Status:name()
|
||||||
local h = cx.active.current.hovered
|
local h = cx.active.current.hovered
|
||||||
if h == nil then return ui.Span("") end
|
if h == nil then
|
||||||
local linked = ""
|
return ui.Span("")
|
||||||
if h.link_to ~= nil then linked = " -> " .. tostring(h.link_to) end
|
end
|
||||||
return ui.Span(" " .. h.name .. linked)
|
local linked = ""
|
||||||
|
if h.link_to ~= nil then
|
||||||
|
linked = " -> " .. tostring(h.link_to)
|
||||||
|
end
|
||||||
|
return ui.Span(" " .. h.name .. linked)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:permissions()
|
function Status:permissions()
|
||||||
local h = cx.active.current.hovered
|
local h = cx.active.current.hovered
|
||||||
if h == nil then return ui.Line {} end
|
if h == nil then
|
||||||
|
return ui.Line({})
|
||||||
|
end
|
||||||
|
|
||||||
local perm = h.cha:permissions()
|
local perm = h.cha:permissions()
|
||||||
if perm == nil then return ui.Line {} end
|
if perm == nil then
|
||||||
|
return ui.Line({})
|
||||||
|
end
|
||||||
|
|
||||||
local spans = {}
|
local spans = {}
|
||||||
for i = 1, #perm do
|
for i = 1, #perm do
|
||||||
local c = perm:sub(i, i)
|
local c = perm:sub(i, i)
|
||||||
local style = THEME.status.permissions_t
|
local style = THEME.status.permissions_t
|
||||||
if c == "-" then
|
if c == "-" then
|
||||||
style = THEME.status.permissions_s
|
style = THEME.status.permissions_s
|
||||||
elseif c == "r" then
|
elseif c == "r" then
|
||||||
style = THEME.status.permissions_r
|
style = THEME.status.permissions_r
|
||||||
elseif c == "w" then
|
elseif c == "w" then
|
||||||
style = THEME.status.permissions_w
|
style = THEME.status.permissions_w
|
||||||
elseif c == "x" or c == "s" or c == "S" or c == "t" or c == "T" then
|
elseif c == "x" or c == "s" or c == "S" or c == "t" or c == "T" then
|
||||||
style = THEME.status.permissions_x
|
style = THEME.status.permissions_x
|
||||||
end
|
end
|
||||||
spans[i] = ui.Span(c):style(style)
|
spans[i] = ui.Span(c):style(style)
|
||||||
end
|
end
|
||||||
return ui.Line(spans)
|
return ui.Line(spans)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:percentage()
|
function Status:percentage()
|
||||||
local percent = 0
|
local percent = 0
|
||||||
local cursor = cx.active.current.cursor
|
local cursor = cx.active.current.cursor
|
||||||
local length = #cx.active.current.files
|
local length = #cx.active.current.files
|
||||||
if cursor ~= 0 and length ~= 0 then
|
if cursor ~= 0 and length ~= 0 then
|
||||||
percent = math.floor((cursor + 1) * 100 / length)
|
percent = math.floor((cursor + 1) * 100 / length)
|
||||||
end
|
end
|
||||||
|
|
||||||
if percent == 0 then
|
if percent == 0 then
|
||||||
percent = " Top "
|
percent = " Top "
|
||||||
else
|
else
|
||||||
percent = string.format(" %3d%% ", percent)
|
percent = string.format(" %3d%% ", percent)
|
||||||
end
|
end
|
||||||
|
|
||||||
local style = self.style()
|
local style = self.style()
|
||||||
return ui.Line {
|
return ui.Line({
|
||||||
ui.Span(" " .. THEME.status.separator_open):fg(THEME.status
|
ui.Span(" " .. THEME.status.separator_open):fg(THEME.status.separator_style.fg),
|
||||||
.separator_style.fg),
|
ui.Span(percent):fg(style.bg):bg(THEME.status.separator_style.bg),
|
||||||
ui.Span(percent):fg(style.bg):bg(THEME.status.separator_style.bg)
|
})
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:position()
|
function Status:position()
|
||||||
local cursor = cx.active.current.cursor
|
local cursor = cx.active.current.cursor
|
||||||
local length = #cx.active.current.files
|
local length = #cx.active.current.files
|
||||||
|
|
||||||
local style = self.style()
|
local style = self.style()
|
||||||
return ui.Line {
|
return ui.Line({
|
||||||
ui.Span(string.format(" %2d/%-2d ", cursor + 1, length)):style(style),
|
ui.Span(string.format(" %2d/%-2d ", cursor + 1, length)):style(style),
|
||||||
ui.Span(THEME.status.separator_close):fg(style.bg)
|
ui.Span(THEME.status.separator_close):fg(style.bg),
|
||||||
}
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:render(area)
|
function Status:render(area)
|
||||||
self.area = area
|
self.area = area
|
||||||
|
|
||||||
local left = ui.Line {self:mode(), self:size(), self:name()}
|
local left = ui.Line({ self:mode(), self:size(), self:name() })
|
||||||
local right = ui.Line {
|
local right = ui.Line({
|
||||||
self:owner(), self:permissions(), self:percentage(), self:position()
|
self:owner(),
|
||||||
}
|
self:permissions(),
|
||||||
return {
|
self:percentage(),
|
||||||
ui.Paragraph(area, {left}),
|
self:position(),
|
||||||
ui.Paragraph(area, {right}):align(ui.Paragraph.RIGHT),
|
})
|
||||||
table.unpack(Progress:render(area, right:width()))
|
return {
|
||||||
}
|
ui.Paragraph(area, { left }),
|
||||||
|
ui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),
|
||||||
|
table.unpack(Progress:render(area, right:width())),
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function Status:owner()
|
function Status:owner()
|
||||||
local h = cx.active.current.hovered
|
local h = cx.active.current.hovered
|
||||||
if h == nil or ya.target_family() ~= "unix" then return ui.Line {} end
|
if h == nil or ya.target_family() ~= "unix" then
|
||||||
|
return ui.Line({})
|
||||||
|
end
|
||||||
|
|
||||||
return ui.Line {
|
return ui.Line({
|
||||||
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||||
ui.Span(":"),
|
ui.Span(":"),
|
||||||
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||||
ui.Span(" ")
|
ui.Span(" "),
|
||||||
}
|
})
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{...}: {
|
_: {
|
||||||
imports = [
|
imports = [
|
||||||
./layouts.nix
|
./layouts.nix
|
||||||
];
|
];
|
||||||
|
|
|
@ -7,34 +7,24 @@
|
||||||
../../modules/fonts.nix
|
../../modules/fonts.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 8;
|
|
||||||
};
|
|
||||||
efi = {
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
efiSysMountPoint = "/boot/efi";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
|
|
||||||
services.xserver.enable = true;
|
services = {
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
services.xserver = {
|
alsa.enable = true;
|
||||||
layout = "us";
|
alsa.support32Bit = true;
|
||||||
xkbVariant = "";
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
displayManager.sddm.enable = true;
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,24 +8,38 @@
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = ["kvm-intel"];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
fileSystems."/" = {
|
enable = true;
|
||||||
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
|
configurationLimit = 8;
|
||||||
fsType = "ext4";
|
};
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot/efi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/4D09-1D57";
|
"/" = {
|
||||||
fsType = "vfat";
|
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
fileSystems."/nas/restic" = {
|
"/boot/efi" = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
|
device = "/dev/disk/by-uuid/4D09-1D57";
|
||||||
fsType = "nfs";
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -17,12 +17,11 @@
|
||||||
username = "notoh";
|
username = "notoh";
|
||||||
homeDirectory = "/home/notoh";
|
homeDirectory = "/home/notoh";
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
chromium
|
||||||
discord
|
discord
|
||||||
spotify-player
|
spotify-player
|
||||||
cinny-desktop
|
cinny-desktop
|
||||||
pavucontrol
|
pavucontrol
|
||||||
unzip
|
|
||||||
p7zip
|
|
||||||
imv
|
imv
|
||||||
mpv
|
mpv
|
||||||
rustypaste-cli
|
rustypaste-cli
|
||||||
|
@ -33,12 +32,7 @@
|
||||||
glib
|
glib
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
swappy
|
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wlogout
|
|
||||||
wlr-randr
|
|
||||||
swayidle
|
|
||||||
swaylock-effects
|
|
||||||
swww
|
swww
|
||||||
hyprpicker
|
hyprpicker
|
||||||
(libsForQt5.callPackage ../../pkgs/chatterino7 {})
|
(libsForQt5.callPackage ../../pkgs/chatterino7 {})
|
||||||
|
|
|
@ -3,12 +3,8 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.restic-ame = {
|
sops.secrets.restic-ame = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
sops.secrets.ame-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;};
|
||||||
};
|
|
||||||
sops.secrets.ame-s3 = {
|
|
||||||
sopsFile = ../../../secrets/s3/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
backups = {
|
backups = {
|
||||||
|
|
|
@ -6,19 +6,6 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
|
||||||
"kernel.shmmax" = 100663296;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
|
@ -7,19 +7,31 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
kernel.sysctl = {"kernel.shmmax" = 100663296;};
|
||||||
boot.extraModulePackages = [];
|
extraModulePackages = [];
|
||||||
|
loader.grub = {
|
||||||
fileSystems."/" = {
|
enable = true;
|
||||||
device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927";
|
configurationLimit = 5;
|
||||||
fsType = "ext4";
|
device = "/dev/sda";
|
||||||
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/nas/restic" = {
|
fileSystems = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
|
"/" = {
|
||||||
fsType = "nfs";
|
device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.restic-arashi = {
|
sops.secrets.restic-arashi = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
backups = {
|
backups = {
|
||||||
|
|
|
@ -6,15 +6,6 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
|
@ -7,14 +7,26 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 5;
|
||||||
|
device = "/dev/sda";
|
||||||
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534";
|
"/" = {
|
||||||
fsType = "ext4";
|
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -6,15 +6,6 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
|
@ -7,29 +7,38 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
fileSystems."/" = {
|
configurationLimit = 5;
|
||||||
device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b";
|
device = "/dev/sda";
|
||||||
fsType = "ext4";
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/media" = {
|
fileSystems = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/media";
|
"/" = {
|
||||||
fsType = "nfs";
|
device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
fileSystems."/stash" = {
|
"/media" = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/stash";
|
device = "192.168.1.199:/mnt/Sutoreji/media";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
};
|
};
|
||||||
|
"/stash" = {
|
||||||
fileSystems."/nas/restic" = {
|
device = "192.168.1.199:/mnt/Sutoreji/stash";
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
|
fsType = "nfs";
|
||||||
fsType = "nfs";
|
};
|
||||||
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -1,42 +1,40 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
networking.firewall.allowedTCPPorts = [9292];
|
networking.firewall.allowedTCPPorts = [9292];
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./restic.nix
|
./restic.nix
|
||||||
./torrent.nix
|
./torrent.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [pkgs.recyclarr];
|
environment.systemPackages = [pkgs.recyclarr];
|
||||||
services.radarr = {
|
services = {
|
||||||
enable = true;
|
radarr = {
|
||||||
openFirewall = true;
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
sonarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
prowlarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
bazarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
readarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
lidarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
sabnzbd.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.sonarr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.prowlarr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.bazarr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.readarr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.lidarr = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.sabnzbd.enable = true;
|
|
||||||
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
whisparr = {
|
whisparr = {
|
||||||
image = "ghcr.io/hotio/whisparr@sha256:88b91920b77339e2deda418960be28868df538413abea6cdddaf4013e43c4c0f"; # v3-3.0.0.425
|
image = "ghcr.io/hotio/whisparr@sha256:88b91920b77339e2deda418960be28868df538413abea6cdddaf4013e43c4c0f"; # v3-3.0.0.425
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.restic-kariru = {
|
sops.secrets.restic-kariru = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
backups = {
|
backups = {
|
||||||
|
|
|
@ -6,15 +6,6 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/vda";
|
|
||||||
useOSProber = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
|
@ -7,19 +7,30 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = ["kvm-amd"];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
fileSystems."/" = {
|
configurationLimit = 5;
|
||||||
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
|
device = "/dev/vda";
|
||||||
fsType = "ext4";
|
useOSProber = true;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/lib/slab" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
|
"/" = {
|
||||||
fsType = "ext4";
|
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
"/var/lib/slab" = {
|
||||||
|
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -5,9 +5,7 @@
|
||||||
}: {
|
}: {
|
||||||
environment.systemPackages = [pkgs.minio-client];
|
environment.systemPackages = [pkgs.minio-client];
|
||||||
|
|
||||||
systemd.services.minio.environment = {
|
systemd.services.minio.environment = {MINIO_BROWSER_REDIRECT = "false";};
|
||||||
MINIO_BROWSER_REDIRECT = "false";
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets.minio = {
|
sops.secrets.minio = {
|
||||||
owner = "minio";
|
owner = "minio";
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.tsauth-kaze = {
|
sops.secrets.tsauth-kaze = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/tailscale/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
useRoutingFeatures = lib.mkDefault "client";
|
useRoutingFeatures = lib.mkDefault "client";
|
||||||
|
|
|
@ -6,15 +6,6 @@ _: {
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.snowflake-proxy.enable = true;
|
services.snowflake-proxy.enable = true;
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
|
|
|
@ -7,24 +7,34 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
fileSystems."/" = {
|
configurationLimit = 5;
|
||||||
device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb";
|
device = "/dev/sda";
|
||||||
fsType = "ext4";
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home/notoh/justlog/logs" = {
|
fileSystems = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/twitchlogs";
|
"/" = {
|
||||||
fsType = "nfs";
|
device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
fileSystems."/nas/restic" = {
|
"/home/notoh/justlog/logs" = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
|
device = "192.168.1.199:/mnt/Sutoreji/twitchlogs";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
|
};
|
||||||
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.restic-sakura = {
|
sops.secrets.restic-sakura = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
backups = {
|
backups = {
|
||||||
|
|
|
@ -3,12 +3,9 @@
|
||||||
|
|
||||||
systemd.services.rustypaste = {
|
systemd.services.rustypaste = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wantedBy = [
|
wantedBy = ["multi-user.target"];
|
||||||
"multi-user.target"
|
|
||||||
];
|
|
||||||
description = "A minimal file upload/pastebin service.";
|
description = "A minimal file upload/pastebin service.";
|
||||||
environment = {
|
environment = {
|
||||||
# AUTH_TOKEN = config.sops.secrets.rusty-auth-token.path;
|
|
||||||
CONFIG = "/var/lib/rustypaste/config.toml";
|
CONFIG = "/var/lib/rustypaste/config.toml";
|
||||||
};
|
};
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.tsauth-sakura = {
|
sops.secrets.tsauth-sakura = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/tailscale/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
useRoutingFeatures = lib.mkDefault "client";
|
useRoutingFeatures = lib.mkDefault "client";
|
||||||
|
|
|
@ -6,7 +6,8 @@ _: {
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.tmp.cleanOnBoot = true;
|
services.snowflake-proxy.enable = true;
|
||||||
|
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
users.users.notoh.openssh.authorizedKeys.keys = [
|
users.users.notoh.openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmI3hRDFjxLjrM3pE471e4jxSlcqeizh3iNVVdaMHeN sora"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmI3hRDFjxLjrM3pE471e4jxSlcqeizh3iNVVdaMHeN sora"
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
{modulesPath, ...}: {
|
{modulesPath, ...}: {
|
||||||
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
|
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
|
||||||
boot.loader.grub = {
|
|
||||||
efiSupport = true;
|
boot = {
|
||||||
efiInstallAsRemovable = true;
|
tmp.cleanOnBoot = true;
|
||||||
device = "nodev";
|
loader.grub = {
|
||||||
|
efiSupport = true;
|
||||||
|
efiInstallAsRemovable = true;
|
||||||
|
device = "nodev";
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
|
||||||
|
kernelModules = ["nvme"];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/B793-1B2C";
|
"/" = {
|
||||||
fsType = "vfat";
|
device = "/dev/sda1";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
|
"/boot" = {
|
||||||
boot.initrd.kernelModules = ["nvme"];
|
device = "/dev/disk/by-uuid/B793-1B2C";
|
||||||
fileSystems."/" = {
|
fsType = "vfat";
|
||||||
device = "/dev/sda1";
|
};
|
||||||
fsType = "ext4";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,8 @@ _: {
|
||||||
sops.secrets.foundry-username = {};
|
sops.secrets.foundry-username = {};
|
||||||
sops.secrets.foundry-password = {};
|
sops.secrets.foundry-password = {};
|
||||||
virtualisation.oci-containers.containers.foundryvtt = {
|
virtualisation.oci-containers.containers.foundryvtt = {
|
||||||
image = "felddy/foundryvtt:sha-50af627";
|
image = "felddy/foundryvtt@sha256:d85dab9704d771f3a33f21439f1bf34748fb5bf1987668ff402b5b17d1973f5a";
|
||||||
volumes = [
|
volumes = ["/home/notoh/docker/foundryvtt:/data"];
|
||||||
"/home/notoh/docker/foundryvtt:/data"
|
|
||||||
];
|
|
||||||
environment = {
|
environment = {
|
||||||
CONTAINER_PRESERVE_CONFIG = "true";
|
CONTAINER_PRESERVE_CONFIG = "true";
|
||||||
};
|
};
|
||||||
|
@ -13,8 +11,6 @@ _: {
|
||||||
/run/secrets/foundry-username
|
/run/secrets/foundry-username
|
||||||
/run/secrets/foundry-password
|
/run/secrets/foundry-password
|
||||||
];
|
];
|
||||||
ports = [
|
ports = ["30000:30000"];
|
||||||
"30000:30000"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
_: {
|
_: {
|
||||||
virtualisation.oci-containers.containers.glances = {
|
virtualisation.oci-containers.containers.glances = {
|
||||||
image = "nicolargo/glances";
|
image = "nicolargo/glances";
|
||||||
ports = [
|
ports = ["61208-61209:61208-61209"];
|
||||||
"61208-61209:61208-61209"
|
volumes = ["/var/run/docker.sock:/var/run/docker.sock"];
|
||||||
];
|
|
||||||
volumes = [
|
|
||||||
"/var/run/docker.sock:/var/run/docker.sock"
|
|
||||||
];
|
|
||||||
environment = {
|
environment = {
|
||||||
GLANCES_OPT = "-w";
|
GLANCES_OPT = "-w";
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,8 +12,6 @@ _: {
|
||||||
FABRIC_LOADER_VERSION = "0.14.23";
|
FABRIC_LOADER_VERSION = "0.14.23";
|
||||||
FABRIC_LAUNCHER_VERSION = "0.11.2";
|
FABRIC_LAUNCHER_VERSION = "0.11.2";
|
||||||
};
|
};
|
||||||
volumes = [
|
volumes = ["/home/notoh/docker/modded-mc:/data:rw"];
|
||||||
"/home/notoh/docker/modded-mc:/data:rw"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,8 @@
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
restic-sora = {
|
restic-sora = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
sora-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;};
|
||||||
};
|
|
||||||
sora-s3 = {
|
|
||||||
sopsFile = ../../../secrets/s3/secrets.yaml;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.tsauth-sora = {
|
sops.secrets.tsauth-sora = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/tailscale/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
useRoutingFeatures = lib.mkDefault "server"; # important to make it a server, it sets sysctl for ip forwarding without intervention and reboot
|
useRoutingFeatures = lib.mkDefault "server"; # important to make it a server, it sets sysctl for ip forwarding without intervention and reboot
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{...}: {
|
_: {
|
||||||
networking.firewall.allowedTCPPorts = [7777];
|
networking.firewall.allowedTCPPorts = [7777];
|
||||||
virtualisation.oci-containers.containers.terraria = {
|
virtualisation.oci-containers.containers.terraria = {
|
||||||
image = "jacobsmile/tmodloader1.4:v2023.11.3.3";
|
image = "jacobsmile/tmodloader1.4:v2023.11.3.3";
|
||||||
|
|
|
@ -16,23 +16,22 @@
|
||||||
../../pkgs/overlays.nix
|
../../pkgs/overlays.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 10;
|
|
||||||
};
|
|
||||||
efi = {
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
efiSysMountPoint = "/boot/efi";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
|
|
||||||
boot.kernelModules = ["v4l2loopback" "kvm-intel"];
|
|
||||||
|
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
pcscd.enable = true;
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
lowLatency = {
|
||||||
|
enable = true;
|
||||||
|
quantum = 64;
|
||||||
|
rate = 48000;
|
||||||
|
};
|
||||||
|
};
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
videoDrivers = ["nvidia"];
|
videoDrivers = ["nvidia"];
|
||||||
|
@ -53,41 +52,28 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.pcscd.enable = true;
|
security = {
|
||||||
services.davfs2.enable = true;
|
rtkit.enable = true;
|
||||||
|
polkit.enable = true;
|
||||||
hardware.pulseaudio.enable = false;
|
pam.services.swaylock = {
|
||||||
security.rtkit.enable = true;
|
text = ''
|
||||||
services.pipewire = {
|
auth include login
|
||||||
enable = true;
|
'';
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
wireplumber.enable = true;
|
|
||||||
lowLatency = {
|
|
||||||
enable = true;
|
|
||||||
quantum = 64;
|
|
||||||
rate = 48000;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.gamemode.enable = true;
|
programs = {
|
||||||
|
gamemode.enable = true;
|
||||||
programs.steam = {
|
steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraCompatPackages = [
|
extraCompatPackages = [
|
||||||
inputs.nix-gaming.packages.${pkgs.system}.proton-ge
|
inputs.nix-gaming.packages.${pkgs.system}.proton-ge
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
security.polkit.enable = true;
|
|
||||||
security.pam.services.swaylock = {
|
|
||||||
text = ''
|
|
||||||
auth include login
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
pulseaudio.enable = false;
|
||||||
nvidia = {
|
nvidia = {
|
||||||
powerManagement.enable = true;
|
powerManagement.enable = true;
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
|
|
|
@ -8,34 +8,46 @@
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = ["v4l2loopback" "kvm-intel"];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
|
||||||
boot.extraModulePackages = [];
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
fileSystems."/" = {
|
enable = true;
|
||||||
device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff";
|
configurationLimit = 10;
|
||||||
fsType = "ext4";
|
};
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot/efi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot/efi" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/C356-B67C";
|
"/" = {
|
||||||
fsType = "vfat";
|
device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
fileSystems."/hdd" = {
|
"/boot/efi" = {
|
||||||
device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b";
|
device = "/dev/disk/by-uuid/C356-B67C";
|
||||||
fsType = "ext4";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
"/hdd" = {
|
||||||
fileSystems."/ssd" = {
|
device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b";
|
||||||
device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
|
fsType = "ext4";
|
||||||
fsType = "ext4";
|
};
|
||||||
};
|
"/ssd" = {
|
||||||
|
device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
|
||||||
fileSystems."/nas/restic" = {
|
fsType = "ext4";
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
|
};
|
||||||
fsType = "nfs";
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
imv
|
imv
|
||||||
mpv
|
mpv
|
||||||
ffmpeg
|
ffmpeg
|
||||||
nom
|
|
||||||
rustypaste-cli
|
rustypaste-cli
|
||||||
gimp
|
gimp
|
||||||
cryptomator
|
cryptomator
|
||||||
|
@ -56,7 +55,6 @@
|
||||||
prismlauncher
|
prismlauncher
|
||||||
yuzu
|
yuzu
|
||||||
inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin
|
inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin
|
||||||
inputs.nix-gaming.packages.${pkgs.system}.wine-discord-ipc-bridge
|
|
||||||
(libsForQt5.callPackage ../../pkgs/chatterino7 {})
|
(libsForQt5.callPackage ../../pkgs/chatterino7 {})
|
||||||
(callPackage ../../pkgs/jellyfin-rpc {})
|
(callPackage ../../pkgs/jellyfin-rpc {})
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
|
|
||||||
systemd.services.atticd = {
|
systemd.services.atticd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wantedBy = [
|
wantedBy = ["multi-user.target"];
|
||||||
"multi-user.target"
|
|
||||||
];
|
|
||||||
description = "atticd";
|
description = "atticd";
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./atticd.nix
|
|
||||||
./restic.nix
|
./restic.nix
|
||||||
|
./atticd.nix
|
||||||
./hydroxide.nix
|
./hydroxide.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
|
|
||||||
systemd.services.hydroxide = {
|
systemd.services.hydroxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wantedBy = [
|
wantedBy = ["multi-user.target"];
|
||||||
"multi-user.target"
|
|
||||||
];
|
|
||||||
description = "A third-party, open-source ProtonMail bridge";
|
description = "A third-party, open-source ProtonMail bridge";
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
|
@ -6,15 +6,6 @@
|
||||||
../../modules
|
../../modules
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
|
@ -7,14 +7,26 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 5;
|
||||||
|
device = "/dev/sda";
|
||||||
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems = {
|
||||||
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8";
|
"/" = {
|
||||||
fsType = "ext4";
|
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.tsauth-tsuru = {
|
sops.secrets.tsauth-tsuru = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/tailscale/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
environment.systemPackages = [pkgs.jq pkgs.tailscale];
|
||||||
services.tailscale = {
|
services.tailscale = {
|
||||||
useRoutingFeatures = lib.mkDefault "client";
|
useRoutingFeatures = lib.mkDefault "client";
|
||||||
|
|
|
@ -31,8 +31,6 @@
|
||||||
WOODPECKER_KEEPALIVE_MIN_TIME = "10s";
|
WOODPECKER_KEEPALIVE_MIN_TIME = "10s";
|
||||||
WOODPECKER_HEALTHCHECK = "true";
|
WOODPECKER_HEALTHCHECK = "true";
|
||||||
};
|
};
|
||||||
extraGroups = [
|
extraGroups = ["docker"];
|
||||||
"docker"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,34 +7,42 @@
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
boot = {
|
||||||
boot.initrd.kernelModules = [];
|
kernelModules = [];
|
||||||
boot.kernelModules = [];
|
extraModulePackages = [];
|
||||||
boot.extraModulePackages = [];
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
fileSystems."/" = {
|
configurationLimit = 5;
|
||||||
device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c";
|
device = "/dev/sda";
|
||||||
fsType = "ext4";
|
useOSProber = false;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home/notoh/docker/stash/data" = {
|
fileSystems = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/stash";
|
"/" = {
|
||||||
fsType = "nfs";
|
device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c";
|
||||||
};
|
fsType = "ext4";
|
||||||
|
};
|
||||||
fileSystems."/media" = {
|
"/home/notoh/docker/stash/data" = {
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/media";
|
device = "192.168.1.199:/mnt/Sutoreji/stash";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
};
|
};
|
||||||
|
"/media" = {
|
||||||
fileSystems."/nas/restic" = {
|
device = "192.168.1.199:/mnt/Sutoreji/media";
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
|
fsType = "nfs";
|
||||||
fsType = "nfs";
|
};
|
||||||
};
|
"/nas/restic" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
|
||||||
fileSystems."/var/lib/paperless-ngx/media" = {
|
fsType = "nfs";
|
||||||
device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
|
};
|
||||||
fsType = "nfs";
|
"/var/lib/paperless-ngx/media" = {
|
||||||
|
device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
|
||||||
|
fsType = "nfs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
sops.secrets.restic-yuki = {
|
sops.secrets.restic-yuki = {sopsFile = ../../../secrets/restic/secrets.yaml;};
|
||||||
sopsFile = ../../../secrets/restic/secrets.yaml;
|
|
||||||
};
|
|
||||||
environment.systemPackages = [pkgs.restic];
|
environment.systemPackages = [pkgs.restic];
|
||||||
services.restic = {
|
services.restic = {
|
||||||
backups = {
|
backups = {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
_: {
|
_: {
|
||||||
virtualisation.oci-containers.containers.stash = {
|
virtualisation.oci-containers.containers.stash = {
|
||||||
image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb";
|
image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb"; # v0.24.3
|
||||||
|
ports = ["9999:9999"];
|
||||||
environment = {
|
environment = {
|
||||||
STASH_STASH = "/data/";
|
STASH_STASH = "/data/";
|
||||||
STASH_GENERATED = "/generated/";
|
STASH_GENERATED = "/generated/";
|
||||||
|
@ -17,8 +18,5 @@ _: {
|
||||||
"/home/notoh/docker/stash/generated:/generated"
|
"/home/notoh/docker/stash/generated:/generated"
|
||||||
"/home/notoh/docker/stash/blobs:/blobs"
|
"/home/notoh/docker/stash/blobs:/blobs"
|
||||||
];
|
];
|
||||||
ports = [
|
|
||||||
"9999:9999"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
_: {
|
_: {
|
||||||
virtualisation.oci-containers.containers.wallos = {
|
virtualisation.oci-containers.containers.wallos = {
|
||||||
image = "bellamy/wallos@sha256:d3846ab980095be55a3c07633cca905bf29505bc63e5d92ad49938f56fd7b9f7";
|
image = "bellamy/wallos@sha256:d3846ab980095be55a3c07633cca905bf29505bc63e5d92ad49938f56fd7b9f7";
|
||||||
ports = [
|
ports = ["8282:80"];
|
||||||
"8282:80"
|
|
||||||
];
|
|
||||||
volumes = [
|
volumes = [
|
||||||
"/home/notoh/docker/wallos/db:/var/www/html/db"
|
"/home/notoh/docker/wallos/db:/var/www/html/db"
|
||||||
"/home/notoh/docker/wallos/logos:/var/www/html/images/uploads/logos"
|
"/home/notoh/docker/wallos/logos:/var/www/html/images/uploads/logos"
|
||||||
];
|
];
|
||||||
environment = {
|
environment = {TZ = "America/New_York";};
|
||||||
TZ = "America/New_York";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
3
statix.toml
Normal file
3
statix.toml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
disabled = []
|
||||||
|
nix_version = '2.4'
|
||||||
|
ignore = ['.direnv']
|
Loading…
Reference in a new issue