Compare commits

..

No commits in common. "034bc87e371c3985d748f76ae68f41255faf7960" and "2d311af09f021913f61bc36318cd87b5acd25f40" have entirely different histories.

75 changed files with 755 additions and 2048 deletions

1
.gitignore vendored
View file

@ -1,2 +1 @@
result result
.pre-commit-config.yaml

17
.woodpecker/checks.yml Normal file
View file

@ -0,0 +1,17 @@
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 .

View file

@ -1,18 +1,27 @@
when: when:
- branch: flake-lock-update - branch: flake-lock-update
- 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]

View file

@ -49,7 +49,6 @@
+ 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!)

View file

@ -157,22 +157,6 @@
"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": [
@ -249,24 +233,6 @@
"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=",
@ -281,27 +247,6 @@
"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",
@ -542,22 +487,6 @@
} }
}, },
"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=",
@ -654,22 +583,6 @@
} }
}, },
"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=",
@ -700,28 +613,6 @@
"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",
@ -737,7 +628,6 @@
"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"
} }
@ -797,7 +687,7 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": "nixpkgs-stable_3" "nixpkgs-stable": "nixpkgs-stable_2"
}, },
"locked": { "locked": {
"lastModified": 1706410821, "lastModified": 1706410821,
@ -873,21 +763,6 @@
"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"
@ -957,8 +832,8 @@
}, },
"yazi": { "yazi": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_8", "nixpkgs": "nixpkgs_7",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {

View file

@ -10,7 +10,6 @@
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";
@ -40,42 +39,18 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { outputs = {nixpkgs, ...} @ inputs: let
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

View file

@ -25,4 +25,3 @@ 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

View file

@ -1,26 +0,0 @@
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": {
}
}

View file

@ -1,8 +1,9 @@
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 css = App.configDir + "/style.css"; const scss = App.configDir + '/main.scss'
const css = App.configDir + '/style.css'
Utils.exec(`sass ${scss} ${css}`); Utils.exec(`sass ${scss} ${css}`);
@ -18,6 +19,6 @@ Utils.monitorFile(`${App.configDir}/scss`, reloadCss, "directory");
export default { export default {
style: css, style: css,
windows: [ windows: [
Bar(2), Bar(2)
], ]
}; }

View file

@ -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,
};

View file

@ -1,42 +1,40 @@
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 = () => const Start = () => Widget.Box({
Widget.Box({
hpack: "start", hpack: "start",
children: [ children: [
nixosLogo(), nixosLogo(),
Workspaces(), Workspaces(),
], ]
}); });
const Center = () => const Center = () => Widget.Box({
Widget.Box({
children: [ children: [
Media(), Media(),
], ]
}); });
const End = () => const End = () => Widget.Box({
Widget.Box({
hpack: "end", hpack: "end",
children: [ children: [
Time(), Time(),
], ]
}); });
const Bar = (monitor) => const Bar = (monitor) => Widget.Window({
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 { Bar }; export {
Bar
}

View file

@ -1,18 +1,17 @@
import { Hyprland, Widget } from "../../import.js"; import { Hyprland, Widget } from "../../import.js";
const Workspaces = () => const Workspaces = () => Widget.Box({
Widget.Box({ class_name: 'workspaces',
class_name: "workspaces", children: Hyprland.bind('workspaces').transform(ws => {
children: Hyprland.bind("workspaces").transform((ws) => { return ws.map(({ id }) => Widget.Button({
return ws.map(({ id }) => on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`),
Widget.Button({ child: Widget.Label(`${id}`),
on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`), class_name: Hyprland.active.workspace.bind('id')
child: Widget.Label(`${id}`), .transform(i => `${i === id ? 'focused' : ''}`),
class_name: Hyprland.active.workspace.bind("id") }));
.transform((i) => `${i === id ? "focused" : ""}`),
})
);
}), }),
}); });
export { Workspaces }; export {
Workspaces
}

View file

