Compare commits

..

No commits in common. "d32bad92f0ce43f026471e2ec7d299f05e84f79b" and "87c59890d5a12af923e7183b571489881d529439" have entirely different histories.

28 changed files with 60 additions and 411 deletions

2
.github/CODEOWNERS vendored
View file

@ -1,2 +0,0 @@
# Me, myself and I!
* @jokiller230

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -1,20 +0,0 @@
name: "Nix: check for unused code"
on:
pull_request:
push:
paths:
- "**.nix"
- ".github/workflows/deadnix.yml"
jobs:
deadnix:
name: Run deadnix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
- uses: cachix/cachix-action@v14
with:
name: deadnix
- uses: phucleeuwu/deadnix-action@v1

View file

@ -1,30 +0,0 @@
name: "Nix: validate flake"
on:
workflow_dispatch:
push:
paths:
- "**.nix"
- "**.lock"
- ".github/workflows/**.yml"
jobs:
check-flake:
name: Validate x86_64-linux
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
persist-credentials: false
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
experimental-features = flakes nix-command recursive-nix pipe-operator
- name: Validate Flake
run: nix flake check

View file

@ -1,16 +1,9 @@
<br> <br>
<div align="center"><img src=".github/assets/puzzlevision.png" width="120px" height="auto"></div> <div align="center"><img src="assets/puzzlevision.png" width="120px" height="auto"></div>
<h1 align="center">✨ Puzzlevision ✨<br></h1> <h1 align="center">✨ Puzzlevision ✨<br></h1>
<div align="center">Non-stop entertainment! The wackiest NixOS configuration to-date.</div> <div align="center">Non-stop entertainment! The wackiest NixOS configuration to-date.</div>
<br> <br>
<div align="center">
<img src=".github/assets/powered-by-nixos.gif" width="88px" height="31px">
<img src=".github/assets/i-love-reproducing-nix-btw.gif" width="88px" height="31px">
<img src=".github/assets/anything-but-windows.gif" width="88px" height="31px">
<img src=".github/assets/code-with-zed.webp" width="88px" height="31px">
</div>
<br>
## 🚧 State of development ## 🚧 State of development
All the basic functionality of v2 should be working correctly, including: All the basic functionality of v2 should be working correctly, including:
@ -21,13 +14,9 @@ All the basic functionality of v2 should be working correctly, including:
- Creating users in your systems through ${self.namespace}.users, - Creating users in your systems through ${self.namespace}.users,
automatically maps home-manager configurations from the `homes` directory to their corresponding users. automatically maps home-manager configurations from the `homes` directory to their corresponding users.
Since I am actively using this configuration on my main workstation, things are evolving quickly, Nonetheless, one should still consider this implementation experimental,
leftover issues are actively being resolved and the list of modules is ever-growing. once I start using this on my laptop,
Nonetheless, one should still consider this implementation experimental. I'll aim for production grade stability.
My next goal is to setup an attic binary cache,
with a build/release workflow that runs in regular intervals.
(similar to isabelroses's workflow setup)
## 🚀 Deployment ## 🚀 Deployment
To deploy a system run the following command in your terminal of choice. To deploy a system run the following command in your terminal of choice.
@ -77,27 +66,6 @@ Lastly, when adding new systems, make sure to update any required secret files w
nix-shell -p sops --run "sops updatekeys secrets/example.yaml" nix-shell -p sops --run "sops updatekeys secrets/example.yaml"
``` ```
## 👷 CI/CD coverage
Currently, this repository houses 2 workflows, which are executed when pushing to the v2 branch.
#### ↪️ `Nix: check for unused code`
This workflow can be found in `.github/workflows/deadnix.yml`,
and should be pretty self-explanatory.
Here's what it does:
1. Checks out current branch
2. Finds any unused variables/imports etc...
3. Creates a new commit, instantly removing any unused code
#### ↪️ `Nix: validate flake`
This workflow can be found in `.github/workflows/validate.yml`.
It simply validates a flake using `nix flake check`.
To be specific, it does the following:
1. Checks out current branch
2. Installs nix with some experimental features (flakes, nix-command, recursive-nix, pipe-operator)
3. Runs `nix flake check` on the codebase
## 📝 Goals and improvements ## 📝 Goals and improvements
The main goals of this rewritten flake are: The main goals of this rewritten flake are:

View file

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Before After
Before After

168
flake.lock generated
View file

@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747519437, "lastModified": 1746650299,
"narHash": "sha256-uv9Wv59d+mckS2CkorOF484wp2G5TNGijdoBZ5RkAk0=", "narHash": "sha256-4+pxk1KcSH8ww3tgN808nNJ3E7Q8gNWI+U0sesW7mBQ=",
"owner": "catppuccin", "owner": "catppuccin",
"repo": "nix", "repo": "nix",
"rev": "3ba714046ee32373e88166e6e9474d6ae6a5b734", "rev": "f746600f15b69df05c84e3037749a3be5b1276d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -22,11 +22,11 @@
}, },
"easy-hosts": { "easy-hosts": {
"locked": { "locked": {
"lastModified": 1747174689, "lastModified": 1743693165,
"narHash": "sha256-WEA2HdjC90GLf5VpMLpvOF3/uSSq6AV4DQ4ezLFspc0=", "narHash": "sha256-BAYno/4P0hq3aaqfVLbDmv8pgvzJWcN+4L8jK8SzaMo=",
"owner": "tgirlcloud", "owner": "tgirlcloud",
"repo": "easy-hosts", "repo": "easy-hosts",
"rev": "e1210563fc527221e12544ce55cd954acf94e7ed", "rev": "611cc21942feb55c6a38410dfe8eee3fb5f08c8d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -35,20 +35,6 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat": {
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"revCount": 69,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@ -76,11 +62,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747955385, "lastModified": 1746727295,
"narHash": "sha256-AKoBFaEGN02tGvBlkwVIDOGXouHvrTTfOUcvBDGxkxQ=", "narHash": "sha256-0364XVBdfEA8rWfqEPvsgBqGFfq5r9LAo9CS9tvT7tg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a868570581f0dbdef7e33c8c9bb34b735dfcbacf", "rev": "a51598236f23c89e59ee77eb8e0614358b0e896c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -89,71 +75,13 @@
"type": "github" "type": "github"
} }
}, },
"home-manager_2": {
"inputs": {
"nixpkgs": [
"youtube-music",
"nixpkgs"
]
},
"locked": {
"lastModified": 1747439237,
"narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixcord": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs",
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1747878048,
"narHash": "sha256-kAR4Ox+vShPzsUar/1rHarRgUBPpm7hxwi7sIffNYa4=",
"owner": "kaylorben",
"repo": "nixcord",
"rev": "5f737debf65b8409392604098a7489d997746450",
"type": "github"
},
"original": {
"owner": "kaylorben",
"repo": "nixcord",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1744868846, "lastModified": 1746461020,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1747744144,
"narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -163,7 +91,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1744868846, "lastModified": 1744868846,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
@ -185,22 +113,20 @@
"easy-hosts": "easy-hosts", "easy-hosts": "easy-hosts",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixcord": "nixcord", "nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_2", "sops-nix": "sops-nix"
"sops-nix": "sops-nix",
"youtube-music": "youtube-music"
} }
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1747603214, "lastModified": 1746485181,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "narHash": "sha256-PxrrSFLaC7YuItShxmYbMgSuFFuwxBB+qsl9BZUnRvg=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "rev": "e93ee1d900ad264d65e9701a5c6f895683433386",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -208,62 +134,6 @@
"repo": "sops-nix", "repo": "sops-nix",
"type": "github" "type": "github"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"id": "systems",
"type": "indirect"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixcord",
"nixpkgs"
]
},
"locked": {
"lastModified": 1744961264,
"narHash": "sha256-aRmUh0AMwcbdjJHnytg1e5h5ECcaWtIFQa6d9gI85AI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "8d404a69efe76146368885110f29a2ca3700bee6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"youtube-music": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1747498370,
"narHash": "sha256-mJ7fLdL/A4cWHMm0n3/dcQ72Ijm+uTu/snl8iqgtbtc=",
"owner": "h-banii",
"repo": "youtube-music-nix",
"rev": "410071c47bb39a5abb672cd5c1a59bc5f853d908",
"type": "github"
},
"original": {
"owner": "h-banii",
"repo": "youtube-music-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -35,15 +35,6 @@
url = "github:catppuccin/nix"; url = "github:catppuccin/nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixcord = {
url = "github:kaylorben/nixcord";
};
youtube-music = {
url = "github:h-banii/youtube-music-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = {flake-parts, ...} @ inputs: outputs = {flake-parts, ...} @ inputs:

View file

@ -1,53 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
in {
# Enable arRPC for discord Rich Presence stuffs
services.arrpc.enable = true;
programs.nixcord = {
enable = true;
vesktop.enable = true;
discord.enable = false;
config = {
useQuickCss = true;
themeLinks = [
(mkIf config.catppuccin.enable "https://catppuccin.github.io/discord/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css")
];
frameless = true;
plugins = {
betterFolders = {
enable = true;
closeAllFolders = true;
closeAllHomeButton = true;
closeOthers = true;
};
fakeNitro = {
enable = true;
enableStickerBypass = false;
enableEmojiBypass = false;
};
betterSettings.enable = true;
betterUploadButton.enable = true;
blurNSFW.enable = true;
clearURLs.enable = true;
callTimer.enable = true;
consoleJanitor.enable = true;
copyEmojiMarkdown.enable = true;
userMessagesPronouns.enable = true;
reviewDB.enable = true;
# Vesktop exclusive
webRichPresence.enable = true;
webScreenShareFixes.enable = true;
};
};
};
}

View file

@ -1,6 +0,0 @@
/* frappe */
@import url("https://youtubemusic.catppuccin.com/src/frappe.css");
html:not(.style-scope) {
--ctp-accent: var(--ctp-blue) !important;
}

View file

@ -1,6 +0,0 @@
/* latte */
@import url("https://youtubemusic.catppuccin.com/src/latte.css");
html:not(.style-scope) {
--ctp-accent: var(--ctp-blue) !important;
}

View file

@ -1,6 +0,0 @@
/* macchiato */
@import url("https://youtubemusic.catppuccin.com/src/macchiato.css");
html:not(.style-scope) {
--ctp-accent: var(--ctp-blue) !important;
}

View file

@ -1,6 +0,0 @@
/* mocha */
@import url("https://youtubemusic.catppuccin.com/src/mocha.css");
html:not(.style-scope) {
--ctp-accent: var(--ctp-blue) !important;
}

View file

@ -1,29 +0,0 @@
{
lib,
config,
osConfig,
namespace,
...
}: let
inherit (lib) mkIf;
in {
programs.youtube-music = {
enable = true;
options = {
tray = true;
trayClickPlayPause = true;
resumeOnStart = false;
themes = [
(mkIf config.catppuccin.enable ./catppuccin-${config.catppuccin.flavor}.css)
];
language = osConfig.${namespace}.system.locale.keymap;
autoUpdates = false;
};
plugins = {
discord.enabled = true;
};
};
}

View file

@ -3,14 +3,8 @@
config, config,
... ...
}: { }: {
imports = [
./apps/discord
./apps/youtube-music
];
puzzlevision = { puzzlevision = {
themes.catppuccin.enable = true; themes.catppuccin.enable = true;
apps.zed.enable = true;
}; };
sops.secrets.wakatime-cfg = { sops.secrets.wakatime-cfg = {
@ -21,6 +15,8 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
## GENERAL ## GENERAL
youtube-music
discord
ghostty ghostty
teams-for-linux teams-for-linux
enpass enpass
@ -30,6 +26,8 @@
ungoogled-chromium ungoogled-chromium
## EDITORS ## EDITORS
nano
zed-editor
apostrophe apostrophe
jetbrains.phpstorm jetbrains.phpstorm
arduino-ide arduino-ide

View file

@ -1,18 +1,18 @@
{ {
"data": "ENC[AES256_GCM,data:UAADE/aH98MYyfxL3ZkZ06lHHTRmmRVuOhiqEyF6DP35sGTC7Mpqe++MTYBDFrD4Rraeao9T2tcu3sL22p9SW9jF7Y2L1YZ9zKKUyP2y+G8PN25GqXWaNwJQG/hxcKs8km448g==,iv:SkyBC+VkwccprAomhXUzdmSQuBDfFn22MKJwjV9ZSzo=,tag:m/uUcl9r3GW3QYCajoAhYw==,type:str]", "data": "ENC[AES256_GCM,data:NaNu0ytz8Ji7WJ4gDinY2Tsny+MzgG9vV/7xnZY/dQzB0jMHBxIRAcrzH1A+aqsANeeZPD0XGXC2qIpYUlMKBcfMxkqmlj7XnpvDiXQ9RciCNp8l1xs0wvoxjYghbD8nsL57UQ==,iv:qa1SPnWCShIiz7l4EW6tCT2gJO0qNNcDk05F5hS8H7U=,tag:zArwz8R3/uegsO1ShLjfwg==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
"recipient": "age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d", "recipient": "age1qcjcwh9tq8pzf2yr7m3hm2n3n3y5rlc30fpkr0eytju9w57ucgcsgcy79d",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5VmtTRHo4NWVuU2tiZTc5\nWUVyeU54ZmtZbi9uUWNablIxSm9aZ3hadjBnCmNiVlBXS2lEbE00VFl6QVRlQk92\nMFI0TVBMVDZiQXg3VzZTaVNEd2RROTQKLS0tIEg3aGwvWXgvVldGTjZFaS95dEVP\nUmZHaGFaNndDRWY5cXBJeGY4TVVqbTgKeFTClhSmX5IQ5+7DXk4HEwTAv4uB/HCl\nVeoKUNaTHme60hWE/J12B2PvxtRa+f6diDMFg11mQkPOZwyEcQWMpg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJS0EySk4wMGVzaUtOZWlN\nUE15SXNVOUtqUDQxV29tNGpBRkdLek5icWg0Cnd5b1FmT3VQTTBDdEtCYzQxNVdk\nWVpQMFpmTXpOcFFlMG5MQjFLTXZRUGsKLS0tIHBvakR1Q0dYdkRqVTJtLzRORzBP\nNU55UEtWUXhBdGN0M0lMQktaVmhSK00KA93LFut6jiYtlndm9Oq0ferFPT4IlBQ1\nDmnD4hWz7NLimWED7RiJ2lSO9IRgQBhLHeiLums/ZPxjFGnnO6sicg==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1ajkq0lalyc75tjhdtpx2yshw5y3wt85fwjy24luf69rvpavg33vqw6c3tc", "recipient": "age1ajkq0lalyc75tjhdtpx2yshw5y3wt85fwjy24luf69rvpavg33vqw6c3tc",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnK1NtOE9tZ0poRjdkOTBi\nbWFQbGovY1VvRDN4clJmRGdTSHlzQk5JSmtrCitSc3hnb21CMVVuclZ2YndIOWRk\naDduM3VadDBaWFRDRElZSWlUaXdUZGMKLS0tIEJOUEFoS3ZJQWtkNGFQNk1CdGxI\nSmRFQ25TSXY1S0FHQmhUbWNsT1Z2c2sKBTV2WEW+HynmrrPza8gsIQAK2V3HhYfJ\nrG6rjnzMONd+0Q6Z0KBqgoMfCTjWE9CBnm78DL16u9pRH3CwhpKabg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSTHh4eExqN1lmUWhOd0tF\ndzVUYXpWblVlem5QcndUQVRRSnZsS0dNK3lVCnpJQUVyRDRiNTFyb3RnSFZnQW9D\nV2sxRlZDcE1yQjI5Yzk3Tmh2ZkdxZ00KLS0tIGlKYUVnZXZtYTJPNEhEVEVhVlI4\na1hGbjJ3VDE0WDZKd0FGYUZzZUp5SEkKp043TYYglP+SWD7IdK/rnSJ4jfqvpGSY\njIDWMZmFTIcPoeVSQrxi7PD9Cd4Q56lhPhCYZR4czk5EdeIEWS9Z6w==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-05-22T18:30:26Z", "lastmodified": "2025-05-21T22:54:54Z",
"mac": "ENC[AES256_GCM,data:/aZOXw2xgQ8UZG5TIWXwHZjlofa08WM2XpPhXUbf2qrx0yyhEyZrtibalCIDdUGgzaZjt8b+qrZqgNE9o+HCUNVX9fU9yCXRL1kpksz9e6HV4S+KIrdHnEFtuRt7r8nP29BotLYoP9KKbA57lL5SYJgPINHq11CAiQLU6A8W8YI=,iv:0zvQe2wRd/qKjrqinc9kgP8RSl47xxD0LofREiK8XOc=,tag:eWhtD/X3CPHTlEZPgp0cjA==,type:str]", "mac": "ENC[AES256_GCM,data:vYmgUvgyQ1i+gih/6YMWX1vqkWzcAn8zgNspICF6KxTYE08i61LGJSaM2R5rh2r/xWY9zKYv8EKH2GSVyJ+hGgSsS0qY8BOKetKMHZEWuWtWSbjO/iKPlmqZXxmPPiPlYUXjlfXB1rzi7RXwDzwVpD1nQTuiK8t2rYJjGgH0kRM=,iv:EEepXDQ/1zy1sO8eXl5LXTHI5OUPFca6WwuYTkHuyEs=,tag:MHA262l7qa8Ngy0tuggPpw==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.10.2" "version": "3.10.2"
} }

View file

@ -40,16 +40,6 @@ in {
copilot = false; copilot = false;
}; };
formatter = {
external = {
command = "alejandra";
arguments = ["--quiet"];
language = ["nix"];
};
};
format_on_save = "on";
### Language specific configurations ### Language specific configurations
languages = { languages = {
### Nix language ### Nix language
@ -57,6 +47,17 @@ in {
language_servers = ["nixd" "!nil"]; language_servers = ["nixd" "!nil"];
}; };
}; };
### LSP configurations
lsp = {
nixd = {
initialization_options = {
formatting = {
command = ["alejandra" "--quiet" "--"];
};
};
};
};
}; };
extraPackages = with pkgs; [nixd]; extraPackages = with pkgs; [nixd];