@ -1,9 +1,9 @@
import { Widget } from "../../../import.js"; import { Widget } from '../../../import.js';
const nixosLogo = () => const nixosLogo = () => Widget.Icon({
Widget.Icon({ icon: '/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png'
icon: });
"/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png",
});
export { nixosLogo }; export {
nixosLogo
}

View file

@ -1,16 +1,17 @@
import { Mpris, Widget } from "../../import.js"; import { Widget, Mpris } from "../../import.js";
const Media = () => const Media = () => Widget.Box({
Widget.Box({ class_name: 'media',
class_name: "media", child: Widget.Label('-').hook(Mpris, self => {
child: Widget.Label("-").hook(Mpris, (self) => { if (Mpris.players[0]) {
if (Mpris.players[0]) { const { track_artists, track_title } = Mpris.players[0];
const { track_artists, track_title } = Mpris.players[0]; self.label = `${track_artists.join(', ')} - ${track_title}`;
self.label = `${track_artists.join(", ")} - ${track_title}`; } else {
} else { self.label = 'Nothing is playing';
self.label = "Nothing is playing"; }
} }, 'player-changed'),
}, "player-changed"), });
});
export { Media }; export {
Media
}

View file

@ -1,16 +1,18 @@
import { Utils, Widget } from "../../import.js"; import { Widget, Utils } from '../../import.js';
const Time = () =>
Widget.Box({ const Time = () => 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 { Time }; export {
Time
}

View file

@ -1,15 +0,0 @@
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Node",
"target": "ES2020",
"jsx": "react",
"allowImportingTsExtensions": true,
"strictNullChecks": true,
"strictFunctionTypes": true
},
"exclude": [
"node_modules",
"**/node_modules/*"
]
}

File diff suppressed because it is too large Load diff

View file

@ -1,15 +0,0 @@
{
"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"
}
}

View file

@ -4,7 +4,9 @@
./neofetch ./neofetch
./nushell ./nushell
./starship ./starship
./git
./lazygit ./lazygit
./direnv
./yazi ./yazi
]; ];
@ -29,46 +31,21 @@
p7zip p7zip
]; ];
services = { services.gpg-agent = {
gpg-agent = { enable = true;
enable = true; defaultCacheTtl = 3600;
defaultCacheTtl = 3600; pinentryFlavor = "curses";
pinentryFlavor = "curses"; enableSshSupport = true;
enableSshSupport = true; enableNushellIntegration = true;
enableNushellIntegration = true;
};
}; };
programs = { programs.bat.enable = true;
bat.enable = true;
git = { programs.zoxide = {
enable = true; enable = true;
delta.enable = true; enableNushellIntegration = true;
userEmail = "github@notohh.dev"; options = [
userName = "notohh"; "--cmd cdd"
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"];
};
}; };
} }

7
home/direnv/default.nix Normal file
View file

@ -0,0 +1,7 @@
_: {
programs.direnv = {
enable = true;
enableNushellIntegration = true;
nix-direnv.enable = true;
};
}

21
home/git/default.nix Normal file
View file

@ -0,0 +1,21 @@
_: {
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";
};
};
}

View file

@ -24,7 +24,7 @@
name = "lua"; name = "lua";
auto-format = true; auto-format = true;
formatter = { formatter = {
command = lib.getExe stylua; command = lib.getExe luaformatter;
}; };
} }
]; ];

View file