View file

@ -44,7 +44,7 @@ in {
enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur."; enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur.";
}; };
}; };
wallpaper = mkOpt str (builtins.toString ../wallpapers/catppuccin/howard-chen-mao-mao-forest-campsite.jpg) "Specify the path of your prefered Gnome wallpaper."; wallpaper = mkOpt str (builtins.toString ../wallpapers/catppuccin/mountain_tower_sunset.jpg) "Specify the path of your prefered Gnome wallpaper.";
}; };
config = mkIf osConfig.${namespace}.desktop.gnome.enable { config = mkIf osConfig.${namespace}.desktop.gnome.enable {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 KiB

View file

@ -1,7 +1,6 @@
{ {
lib, lib,
self, self,
pkgs,
config, config,
... ...
}: let }: let
@ -34,7 +33,6 @@ in {
nix = { nix = {
enable = true; enable = true;
use-lix = true; use-lix = true;
use-nixld = true;
}; };
}; };
@ -45,10 +43,6 @@ in {
desktop.gnome.enable = true; desktop.gnome.enable = true;
}; };
environment.systemPackages = with pkgs; [
nano
];
time.timeZone = mkDefault "Europe/Berlin"; time.timeZone = mkDefault "Europe/Berlin";
}; };
} }

View file

@ -29,7 +29,6 @@ in {
gnome-console gnome-console
gnome-terminal gnome-terminal
gnome-music gnome-music
totem # Gnome videos
hitori # Sudoku game hitori # Sudoku game
gnome-contacts gnome-contacts
gnome-initial-setup gnome-initial-setup
@ -40,8 +39,7 @@ in {
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
refine gnome-tweaks
showtime
resources resources
]; ];
}; };