@ -1,6 +1,7 @@
_: { _: {
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";

View file

@ -7,16 +7,20 @@ _: {
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 {

View file

@ -24,6 +24,9 @@ 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

View file

@ -14,46 +14,24 @@
''; '';
}; };
in { in {
imports = [./greetd.nix]; imports = [
environment = { ./greetd.nix
systemPackages = with pkgs; [ ];
dbus-hyprland-environment
wayland environment.systemPackages = with pkgs; [
glib dbus-hyprland-environment
grim wayland
slurp glib
satty grim
wl-clipboard slurp
wlr-randr satty
swayidle wl-clipboard
swaylock-effects wlr-randr
hyprpicker swayidle
swww swaylock-effects
]; hyprpicker
sessionVariables = { swww
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 = {
@ -66,4 +44,29 @@ 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
'';
} }

View file

@ -9,7 +9,7 @@
]; ];
exec-once = [ exec-once = [
"ags" "ags"
"swww init && swww img ~/Pictures/wallpapers/frieren.png" "swww init && swww img ~/Pictures/wallpapers/city.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"

View file

@ -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

View file

@ -1,183 +1,159 @@
function Manager:render(area) function Manager:render(area)
self.area = area self.area = area
local chunks = ui.Layout() local chunks = ui.Layout():direction(ui.Layout.HORIZONTAL):constraints({
:direction(ui.Layout.HORIZONTAL) ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
:constraints({ ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all), ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all)
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all), }):split(area)
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( return ui.Bar(ui.Rect {
ui.Rect({ x = math.max(0, x),
x = math.max(0, x), y = math.max(0, y),
y = math.max(0, y), w = math.min(1, area.w),
w = math.min(1, area.w), h = math.min(1, area.h)
h = math.min(1, area.h), }, ui.Bar.TOP):symbol(c)
}), 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[1], ui.Bar.RIGHT), ui.Bar(chunks[3], ui.Bar.LEFT),
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 if mode == "UNSET" then mode = "UN-SET" end
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 if h == nil then return ui.Line {} end
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) .. " ") ui.Span(" " .. ya.readable_size(h:size() or h.cha.length) .. " "):fg(
:fg(style.bg) style.bg):bg(THEME.status.separator_style.bg),
:bg(THEME.status.separator_style.bg), ui.Span(THEME.status.separator_close):fg(THEME.status.separator_style.fg)
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 if h == nil then return ui.Span("") end
return ui.Span("") local linked = ""
end if h.link_to ~= nil then linked = " -> " .. tostring(h.link_to) end
local linked = "" return ui.Span(" " .. h.name .. 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 if h == nil then return ui.Line {} end
return ui.Line({})
end
local perm = h.cha:permissions() local perm = h.cha:permissions()
if perm == nil then if perm == nil then return ui.Line {} end
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.separator_style.fg), ui.Span(" " .. THEME.status.separator_open):fg(THEME.status
ui.Span(percent):fg(style.bg):bg(THEME.status.separator_style.bg), .separator_style.fg),
}) 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:owner(), self:permissions(), self:percentage(), self:position()
self:permissions(), }
self:percentage(), return {
self:position(), ui.Paragraph(area, {left}),
}) ui.Paragraph(area, {right}):align(ui.Paragraph.RIGHT),
return { table.unpack(Progress:render(area, right:width()))
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 if h == nil or ya.target_family() ~= "unix" then return ui.Line {} end
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

View file

@ -1,4 +1,4 @@
_: { {...}: {
imports = [ imports = [
./layouts.nix ./layouts.nix
]; ];

View file

@ -7,24 +7,34 @@
../../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 = { services.xserver.enable = true;
pipewire = { services.xserver.displayManager.sddm.enable = true;
enable = true;
alsa.enable = true; services.xserver = {
alsa.support32Bit = true; layout = "us";
pulse.enable = true; xkbVariant = "";
};
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;
};
} }

View file

@ -8,38 +8,24 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
kernelModules = ["kvm-intel"]; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = ["kvm-intel"];
loader = { boot.extraModulePackages = [];
systemd-boot = {
enable = true; fileSystems."/" = {
configurationLimit = 8; device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
}; fsType = "ext4";
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/boot/efi" = {
"/" = { device = "/dev/disk/by-uuid/4D09-1D57";
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf"; fsType = "vfat";
fsType = "ext4"; };
};
"/boot/efi" = { fileSystems."/nas/restic" = {
device = "/dev/disk/by-uuid/4D09-1D57"; device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
fsType = "vfat"; fsType = "nfs";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -17,11 +17,12 @@
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
@ -32,7 +33,12 @@
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 {})

View file

@ -3,8 +3,12 @@
config, config,
... ...
}: { }: {
sops.secrets.restic-ame = {sopsFile = ../../../secrets/restic/secrets.yaml;}; sops.secrets.restic-ame = {
sops.secrets.ame-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;}; sopsFile = ../../../secrets/restic/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 = {

View file

@ -6,6 +6,19 @@
../../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 = "";

View file

@ -7,31 +7,19 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
kernel.sysctl = {"kernel.shmmax" = 100663296;}; boot.kernelModules = [];
extraModulePackages = []; boot.extraModulePackages = [];
loader.grub = {
enable = true; fileSystems."/" = {
configurationLimit = 5; device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927";
device = "/dev/sda"; fsType = "ext4";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/nas/restic" = {
"/" = { device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927"; fsType = "nfs";
fsType = "ext4";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -3,7 +3,9 @@
config, config,
... ...
}: { }: {
sops.secrets.restic-arashi = {sopsFile = ../../../secrets/restic/secrets.yaml;}; sops.secrets.restic-arashi = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
environment.systemPackages = [pkgs.restic]; environment.systemPackages = [pkgs.restic];
services.restic = { services.restic = {
backups = { backups = {

View file

@ -6,6 +6,15 @@
../../modules ../../modules
]; ];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = { services.xserver = {
layout = "us"; layout = "us";
xkbVariant = ""; xkbVariant = "";

View file

@ -7,26 +7,14 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = [];
loader.grub = { boot.extraModulePackages = [];
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";
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534"; fsType = "ext4";
fsType = "ext4";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -6,6 +6,15 @@
../../modules ../../modules
]; ];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = { services.xserver = {
layout = "us"; layout = "us";
xkbVariant = ""; xkbVariant = "";

View file

@ -7,38 +7,29 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = [];
loader.grub = { boot.extraModulePackages = [];
enable = true;
configurationLimit = 5; fileSystems."/" = {
device = "/dev/sda"; device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b";
useOSProber = false; fsType = "ext4";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/media" = {
"/" = { device = "192.168.1.199:/mnt/Sutoreji/media";
device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b"; fsType = "nfs";
fsType = "ext4"; };
};
"/media" = { fileSystems."/stash" = {
device = "192.168.1.199:/mnt/Sutoreji/media"; device = "192.168.1.199:/mnt/Sutoreji/stash";
fsType = "nfs"; fsType = "nfs";
}; };
"/stash" = {
device = "192.168.1.199:/mnt/Sutoreji/stash"; fileSystems."/nas/restic" = {
fsType = "nfs"; device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
}; fsType = "nfs";
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -1,40 +1,42 @@
{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 = { services.radarr = {
radarr = { enable = true;
enable = true; openFirewall = 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

View file

@ -3,7 +3,9 @@
config, config,
... ...
}: { }: {
sops.secrets.restic-kariru = {sopsFile = ../../../secrets/restic/secrets.yaml;}; sops.secrets.restic-kariru = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
environment.systemPackages = [pkgs.restic]; environment.systemPackages = [pkgs.restic];
services.restic = { services.restic = {
backups = { backups = {

View file

@ -6,6 +6,15 @@
../../modules ../../modules
]; ];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/vda";
useOSProber = true;
};
};
services.xserver = { services.xserver = {
layout = "us"; layout = "us";
xkbVariant = ""; xkbVariant = "";

View file

@ -7,30 +7,19 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
kernelModules = ["kvm-amd"]; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = ["kvm-amd"];
loader.grub = { boot.extraModulePackages = [];
enable = true;
configurationLimit = 5; fileSystems."/" = {
device = "/dev/vda"; device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
useOSProber = true; fsType = "ext4";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/var/lib/slab" = {
"/" = { device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657"; fsType = "ext4";
fsType = "ext4";
};
"/var/lib/slab" = {
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
fsType = "ext4";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -5,7 +5,9 @@
}: { }: {
environment.systemPackages = [pkgs.minio-client]; environment.systemPackages = [pkgs.minio-client];
systemd.services.minio.environment = {MINIO_BROWSER_REDIRECT = "false";}; systemd.services.minio.environment = {
MINIO_BROWSER_REDIRECT = "false";
};
sops.secrets.minio = { sops.secrets.minio = {
owner = "minio"; owner = "minio";

View file

@ -4,7 +4,9 @@
pkgs, pkgs,
... ...
}: { }: {
sops.secrets.tsauth-kaze = {sopsFile = ../../../secrets/tailscale/secrets.yaml;}; sops.secrets.tsauth-kaze = {
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";

View file

@ -6,6 +6,15 @@ _: {
../../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 = {

View file

@ -7,34 +7,24 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = [];
loader.grub = { boot.extraModulePackages = [];
enable = true;
configurationLimit = 5; fileSystems."/" = {
device = "/dev/sda"; device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb";
useOSProber = false; fsType = "ext4";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/home/notoh/justlog/logs" = {
"/" = { device = "192.168.1.199:/mnt/Sutoreji/twitchlogs";
device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb"; fsType = "nfs";
fsType = "ext4"; };
};
"/home/notoh/justlog/logs" = { fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/twitchlogs"; device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
fsType = "nfs"; fsType = "nfs";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -3,7 +3,9 @@
config, config,
... ...
}: { }: {
sops.secrets.restic-sakura = {sopsFile = ../../../secrets/restic/secrets.yaml;}; sops.secrets.restic-sakura = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
environment.systemPackages = [pkgs.restic]; environment.systemPackages = [pkgs.restic];
services.restic = { services.restic = {
backups = { backups = {

View file

@ -3,9 +3,12 @@
systemd.services.rustypaste = { systemd.services.rustypaste = {
enable = true; enable = true;
wantedBy = ["multi-user.target"]; wantedBy = [
"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 = {

View file

@ -4,7 +4,9 @@
pkgs, pkgs,
... ...
}: { }: {
sops.secrets.tsauth-sakura = {sopsFile = ../../../secrets/tailscale/secrets.yaml;}; sops.secrets.tsauth-sakura = {
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";

View file

@ -6,8 +6,7 @@ _: {
../../modules ../../modules
]; ];
services.snowflake-proxy.enable = true; boot.tmp.cleanOnBoot = 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"

View file

@ -1,27 +1,20 @@
{modulesPath, ...}: { {modulesPath, ...}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")]; imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot.loader.grub = {
boot = { efiSupport = true;
tmp.cleanOnBoot = true; efiInstallAsRemovable = true;
loader.grub = { device = "nodev";
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
kernelModules = ["nvme"];
};
}; };
fileSystems = { fileSystems."/boot" = {
"/" = { device = "/dev/disk/by-uuid/B793-1B2C";
device = "/dev/sda1"; fsType = "vfat";
fsType = "ext4"; };
};
"/boot" = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
device = "/dev/disk/by-uuid/B793-1B2C"; boot.initrd.kernelModules = ["nvme"];
fsType = "vfat"; fileSystems."/" = {
}; device = "/dev/sda1";
fsType = "ext4";
}; };
} }

View file

@ -2,8 +2,10 @@ _: {
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@sha256:d85dab9704d771f3a33f21439f1bf34748fb5bf1987668ff402b5b17d1973f5a"; image = "felddy/foundryvtt:sha-50af627";
volumes = ["/home/notoh/docker/foundryvtt:/data"]; volumes = [
"/home/notoh/docker/foundryvtt:/data"
];
environment = { environment = {
CONTAINER_PRESERVE_CONFIG = "true"; CONTAINER_PRESERVE_CONFIG = "true";
}; };
@ -11,6 +13,8 @@ _: {
/run/secrets/foundry-username /run/secrets/foundry-username
/run/secrets/foundry-password /run/secrets/foundry-password
]; ];
ports = ["30000:30000"]; ports = [
"30000:30000"
];
}; };
} }

View file

@ -1,8 +1,12 @@
_: { _: {
virtualisation.oci-containers.containers.glances = { virtualisation.oci-containers.containers.glances = {
image = "nicolargo/glances"; image = "nicolargo/glances";
ports = ["61208-61209:61208-61209"]; ports = [
volumes = ["/var/run/docker.sock:/var/run/docker.sock"]; "61208-61209:61208-61209"
];
volumes = [
"/var/run/docker.sock:/var/run/docker.sock"
];
environment = { environment = {
GLANCES_OPT = "-w"; GLANCES_OPT = "-w";
}; };

View file

@ -12,6 +12,8 @@ _: {
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 = ["/home/notoh/docker/modded-mc:/data:rw"]; volumes = [
"/home/notoh/docker/modded-mc:/data:rw"
];
}; };
} }

View file

@ -4,8 +4,12 @@
... ...
}: { }: {
sops.secrets = { sops.secrets = {
restic-sora = {sopsFile = ../../../secrets/restic/secrets.yaml;}; restic-sora = {
sora-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;}; sopsFile = ../../../secrets/restic/secrets.yaml;
};
sora-s3 = {
sopsFile = ../../../secrets/s3/secrets.yaml;
};
}; };
environment.systemPackages = [pkgs.restic]; environment.systemPackages = [pkgs.restic];
services.restic = { services.restic = {

View file

@ -4,7 +4,9 @@
pkgs, pkgs,
... ...
}: { }: {
sops.secrets.tsauth-sora = {sopsFile = ../../../secrets/tailscale/secrets.yaml;}; sops.secrets.tsauth-sora = {
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

View file

@ -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";

View file

@ -16,22 +16,23 @@
../../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"];
@ -52,28 +53,41 @@
}; };
}; };
security = { services.pcscd.enable = true;
rtkit.enable = true; services.davfs2.enable = true;
polkit.enable = true;
pam.services.swaylock = { hardware.pulseaudio.enable = false;
text = '' security.rtkit.enable = true;
auth include login services.pipewire = {
''; enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
lowLatency = {
enable = true;
quantum = 64;
rate = 48000;
}; };
}; };
programs = { programs.gamemode.enable = true;
gamemode.enable = true;
steam = { programs.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;

View file

@ -8,46 +8,34 @@
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
kernelModules = ["v4l2loopback" "kvm-intel"]; boot.initrd.kernelModules = [];
extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; boot.kernelModules = ["kvm-intel"];
loader = { boot.extraModulePackages = [];
systemd-boot = {
enable = true; fileSystems."/" = {
configurationLimit = 10; device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff";
}; fsType = "ext4";
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/boot/efi" = {
"/" = { device = "/dev/disk/by-uuid/C356-B67C";
device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff"; fsType = "vfat";
fsType = "ext4"; };
};
"/boot/efi" = { fileSystems."/hdd" = {
device = "/dev/disk/by-uuid/C356-B67C"; device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b";
fsType = "vfat"; fsType = "ext4";
}; };
"/hdd" = {
device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b"; fileSystems."/ssd" = {
fsType = "ext4"; device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
}; fsType = "ext4";
"/ssd" = { };
device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
fsType = "ext4"; fileSystems."/nas/restic" = {
}; device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
"/nas/restic" = { fsType = "nfs";
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -43,6 +43,7 @@
imv imv
mpv mpv
ffmpeg ffmpeg
nom
rustypaste-cli rustypaste-cli
gimp gimp
cryptomator cryptomator
@ -55,6 +56,7 @@
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 {})
]; ];

View file

@ -3,7 +3,9 @@
systemd.services.atticd = { systemd.services.atticd = {
enable = true; enable = true;
wantedBy = ["multi-user.target"]; wantedBy = [
"multi-user.target"
];
description = "atticd"; description = "atticd";
serviceConfig = { serviceConfig = {

View file

@ -1,7 +1,7 @@
{...}: { {...}: {
imports = [ imports = [
./restic.nix
./atticd.nix ./atticd.nix
./restic.nix
./hydroxide.nix ./hydroxide.nix
]; ];
} }

View file

@ -4,7 +4,9 @@
systemd.services.hydroxide = { systemd.services.hydroxide = {
enable = true; enable = true;
wantedBy = ["multi-user.target"]; wantedBy = [
"multi-user.target"
];
description = "A third-party, open-source ProtonMail bridge"; description = "A third-party, open-source ProtonMail bridge";
serviceConfig = { serviceConfig = {

View file

@ -6,6 +6,15 @@
../../modules ../../modules
]; ];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = { services.xserver = {
layout = "us"; layout = "us";
xkbVariant = ""; xkbVariant = "";

View file

@ -7,26 +7,14 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = [];
loader.grub = { boot.extraModulePackages = [];
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";
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8"; fsType = "ext4";
fsType = "ext4";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -4,7 +4,9 @@
pkgs, pkgs,
... ...
}: { }: {
sops.secrets.tsauth-tsuru = {sopsFile = ../../../secrets/tailscale/secrets.yaml;}; sops.secrets.tsauth-tsuru = {
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";

View file

@ -31,6 +31,8 @@
WOODPECKER_KEEPALIVE_MIN_TIME = "10s"; WOODPECKER_KEEPALIVE_MIN_TIME = "10s";
WOODPECKER_HEALTHCHECK = "true"; WOODPECKER_HEALTHCHECK = "true";
}; };
extraGroups = ["docker"]; extraGroups = [
"docker"
];
}; };
} }

View file

@ -7,42 +7,34 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot = { boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = []; boot.initrd.kernelModules = [];
extraModulePackages = []; boot.kernelModules = [];
loader.grub = { boot.extraModulePackages = [];
enable = true;
configurationLimit = 5; fileSystems."/" = {
device = "/dev/sda"; device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c";
useOSProber = false; fsType = "ext4";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
}; };
fileSystems = { fileSystems."/home/notoh/docker/stash/data" = {
"/" = { device = "192.168.1.199:/mnt/Sutoreji/stash";
device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c"; fsType = "nfs";
fsType = "ext4"; };
};
"/home/notoh/docker/stash/data" = { fileSystems."/media" = {
device = "192.168.1.199:/mnt/Sutoreji/stash"; device = "192.168.1.199:/mnt/Sutoreji/media";
fsType = "nfs"; fsType = "nfs";
}; };
"/media" = {
device = "192.168.1.199:/mnt/Sutoreji/media"; fileSystems."/nas/restic" = {
fsType = "nfs"; device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
}; fsType = "nfs";
"/nas/restic" = { };
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
fsType = "nfs"; fileSystems."/var/lib/paperless-ngx/media" = {
}; device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
"/var/lib/paperless-ngx/media" = { fsType = "nfs";
device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

@ -3,7 +3,9 @@
config, config,
... ...
}: { }: {
sops.secrets.restic-yuki = {sopsFile = ../../../secrets/restic/secrets.yaml;}; sops.secrets.restic-yuki = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
environment.systemPackages = [pkgs.restic]; environment.systemPackages = [pkgs.restic];
services.restic = { services.restic = {
backups = { backups = {

View file

@ -1,7 +1,6 @@
_: { _: {
virtualisation.oci-containers.containers.stash = { virtualisation.oci-containers.containers.stash = {
image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb"; # v0.24.3 image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb";
ports = ["9999:9999"];
environment = { environment = {
STASH_STASH = "/data/"; STASH_STASH = "/data/";
STASH_GENERATED = "/generated/"; STASH_GENERATED = "/generated/";
@ -18,5 +17,8 @@ _: {
"/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"
];
}; };
} }

View file

@ -1,11 +1,15 @@
_: { _: {
virtualisation.oci-containers.containers.wallos = { virtualisation.oci-containers.containers.wallos = {
image = "bellamy/wallos@sha256:d3846ab980095be55a3c07633cca905bf29505bc63e5d92ad49938f56fd7b9f7"; image = "bellamy/wallos@sha256:d3846ab980095be55a3c07633cca905bf29505bc63e5d92ad49938f56fd7b9f7";
ports = ["8282:80"]; ports = [
"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 = {TZ = "America/New_York";}; environment = {
TZ = "America/New_York";
};
}; };
} }

View file

@ -1,3 +0,0 @@
disabled = []
nix_version = '2.4'
ignore = ['.direnv']