View file

@ -14,22 +14,7 @@ in {
enable = mkEnableOption "system font management"; enable = mkEnableOption "system font management";
fonts = mkOption { fonts = mkOption {
type = listOf package; type = listOf package;
default = with pkgs; [ default = with pkgs; [noto-fonts noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-emoji nerd-fonts.bigblue-terminal nerd-fonts.zed-mono monocraft];
corefonts
noto-fonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
inter
nerd-fonts.zed-mono
monocraft
noto-fonts-emoji
material-icons
material-design-icons
];
example = [noto-fonts noto-fonts-emoji]; example = [noto-fonts noto-fonts-emoji];
description = "Install additional font packages"; description = "Install additional font packages";
}; };

View file

@ -22,7 +22,6 @@
initialPassword = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure initial user password, only recommended for testing."; initialPassword = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure initial user password, only recommended for testing.";
password = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure user password, only recommended for testing."; password = self.lib.mkOpt (types.nullOr types.str) null "Plaintext insecure user password, only recommended for testing.";
hashedPasswordFile = self.lib.mkOpt (types.nullOr types.str) null "Secure, hashed user password stored in a separate file, recommended for production."; hashedPasswordFile = self.lib.mkOpt (types.nullOr types.str) null "Secure, hashed user password stored in a separate file, recommended for production.";
hashedPassword = self.lib.mkOpt (types.nullOr types.str) null "Secure, hashed password, stored in plaintext, fine to use.";
extraGroups = self.lib.mkOpt (types.listOf types.str) [] "List of additional groups this user belongs to."; extraGroups = self.lib.mkOpt (types.listOf types.str) [] "List of additional groups this user belongs to.";
}; };
}; };
@ -50,7 +49,7 @@ in {
users.users = lib.mapAttrs (username: userConfig: users.users = lib.mapAttrs (username: userConfig:
mkIf userConfig.enable { mkIf userConfig.enable {
name = username; name = username;
inherit (userConfig) isNormalUser isSystemUser initialPassword hashedPasswordFile hashedPassword password extraGroups; inherit (userConfig) isNormalUser isSystemUser initialPassword hashedPasswordFile password extraGroups;
}) })
cfg; cfg;
@ -69,13 +68,7 @@ in {
mkIf (userConfig.enable && homeConfigExists username) ( mkIf (userConfig.enable && homeConfigExists username) (
{osConfig, ...}: { {osConfig, ...}: {
# Import user home configuration and general home modules # Import user home configuration and general home modules
imports = [ imports = [(getHomeConfigPath username) inputs.sops-nix.homeManagerModules.sops inputs.catppuccin.homeModules.default] ++ homeModules;
(getHomeConfigPath username)
inputs.sops-nix.homeManagerModules.sops
inputs.catppuccin.homeModules.default
inputs.nixcord.homeModules.nixcord
inputs.youtube-music.homeManagerModules.default
] ++ homeModules;
home.stateVersion = lib.mkDefault osConfig.system.stateVersion; home.stateVersion = lib.mkDefault osConfig.system.stateVersion;
} }

View file

@ -1,4 +1,8 @@
{pkgs, ...}: { {
pkgs,
config,
...
}: {
imports = [ imports = [
./hardware.nix ./hardware.nix
]; ];
@ -8,10 +12,15 @@
sops.defaultSopsFile = ./secrets/users.yaml; sops.defaultSopsFile = ./secrets/users.yaml;
sops.age.keyFile = "/var/lib/sops-nix/key.txt"; sops.age.keyFile = "/var/lib/sops-nix/key.txt";
# Todo: automate this import in users module!
# Require user password secrets for users
sops.secrets."users/jo/password_hash".neededForUsers = true;
puzzlevision = { puzzlevision = {
users.jo = { users.jo = {
enable = true; enable = true;
hashedPassword = "$6$mvK9bT756Aok54Vt$vBRnT66Vb3HL0Y5rEMJlHvKkvzVQ.KUciInTmW3FCBFT00IuFMpz3q9RhXPLTLMRPho65bTg9hMnFPb84I774."; #password = "4868320069443";
hashedPasswordFile = config.sops.secrets."users/jo/password_hash".path; # For testing only, replace with sops secret before production use
extraGroups = ["wheel"]; extraGroups = ["wheel"];
}; };

View file

@ -1,7 +1,7 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = imports =